@expo/serve-sim 0.1.36 → 0.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
- import{createRequire as r$}from"node:module";var h$=Object.create;var{getPrototypeOf:u$,defineProperty:w4,getOwnPropertyNames:g$}=Object;var p$=Object.prototype.hasOwnProperty;function c$($){return this[$]}var l$,m$,d$=($,Q,Z)=>{var J=$!=null&&typeof $==="object";if(J){var Y=Q?l$??=new WeakMap:m$??=new WeakMap,X=Y.get($);if(X)return X}Z=$!=null?h$(u$($)):{};let G=Q||!$||!$.__esModule?w4(Z,"default",{value:$,enumerable:!0}):Z;for(let H of g$($))if(!p$.call(G,H))w4(G,H,{get:c$.bind($,H),enumerable:!0});if(J)Y.set($,G);return G};var p0=($,Q)=>()=>(Q||$((Q={exports:{}}).exports,Q),Q.exports);var i$=($)=>$;function n$($,Q){this[$]=i$.bind(null,Q)}var o$=($,Q)=>{for(var Z in Q)w4($,Z,{get:Q[Z],enumerable:!0,configurable:!0,set:n$.bind(Q,Z)})};var a$=($,Q)=>()=>($&&(Q=$($=0)),Q);var Y4=r$(import.meta.url);var p9=p0((GJ,g9)=>{var w0=1000,S0=w0*60,y0=S0*60,_0=y0*24,DQ=_0*7,PQ=_0*365.25;g9.exports=function($,Q){Q=Q||{};var Z=typeof $;if(Z==="string"&&$.length>0)return TQ($);else if(Z==="number"&&isFinite($))return Q.long?IQ($):EQ($);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify($))};function TQ($){if($=String($),$.length>100)return;var Q=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec($);if(!Q)return;var Z=parseFloat(Q[1]),J=(Q[2]||"ms").toLowerCase();switch(J){case"years":case"year":case"yrs":case"yr":case"y":return Z*PQ;case"weeks":case"week":case"w":return Z*DQ;case"days":case"day":case"d":return Z*_0;case"hours":case"hour":case"hrs":case"hr":case"h":return Z*y0;case"minutes":case"minute":case"mins":case"min":case"m":return Z*S0;case"seconds":case"second":case"secs":case"sec":case"s":return Z*w0;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return Z;default:return}}function EQ($){var Q=Math.abs($);if(Q>=_0)return Math.round($/_0)+"d";if(Q>=y0)return Math.round($/y0)+"h";if(Q>=S0)return Math.round($/S0)+"m";if(Q>=w0)return Math.round($/w0)+"s";return $+"ms"}function IQ($){var Q=Math.abs($);if(Q>=_0)return H4($,Q,_0,"day");if(Q>=y0)return H4($,Q,y0,"hour");if(Q>=S0)return H4($,Q,S0,"minute");if(Q>=w0)return H4($,Q,w0,"second");return $+" ms"}function H4($,Q,Z,J){var Y=Q>=Z*1.5;return Math.round($/Z)+" "+J+(Y?"s":"")}});var Q8=p0((KJ,c9)=>{function xQ($){Z.debug=Z,Z.default=Z,Z.coerce=V,Z.disable=G,Z.enable=Y,Z.enabled=H,Z.humanize=p9(),Z.destroy=W,Object.keys($).forEach((z)=>{Z[z]=$[z]}),Z.names=[],Z.skips=[],Z.formatters={};function Q(z){let B=0;for(let M=0;M<z.length;M++)B=(B<<5)-B+z.charCodeAt(M),B|=0;return Z.colors[Math.abs(B)%Z.colors.length]}Z.selectColor=Q;function Z(z){let B,M=null,N,j;function R(...x){if(!R.enabled)return;let A=R,D=Number(new Date),U=D-(B||D);if(A.diff=U,A.prev=B,A.curr=D,B=D,x[0]=Z.coerce(x[0]),typeof x[0]!=="string")x.unshift("%O");let C=0;x[0]=x[0].replace(/%([a-zA-Z%])/g,(F,K)=>{if(F==="%%")return"%";C++;let _=Z.formatters[K];if(typeof _==="function"){let L=x[C];F=_.call(A,L),x.splice(C,1),C--}return F}),Z.formatArgs.call(A,x),(A.log||Z.log).apply(A,x)}if(R.namespace=z,R.useColors=Z.useColors(),R.color=Z.selectColor(z),R.extend=J,R.destroy=Z.destroy,Object.defineProperty(R,"enabled",{enumerable:!0,configurable:!1,get:()=>{if(M!==null)return M;if(N!==Z.namespaces)N=Z.namespaces,j=Z.enabled(z);return j},set:(x)=>{M=x}}),typeof Z.init==="function")Z.init(R);return R}function J(z,B){let M=Z(this.namespace+(typeof B>"u"?":":B)+z);return M.log=this.log,M}function Y(z){Z.save(z),Z.namespaces=z,Z.names=[],Z.skips=[];let B=(typeof z==="string"?z:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let M of B)if(M[0]==="-")Z.skips.push(M.slice(1));else Z.names.push(M)}function X(z,B){let M=0,N=0,j=-1,R=0;while(M<z.length)if(N<B.length&&(B[N]===z[M]||B[N]==="*"))if(B[N]==="*")j=N,R=M,N++;else M++,N++;else if(j!==-1)N=j+1,R++,M=R;else return!1;while(N<B.length&&B[N]==="*")N++;return N===B.length}function G(){let z=[...Z.names,...Z.skips.map((B)=>"-"+B)].join(",");return Z.enable(""),z}function H(z){for(let B of Z.skips)if(X(z,B))return!1;for(let B of Z.names)if(X(z,B))return!0;return!1}function V(z){if(z instanceof Error)return z.stack||z.message;return z}function W(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return Z.enable(Z.load()),Z}c9.exports=xQ});var m9=p0((l9,M4)=>{l9.formatArgs=wQ;l9.save=SQ;l9.load=yQ;l9.useColors=qQ;l9.storage=kQ();l9.destroy=(()=>{let $=!1;return()=>{if(!$)$=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}})();l9.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function qQ(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let $;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&($=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt($[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function wQ($){if($[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+$[0]+(this.useColors?"%c ":" ")+"+"+M4.exports.humanize(this.diff),!this.useColors)return;let Q="color: "+this.color;$.splice(1,0,Q,"color: inherit");let Z=0,J=0;$[0].replace(/%[a-zA-Z%]/g,(Y)=>{if(Y==="%%")return;if(Z++,Y==="%c")J=Z}),$.splice(J,0,Q)}l9.log=console.debug||console.log||(()=>{});function SQ($){try{if($)l9.storage.setItem("debug",$);else l9.storage.removeItem("debug")}catch(Q){}}function yQ(){let $;try{$=l9.storage.getItem("debug")||l9.storage.getItem("DEBUG")}catch(Q){}if(!$&&typeof process<"u"&&"env"in process)$=process.env.DEBUG;return $}function kQ(){try{return localStorage}catch($){}}M4.exports=Q8()(l9);var{formatters:fQ}=M4.exports;fQ.j=function($){try{return JSON.stringify($)}catch(Q){return"[UnexpectedJSONParseError]: "+Q.message}}});var o9=p0((i9,N4)=>{var lQ=Y4("tty"),F4=Y4("util");i9.init=rQ;i9.log=nQ;i9.formatArgs=dQ;i9.save=oQ;i9.load=aQ;i9.useColors=mQ;i9.destroy=F4.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");i9.colors=[6,2,3,4,5,1];try{let $=(()=>{throw new Error("Cannot require module "+"supports-color");})();if($&&($.stderr||$).level>=2)i9.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}catch($){}i9.inspectOpts=Object.keys(process.env).filter(($)=>{return/^debug_/i.test($)}).reduce(($,Q)=>{let Z=Q.substring(6).toLowerCase().replace(/_([a-z])/g,(Y,X)=>{return X.toUpperCase()}),J=process.env[Q];if(/^(yes|on|true|enabled)$/i.test(J))J=!0;else if(/^(no|off|false|disabled)$/i.test(J))J=!1;else if(J==="null")J=null;else J=Number(J);return $[Z]=J,$},{});function mQ(){return"colors"in i9.inspectOpts?Boolean(i9.inspectOpts.colors):lQ.isatty(process.stderr.fd)}function dQ($){let{namespace:Q,useColors:Z}=this;if(Z){let J=this.color,Y="\x1B[3"+(J<8?J:"8;5;"+J),X=` ${Y};1m${Q} \x1B[0m`;$[0]=X+$[0].split(`
1
+ import{createRequire as r$}from"node:module";var h$=Object.create;var{getPrototypeOf:u$,defineProperty:S4,getOwnPropertyNames:g$}=Object;var p$=Object.prototype.hasOwnProperty;function c$($){return this[$]}var l$,m$,d$=($,Q,Z)=>{var J=$!=null&&typeof $==="object";if(J){var Y=Q?l$??=new WeakMap:m$??=new WeakMap,X=Y.get($);if(X)return X}Z=$!=null?h$(u$($)):{};let G=Q||!$||!$.__esModule?S4(Z,"default",{value:$,enumerable:!0}):Z;for(let H of g$($))if(!p$.call(G,H))S4(G,H,{get:c$.bind($,H),enumerable:!0});if(J)Y.set($,G);return G};var p0=($,Q)=>()=>(Q||$((Q={exports:{}}).exports,Q),Q.exports);var i$=($)=>$;function n$($,Q){this[$]=i$.bind(null,Q)}var o$=($,Q)=>{for(var Z in Q)S4($,Z,{get:Q[Z],enumerable:!0,configurable:!0,set:n$.bind(Q,Z)})};var a$=($,Q)=>()=>($&&(Q=$($=0)),Q);var Y4=r$(import.meta.url);var p9=p0((GJ,g9)=>{var w0=1000,S0=w0*60,y0=S0*60,_0=y0*24,DQ=_0*7,PQ=_0*365.25;g9.exports=function($,Q){Q=Q||{};var Z=typeof $;if(Z==="string"&&$.length>0)return TQ($);else if(Z==="number"&&isFinite($))return Q.long?IQ($):EQ($);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify($))};function TQ($){if($=String($),$.length>100)return;var Q=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec($);if(!Q)return;var Z=parseFloat(Q[1]),J=(Q[2]||"ms").toLowerCase();switch(J){case"years":case"year":case"yrs":case"yr":case"y":return Z*PQ;case"weeks":case"week":case"w":return Z*DQ;case"days":case"day":case"d":return Z*_0;case"hours":case"hour":case"hrs":case"hr":case"h":return Z*y0;case"minutes":case"minute":case"mins":case"min":case"m":return Z*S0;case"seconds":case"second":case"secs":case"sec":case"s":return Z*w0;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return Z;default:return}}function EQ($){var Q=Math.abs($);if(Q>=_0)return Math.round($/_0)+"d";if(Q>=y0)return Math.round($/y0)+"h";if(Q>=S0)return Math.round($/S0)+"m";if(Q>=w0)return Math.round($/w0)+"s";return $+"ms"}function IQ($){var Q=Math.abs($);if(Q>=_0)return M4($,Q,_0,"day");if(Q>=y0)return M4($,Q,y0,"hour");if(Q>=S0)return M4($,Q,S0,"minute");if(Q>=w0)return M4($,Q,w0,"second");return $+" ms"}function M4($,Q,Z,J){var Y=Q>=Z*1.5;return Math.round($/Z)+" "+J+(Y?"s":"")}});var Q8=p0((KJ,c9)=>{function xQ($){Z.debug=Z,Z.default=Z,Z.coerce=V,Z.disable=G,Z.enable=Y,Z.enabled=H,Z.humanize=p9(),Z.destroy=W,Object.keys($).forEach((z)=>{Z[z]=$[z]}),Z.names=[],Z.skips=[],Z.formatters={};function Q(z){let B=0;for(let M=0;M<z.length;M++)B=(B<<5)-B+z.charCodeAt(M),B|=0;return Z.colors[Math.abs(B)%Z.colors.length]}Z.selectColor=Q;function Z(z){let B,M=null,N,j;function R(...x){if(!R.enabled)return;let A=R,D=Number(new Date),U=D-(B||D);if(A.diff=U,A.prev=B,A.curr=D,B=D,x[0]=Z.coerce(x[0]),typeof x[0]!=="string")x.unshift("%O");let C=0;x[0]=x[0].replace(/%([a-zA-Z%])/g,(F,K)=>{if(F==="%%")return"%";C++;let _=Z.formatters[K];if(typeof _==="function"){let L=x[C];F=_.call(A,L),x.splice(C,1),C--}return F}),Z.formatArgs.call(A,x),(A.log||Z.log).apply(A,x)}if(R.namespace=z,R.useColors=Z.useColors(),R.color=Z.selectColor(z),R.extend=J,R.destroy=Z.destroy,Object.defineProperty(R,"enabled",{enumerable:!0,configurable:!1,get:()=>{if(M!==null)return M;if(N!==Z.namespaces)N=Z.namespaces,j=Z.enabled(z);return j},set:(x)=>{M=x}}),typeof Z.init==="function")Z.init(R);return R}function J(z,B){let M=Z(this.namespace+(typeof B>"u"?":":B)+z);return M.log=this.log,M}function Y(z){Z.save(z),Z.namespaces=z,Z.names=[],Z.skips=[];let B=(typeof z==="string"?z:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let M of B)if(M[0]==="-")Z.skips.push(M.slice(1));else Z.names.push(M)}function X(z,B){let M=0,N=0,j=-1,R=0;while(M<z.length)if(N<B.length&&(B[N]===z[M]||B[N]==="*"))if(B[N]==="*")j=N,R=M,N++;else M++,N++;else if(j!==-1)N=j+1,R++,M=R;else return!1;while(N<B.length&&B[N]==="*")N++;return N===B.length}function G(){let z=[...Z.names,...Z.skips.map((B)=>"-"+B)].join(",");return Z.enable(""),z}function H(z){for(let B of Z.skips)if(X(z,B))return!1;for(let B of Z.names)if(X(z,B))return!0;return!1}function V(z){if(z instanceof Error)return z.stack||z.message;return z}function W(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return Z.enable(Z.load()),Z}c9.exports=xQ});var m9=p0((l9,F4)=>{l9.formatArgs=wQ;l9.save=SQ;l9.load=yQ;l9.useColors=qQ;l9.storage=kQ();l9.destroy=(()=>{let $=!1;return()=>{if(!$)$=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}})();l9.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function qQ(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let $;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&($=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt($[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function wQ($){if($[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+$[0]+(this.useColors?"%c ":" ")+"+"+F4.exports.humanize(this.diff),!this.useColors)return;let Q="color: "+this.color;$.splice(1,0,Q,"color: inherit");let Z=0,J=0;$[0].replace(/%[a-zA-Z%]/g,(Y)=>{if(Y==="%%")return;if(Z++,Y==="%c")J=Z}),$.splice(J,0,Q)}l9.log=console.debug||console.log||(()=>{});function SQ($){try{if($)l9.storage.setItem("debug",$);else l9.storage.removeItem("debug")}catch(Q){}}function yQ(){let $;try{$=l9.storage.getItem("debug")||l9.storage.getItem("DEBUG")}catch(Q){}if(!$&&typeof process<"u"&&"env"in process)$=process.env.DEBUG;return $}function kQ(){try{return localStorage}catch($){}}F4.exports=Q8()(l9);var{formatters:fQ}=F4.exports;fQ.j=function($){try{return JSON.stringify($)}catch(Q){return"[UnexpectedJSONParseError]: "+Q.message}}});var o9=p0((i9,_4)=>{var lQ=Y4("tty"),N4=Y4("util");i9.init=rQ;i9.log=nQ;i9.formatArgs=dQ;i9.save=oQ;i9.load=aQ;i9.useColors=mQ;i9.destroy=N4.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");i9.colors=[6,2,3,4,5,1];try{let $=(()=>{throw new Error("Cannot require module "+"supports-color");})();if($&&($.stderr||$).level>=2)i9.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}catch($){}i9.inspectOpts=Object.keys(process.env).filter(($)=>{return/^debug_/i.test($)}).reduce(($,Q)=>{let Z=Q.substring(6).toLowerCase().replace(/_([a-z])/g,(Y,X)=>{return X.toUpperCase()}),J=process.env[Q];if(/^(yes|on|true|enabled)$/i.test(J))J=!0;else if(/^(no|off|false|disabled)$/i.test(J))J=!1;else if(J==="null")J=null;else J=Number(J);return $[Z]=J,$},{});function mQ(){return"colors"in i9.inspectOpts?Boolean(i9.inspectOpts.colors):lQ.isatty(process.stderr.fd)}function dQ($){let{namespace:Q,useColors:Z}=this;if(Z){let J=this.color,Y="\x1B[3"+(J<8?J:"8;5;"+J),X=` ${Y};1m${Q} \x1B[0m`;$[0]=X+$[0].split(`
2
2
  `).join(`
3
- `+X),$.push(Y+"m+"+N4.exports.humanize(this.diff)+"\x1B[0m")}else $[0]=iQ()+Q+" "+$[0]}function iQ(){if(i9.inspectOpts.hideDate)return"";return new Date().toISOString()+" "}function nQ(...$){return process.stderr.write(F4.formatWithOptions(i9.inspectOpts,...$)+`
4
- `)}function oQ($){if($)process.env.DEBUG=$;else delete process.env.DEBUG}function aQ(){return process.env.DEBUG}function rQ($){$.inspectOpts={};let Q=Object.keys(i9.inspectOpts);for(let Z=0;Z<Q.length;Z++)$.inspectOpts[Q[Z]]=i9.inspectOpts[Q[Z]]}N4.exports=Q8()(i9);var{formatters:d9}=N4.exports;d9.o=function($){return this.inspectOpts.colors=this.useColors,F4.inspect($,this.inspectOpts).split(`
5
- `).map((Q)=>Q.trim()).join(" ")};d9.O=function($){return this.inspectOpts.colors=this.useColors,F4.inspect($,this.inspectOpts)}});var a9=p0((zJ,Z8)=>{if(typeof process>"u"||process.type==="renderer"||!1||process.__nwjs)Z8.exports=m9();else Z8.exports=o9()});var W$={};o$(W$,{startCdpServer:()=>L2,startBunCdpServer:()=>C2,listTargets:()=>D2,listDevices:()=>K$});import{createRequire as a7}from"node:module";import*as m6 from"node:net";import*as o6 from"node:net";import{spawnSync as UZ}from"node:child_process";import*as t6 from"node:tls";import*as Q$ from"node:http";function $Z($){return this[$]}function f6($){return $.replace(/[&<>'"]/g,(Q)=>Q==="&"?"&amp;":Q==="<"?"&lt;":Q===">"?"&gt;":Q==="'"?"&apos;":"&quot;")}function WZ($){let Q="";for(let Z=0;Z<$.length;Z++)Q+=String.fromCharCode($[Z]);return btoa(Q)}function zZ($){let Q=atob($.replace(/\s+/g,"")),Z=new Uint8Array(Q.length);for(let J=0;J<Q.length;J++)Z[J]=Q.charCodeAt(J);return Z}function D8($,Q){if($===null||$===void 0)return`${Q}<string></string>`;if(typeof $==="boolean")return`${Q}<${$?"true":"false"}/>`;if(typeof $==="string")return`${Q}<string>${f6($)}</string>`;if(typeof $==="number"){if(Number.isInteger($))return`${Q}<integer>${$}</integer>`;return`${Q}<real>${$}</real>`}if(typeof $==="bigint")return`${Q}<integer>${$.toString()}</integer>`;if($ instanceof Uint8Array)return`${Q}<data>${WZ($)}</data>`;if($ instanceof Date)return`${Q}<date>${$.toISOString().replace(/\.\d+Z$/,"Z")}</date>`;if(Array.isArray($)){if($.length===0)return`${Q}<array/>`;let Y=$.map((X)=>D8(X,Q+"\t")).join(`
3
+ `+X),$.push(Y+"m+"+_4.exports.humanize(this.diff)+"\x1B[0m")}else $[0]=iQ()+Q+" "+$[0]}function iQ(){if(i9.inspectOpts.hideDate)return"";return new Date().toISOString()+" "}function nQ(...$){return process.stderr.write(N4.formatWithOptions(i9.inspectOpts,...$)+`
4
+ `)}function oQ($){if($)process.env.DEBUG=$;else delete process.env.DEBUG}function aQ(){return process.env.DEBUG}function rQ($){$.inspectOpts={};let Q=Object.keys(i9.inspectOpts);for(let Z=0;Z<Q.length;Z++)$.inspectOpts[Q[Z]]=i9.inspectOpts[Q[Z]]}_4.exports=Q8()(i9);var{formatters:d9}=_4.exports;d9.o=function($){return this.inspectOpts.colors=this.useColors,N4.inspect($,this.inspectOpts).split(`
5
+ `).map((Q)=>Q.trim()).join(" ")};d9.O=function($){return this.inspectOpts.colors=this.useColors,N4.inspect($,this.inspectOpts)}});var a9=p0((zJ,Z8)=>{if(typeof process>"u"||process.type==="renderer"||!1||process.__nwjs)Z8.exports=m9();else Z8.exports=o9()});var W$={};o$(W$,{startCdpServer:()=>L2,startBunCdpServer:()=>C2,listTargets:()=>D2,listDevices:()=>K$});import{createRequire as a7}from"node:module";import*as m6 from"node:net";import*as o6 from"node:net";import{spawnSync as UZ}from"node:child_process";import*as t6 from"node:tls";import*as Q$ from"node:http";function $Z($){return this[$]}function f6($){return $.replace(/[&<>'"]/g,(Q)=>Q==="&"?"&amp;":Q==="<"?"&lt;":Q===">"?"&gt;":Q==="'"?"&apos;":"&quot;")}function WZ($){let Q="";for(let Z=0;Z<$.length;Z++)Q+=String.fromCharCode($[Z]);return btoa(Q)}function zZ($){let Q=atob($.replace(/\s+/g,"")),Z=new Uint8Array(Q.length);for(let J=0;J<Q.length;J++)Z[J]=Q.charCodeAt(J);return Z}function D8($,Q){if($===null||$===void 0)return`${Q}<string></string>`;if(typeof $==="boolean")return`${Q}<${$?"true":"false"}/>`;if(typeof $==="string")return`${Q}<string>${f6($)}</string>`;if(typeof $==="number"){if(Number.isInteger($))return`${Q}<integer>${$}</integer>`;return`${Q}<real>${$}</real>`}if(typeof $==="bigint")return`${Q}<integer>${$.toString()}</integer>`;if($ instanceof Uint8Array)return`${Q}<data>${WZ($)}</data>`;if($ instanceof Date)return`${Q}<date>${$.toISOString().replace(/\.\d+Z$/,"Z")}</date>`;if(Array.isArray($)){if($.length===0)return`${Q}<array/>`;let Y=$.map((X)=>D8(X,Q+"\t")).join(`
6
6
  `);return`${Q}<array>
7
7
  ${Y}
8
8
  ${Q}</array>`}let Z=Object.keys($);if(Z.length===0)return`${Q}<dict/>`;let J=Z.map((Y)=>`${Q} <key>${f6(Y)}</key>
@@ -10,8 +10,8 @@ ${Q}</array>`}let Z=Object.keys($);if(Z.length===0)return`${Q}<dict/>`;let J=Z.m
10
10
  `);return`${Q}<dict>
11
11
  ${J}
12
12
  ${Q}</dict>`}function S8($){let Q=D8($,"");return new TextEncoder().encode(KZ+Q+VZ)}class d6{src;pos=0;constructor($){this.src=$}skip(){while(this.pos<this.src.length){let $=this.src[this.pos];if($===" "||$==="\t"||$===`
13
- `||$==="\r")this.pos++;else if(this.src.startsWith("<!--",this.pos)){let Q=this.src.indexOf("-->",this.pos+4);if(Q<0)throw Error("unterminated comment");this.pos=Q+3}else if(this.src.startsWith("<?",this.pos)){let Q=this.src.indexOf("?>",this.pos+2);if(Q<0)throw Error("unterminated processing instruction");this.pos=Q+2}else if(this.src.startsWith("<!DOCTYPE",this.pos)){let Q=0;while(this.pos<this.src.length){let Z=this.src[this.pos++];if(Z==="[")Q++;else if(Z==="]")Q--;else if(Z===">"&&Q===0)break}}else break}}nextTag(){if(this.skip(),this.pos>=this.src.length)return null;if(this.src[this.pos]!=="<")throw Error(`expected '<' at ${this.pos}`);let $=this.src.indexOf(">",this.pos);if($<0)throw Error("unterminated tag");let Q=this.src.slice(this.pos+1,$);this.pos=$+1;let Z=Q.startsWith("/"),J=Q.endsWith("/");return{name:Q.replace(/^\/?/,"").replace(/\/$/,"").trim().split(/\s+/)[0],selfClose:J,isClose:Z}}readText(){let $=this.src.indexOf("<",this.pos),Q=$<0?this.src.slice(this.pos):this.src.slice(this.pos,$);return this.pos=$<0?this.src.length:$,Q.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&")}}function P8($,Q){let Z=(J)=>{let Y=$.nextTag();if(!Y||!Y.isClose||Y.name!==J)throw Error(`expected </${J}>`)};switch(Q){case"true":case"false":throw Error(`<${Q}> must be self-closing`);case"string":case"key":{let J=$.readText();return Z(Q),J}case"integer":{let J=$.readText().trim();if(Z("integer"),/^-?\d+$/.test(J)&&Math.abs(Number(J))<=Number.MAX_SAFE_INTEGER)return Number(J);return BigInt(J)}case"real":{let J=Number($.readText().trim());return Z("real"),J}case"data":{let J=zZ($.readText());return Z("data"),J}case"date":{let J=new Date($.readText().trim());return Z("date"),J}case"array":{let J=[];while(!0){let Y=$.nextTag();if(!Y)throw Error("unterminated <array>");if(Y.isClose&&Y.name==="array")return J;J.push(Y.selfClose?T8(Y.name):P8($,Y.name))}}case"dict":{let J={};while(!0){let Y=$.nextTag();if(!Y)throw Error("unterminated <dict>");if(Y.isClose&&Y.name==="dict")return J;if(Y.name!=="key")throw Error(`expected <key>, got <${Y.name}>`);let X=$.readText();Z("key");let G=$.nextTag();if(!G)throw Error("unterminated <dict>");J[X]=G.selfClose?T8(G.name):P8($,G.name)}}default:throw Error(`unknown plist tag <${Q}>`)}}function T8($){if($==="true")return!0;if($==="false")return!1;if($==="string")return"";if($==="data")return new Uint8Array(0);if($==="array")return[];if($==="dict")return{};throw Error(`self-closing <${$}/> not supported`)}function R4($){let Q=typeof $==="string"?$:new TextDecoder().decode($),Z=new d6(Q);while(!0){let Y=Z.nextTag();if(!Y)throw Error("no <plist> root");if(Y.name==="plist"&&!Y.isClose)break}let J=Z.nextTag();if(!J)throw Error("empty plist");return J.selfClose?T8(J.name):P8(Z,J.name)}function U0($,Q,Z){let J=0;for(let Y=0;Y<Z;Y++)J=J*256+$[Q+Y];return J}function HZ($){if($.length<41)throw Error("bplist too short");let Q=new TextDecoder().decode($.slice(0,8));if(Q!=="bplist00")throw Error(`bad magic: ${Q}`);let Z=$.length-32,J=$[Z+6],Y=$[Z+7],X=U0($,Z+8,8),G=U0($,Z+16,8),H=U0($,Z+24,8),V=Array(X);for(let B=0;B<X;B++)V[B]=U0($,H+B*J,J);function W(B){return U0($,B,Y)}function z(B){let M=V[B],N=$[M],j=N>>4,R=N&15;function x(A){if(R!==15)return{len:R,next:A};let D=$[A];if((D&240)!==16)throw Error("expected int marker for length");let U=1<<(D&15);return{len:U0($,A+1,U),next:A+1+U}}switch(j){case 0:if(R===0)return null;if(R===8)return!1;if(R===9)return!0;if(R===15)return null;throw Error(`unknown singleton ${R}`);case 1:{let A=1<<R,D=U0($,M+1,A);if(A===8&&D>Number.MAX_SAFE_INTEGER)return BigInt(D);return D}case 2:{let A=1<<R,D=new DataView($.buffer,$.byteOffset+M+1,A);return A===4?D.getFloat32(0,!1):D.getFloat64(0,!1)}case 3:{let D=new DataView($.buffer,$.byteOffset+M+1,8).getFloat64(0,!1);return new Date(Date.UTC(2001,0,1)+D*1000)}case 4:{let{len:A,next:D}=x(M+1);return $.slice(D,D+A)}case 5:{let{len:A,next:D}=x(M+1);return new TextDecoder("ascii").decode($.slice(D,D+A))}case 6:{let{len:A,next:D}=x(M+1),U=$.slice(D,D+A*2),C=new Uint8Array(U.length);for(let E=0;E<U.length;E+=2)C[E]=U[E+1],C[E+1]=U[E];return new TextDecoder("utf-16le").decode(C)}case 10:{let{len:A,next:D}=x(M+1),U=[];for(let C=0;C<A;C++)U.push(z(W(D+C*Y)));return U}case 13:{let{len:A,next:D}=x(M+1),U={};for(let C=0;C<A;C++){let E=z(W(D+C*Y)),F=z(W(D+(A+C)*Y));if(typeof E!=="string")throw Error(`non-string dict key: ${typeof E}`);U[E]=F}return U}default:throw Error(`unknown bplist marker 0x${N.toString(16)} at ${M}`)}}return z(G)}function MZ($){if($.length>=8){if(new TextDecoder().decode($.slice(0,8))==="bplist00")return HZ($)}return R4($)}class C4{chunks=[];size=0;waiters=[];closed=!1;closeErr=null;push($){if($.length===0)return;this.chunks.push($),this.size+=$.length,this.drain()}close($){this.closed=!0,this.closeErr=$??null;for(let Q of this.waiters)Q.reject($??Error("stream closed"));this.waiters=[]}read($){return new Promise((Q,Z)=>{if(this.closed&&this.size<$){Z(this.closeErr??Error("stream closed"));return}this.waiters.push({n:$,resolve:Q,reject:Z}),this.drain()})}drain(){while(this.waiters.length>0&&this.waiters[0].n<=this.size){let $=this.waiters.shift(),Q=new Uint8Array($.n),Z=0;while(Z<$.n){let J=this.chunks[0],Y=$.n-Z;if(J.length<=Y)Q.set(J,Z),Z+=J.length,this.chunks.shift();else Q.set(J.subarray(0,Y),Z),this.chunks[0]=J.subarray(Y),Z+=Y}this.size-=$.n,$.resolve(Q)}}}function y8($,Q){let Z=(X)=>{Q.push(new Uint8Array(X.buffer,X.byteOffset,X.byteLength))},J=()=>Q.close(),Y=(X)=>Q.close(X);return $.on("data",Z),$.on("close",J),$.on("error",Y),()=>{$.off("data",Z),$.off("close",J),$.off("error",Y)}}async function k8(){let $=new C4;return new Promise((Q,Z)=>{let J=m6.createConnection({path:_Z}),Y=(X)=>{$.close(X),Z(X)};J.once("error",Y),J.once("connect",()=>{J.off("error",Y);let X=y8(J,$);Q({socket:J,stream:$,detach:X})})})}async function BZ($){let Q=await $.read(4),Z=new DataView(Q.buffer,Q.byteOffset,4).getUint32(0,!0);return(await $.read(Z-4)).slice(12)}function LZ($,Q,Z){let J=16+Z.length,Y=new Uint8Array(16),X=new DataView(Y.buffer);X.setUint32(0,J,!0),X.setUint32(4,FZ,!0),X.setUint32(8,NZ,!0),X.setUint32(12,Q,!0),$.write(Y),$.write(Z)}async function f8($,Q,Z,J){let Y=S8({ClientVersionString:"inspect-webkit-1.0",ProgName:"inspect-webkit",kLibUSBMuxVersion:3,...J});LZ($,Z,Y);let X=await BZ(Q);return R4(X)}async function i6(){let{socket:$,stream:Q}=await k8();try{return(await f8($,Q,1,{MessageType:"ListDevices"})).DeviceList??[]}finally{$.end()}}async function n6($){let{socket:Q,stream:Z}=await k8();try{let Y=(await f8(Q,Z,1,{MessageType:"ReadPairRecord",PairRecordID:$})).PairRecordData;if(!Y)throw Error(`no pair record for ${$} — pair the device first (open Finder/iTunes, tap "Trust")`);return R4(Y)}finally{Q.end()}}async function v6($,Q){let{socket:Z,stream:J,detach:Y}=await k8(),X=(Q&255)<<8|Q>>8&255,G=await f8(Z,J,1,{MessageType:"Connect",DeviceID:$,PortNumber:X});if(G.MessageType!=="Result"||G.Number!==0){Z.end();let H=G.Number??"?";throw Error(`Connect to device ${$} port ${Q} failed (code ${H})`)}return{socket:Z,stream:J,detach:Y}}async function a6(){let $=UZ("lsof",["-U"],{stdio:["ignore","pipe","ignore"]});if($.status!==0||!$.stdout)return[];let Q=$.stdout.toString("utf8"),Z=new Map;for(let J of Q.split(`
14
- `)){if(!/com\.apple\.webinspectord_sim\.socket\b/.test(J))continue;let Y=J.split(/\s+/),X=Number(Y[1]),G=Y[Y.length-1];if(G)Z.set(G,X)}return Array.from(Z,([J,Y])=>({socketPath:J,pid:Y}))}async function r6($){let Q=new C4;return new Promise((Z,J)=>{let Y=o6.createConnection({path:$}),X=(G)=>{Q.close(G),J(G)};Y.once("error",X),Y.once("connect",()=>{Y.off("error",X),y8(Y,Q),Z({socket:Y,stream:Q})})})}async function O8($){let Q=await $.read(4),Z=new DataView(Q.buffer,Q.byteOffset,4).getUint32(0,!1),J=await $.read(Z);return R4(J)}function A8($,Q){let Z=S8({Label:"inspect-webkit",...Q}),J=new Uint8Array(4);new DataView(J.buffer).setUint32(0,Z.length,!1),$.write(J),$.write(Z)}function j8($,Q){if($.Error)throw Error(`lockdown ${Q} error: ${String($.Error)}`);if($.Request!==Q)throw Error(`lockdown expected Request=${Q}, got ${String($.Request)}`)}function h6($,Q,Z,J){return new Promise((Y,X)=>{Q();let G=new C4,H=t6.connect({socket:$,cert:Buffer.from(Z.HostCertificate),key:Buffer.from(Z.HostPrivateKey),ca:Buffer.from(Z.RootCertificate),rejectUnauthorized:!1}),V=(W)=>{Q0(`${J} tls error:`,W),G.close(W),X(W)};H.once("error",V),H.once("secureConnect",()=>{Q0(`${J} tls handshake complete`),H.off("error",V);let W=y8(H,G);Y({socket:H,stream:G,detach:W})})})}class D4{socket;stream;pair;udid;deviceID;detach;constructor($,Q,Z,J,Y,X){this.socket=$,this.stream=Q,this.pair=Z,this.udid=J,this.deviceID=Y,this.detach=X}static async open($,Q){Q0("connecting usbmux tunnel to lockdown port",b6);let{socket:Z,stream:J,detach:Y}=await v6($.DeviceID,b6),X=new D4(Z,J,Q,$.Properties.SerialNumber,$.DeviceID,Y);Q0("sending QueryType"),A8(Z,{Request:"QueryType"});let G=await O8(J);if(Q0("QueryType reply:",G),j8(G,"QueryType"),G.Type!=="com.apple.mobile.lockdown")throw Error(`unexpected lockdown Type: ${String(G.Type)}`);return X}async startSession(){Q0("StartSession with HostID",this.pair.HostID),A8(this.socket,{Request:"StartSession",HostID:this.pair.HostID,SystemBUID:this.pair.SystemBUID});let $=await O8(this.stream);if(Q0("StartSession reply:",$),j8($,"StartSession"),$.EnableSessionSSL){Q0("upgrading to TLS");let Q=await h6(this.socket,this.detach,this.pair,"lockdown");this.socket=Q.socket,this.stream=Q.stream,this.detach=Q.detach,Q0("TLS upgrade complete")}}async startService($){Q0("StartService",$),A8(this.socket,{Request:"StartService",Service:$});let Q=await O8(this.stream);return Q0("StartService reply:",Q),j8(Q,"StartService"),{port:Q.Port,enableServiceSSL:Boolean(Q.EnableServiceSSL),service:$}}async connectService($){Q0("connecting service tunnel to port",$.port,"ssl=",$.enableServiceSSL);let{socket:Q,stream:Z,detach:J}=await v6(this.deviceID,$.port);if(!$.enableServiceSSL)return{socket:Q,stream:Z};let Y=await h6(Q,J,this.pair,"service");return{socket:Y.socket,stream:Y.stream}}close(){this.socket.end()}}async function OZ($){let Q=await $.read(4),Z=new DataView(Q.buffer,Q.byteOffset,4).getUint32(0,!1),J=await $.read(Z);return MZ(J)}function AZ($,Q){let Z=S8(Q),J=new Uint8Array(4);new DataView(J.buffer).setUint32(0,Z.length,!1),$.write(J),$.write(Z)}function jZ(){let $=crypto.getRandomValues(new Uint8Array(16));$[6]=$[6]&15|64,$[8]=$[8]&63|128;let Q=Array.from($,(Z)=>Z.toString(16).padStart(2,"0")).join("");return`${Q.slice(0,8)}-${Q.slice(8,12)}-${Q.slice(12,16)}-${Q.slice(16,20)}-${Q.slice(20)}`}class s0{socket;stream;connectionId=jZ();subscribers=new Set;reading;constructor($,Q){this.socket=$,this.stream=Q,this.reading=(async()=>{try{while(!Q.closed){let Z=await OZ(Q);for(let J of[...this.subscribers])try{J(Z)}catch{}}}catch{}})()}subscribe($){return this.subscribers.add($),()=>this.subscribers.delete($)}waitFor($,Q=5000){return new Promise((Z,J)=>{let Y=setTimeout(()=>{X(),J(Error(`timeout waiting for ${$} after ${Q}ms`))},Q),X=this.subscribe((G)=>{if(G.__selector===$)clearTimeout(Y),X(),Z(G)})})}send($,Q){AZ(this.socket,{__selector:$,__argument:{WIRConnectionIdentifierKey:this.connectionId,...Q}})}async reportIdentifier(){this.send("_rpc_reportIdentifier:",{})}async listApplications(){this.send("_rpc_getConnectedApplications:",{});let $=await this.waitFor("_rpc_reportConnectedApplicationList:",3000).catch(()=>null);if(!$)return[];let Z=$.__argument.WIRApplicationDictionaryKey??{},J=[];for(let[Y,X]of Object.entries(Z)){let G=X;J.push({appId:Y,bundleId:G.WIRApplicationBundleIdentifierKey,name:G.WIRApplicationNameKey,isProxy:Boolean(G.WIRIsApplicationProxyKey),isActive:Boolean(G.WIRIsApplicationActiveKey),hostAppId:G.WIRHostApplicationIdentifierKey})}return J}async getListing($){this.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:$});let Q=await this.waitFor("_rpc_applicationSentListing:",3000).catch(()=>null);if(!Q)return[];let J=Q.__argument.WIRListingKey??{},Y=[];for(let X of Object.values(J)){let G=X;Y.push({pageId:Number(G.WIRPageIdentifierKey??0),title:G.WIRTitleKey??"",url:G.WIRURLKey??"",type:G.WIRTypeKey??""})}return Y}get connection(){return this.connectionId}forwardSocketSetup($,Q,Z){this.send("_rpc_forwardSocketSetup:",{WIRApplicationIdentifierKey:$,WIRPageIdentifierKey:Q,WIRSenderKey:Z,WIRAutomaticallyPause:!1})}forwardSocketData($,Q,Z,J){this.send("_rpc_forwardSocketData:",{WIRApplicationIdentifierKey:$,WIRPageIdentifierKey:Q,WIRSenderKey:Z,WIRSocketDataKey:J})}forwardDidClose($,Q,Z){this.send("_rpc_forwardDidClose:",{WIRApplicationIdentifierKey:$,WIRPageIdentifierKey:Q,WIRSenderKey:Z})}onMessage($){return this.subscribe($)}close(){this.socket.end()}}class A4{ws;wi;appId;pageId;senderKey;filters=new Map;toolRequestMap=new Map;adapterRequestMap=new Map;requestId=0;innerTargetId=null;wrappedAckIds=new Set;outgoingQueue=[];sawAnyTargetCreated=!1;constructor($,Q,Z,J,Y){this.ws=$,this.wi=Q,this.appId=Z,this.pageId=J,this.senderKey=Y}addMessageFilter($,Q){let Z=this.filters.get($);if(!Z)this.filters.set($,Z=[]);Z.push(Q)}callTarget($,Q={}){return new Promise((Z,J)=>{let Y=--this.requestId;this.adapterRequestMap.set(Y,{resolve:Z,reject:J}),this.sendRaw(JSON.stringify({id:Y,method:$,params:Q}))})}fireEventToTools($,Q){this.sendToTools(JSON.stringify({method:$,params:Q}))}fireResultToTools($,Q){this.sendToTools(JSON.stringify({id:$,result:Q}))}fireErrorToTools($,Q){this.sendToTools(JSON.stringify({id:$,error:{code:Q.code??-32000,message:Q.message}}))}replyEmpty($){if(typeof $.id==="number")this.fireResultToTools($.id,{});return Promise.resolve(null)}async onMessageFromTools($){let Q;try{Q=JSON.parse($)}catch{return}if(typeof Q.method==="string"&&typeof Q.id==="number")this.toolRequestMap.set(Q.id,Q.method);let Z=`tools::${Q.method}`,J=this.filters.get(Z),Y=Q;if(J)for(let X of J){if(!Y)break;Y=await X(Y)}if(Y)this.sendRaw(JSON.stringify(Y))}async onMessageFromTarget($){let Q;try{Q=JSON.parse($)}catch{return}if(Q.method==="Target.targetCreated"){this.sawAnyTargetCreated=!0;let X=Q.params?.targetInfo;if(X?.type==="page"&&!this.innerTargetId)this.innerTargetId=X.targetId,this.flushQueue();return}if(Q.method==="Target.didCommitProvisionalTarget"){let X=Q.params?.newTargetId;if(typeof X==="string")this.innerTargetId=X;return}if(Q.method==="Target.targetDestroyed")return;if(Q.method==="Target.dispatchMessageFromTarget"){let X=Q.params?.message;if(typeof X==="string")return this.onMessageFromTarget(X);return}if(typeof Q.id==="number"&&this.wrappedAckIds.has(Q.id)){this.wrappedAckIds.delete(Q.id);return}if(typeof Q.id==="number"){let X=this.adapterRequestMap.get(Q.id);if(X){if(this.adapterRequestMap.delete(Q.id),"error"in Q&&Q.error)X.reject(Q.error);else X.resolve(Q.result??{});return}let G=this.toolRequestMap.get(Q.id);if(G){this.toolRequestMap.delete(Q.id);let H=`target::${G}`;if("error"in Q&&this.filters.has("target::error"))H="target::error";let V=this.filters.get(H);if(!V)return this.sendToTools($);let W=Q;for(let z of V){if(!W)break;W=await z(W)}if(W)this.sendToTools(JSON.stringify(W));return}return this.sendToTools($)}let Z=`target::${Q.method}`,J=this.filters.get(Z);if(!J)return this.sendToTools($);let Y=Q;for(let X of J){if(!Y)break;Y=await X(Y)}if(Y)this.sendToTools(JSON.stringify(Y))}sendRaw($){let Q=null;try{Q=JSON.parse($)}catch{}let Z=Q&&typeof Q.method==="string"&&Q.method.startsWith("Target.");if(this.innerTargetId&&Q&&!Z){if(typeof Q.id==="number")this.wrappedAckIds.add(Q.id);let J={id:Q.id,method:"Target.sendMessageToTarget",params:{id:Q.id,message:$,targetId:this.innerTargetId}};this.writeFrame(JSON.stringify(J));return}if(!this.innerTargetId&&Q&&!Z){if(this.outgoingQueue.push($),this.outgoingQueue.length===1)setTimeout(()=>{if(!this.innerTargetId&&!this.sawAnyTargetCreated&&this.outgoingQueue.length>0){let J=this.outgoingQueue;this.outgoingQueue=[];for(let Y of J)this.writeFrame(Y)}},250);return}this.writeFrame($)}flushQueue(){if(this.outgoingQueue.length===0)return;let $=this.outgoingQueue;this.outgoingQueue=[];for(let Q of $)this.sendRaw(Q)}writeFrame($){this.wi.forwardSocketData(this.appId,this.pageId,this.senderKey,new TextEncoder().encode($))}sendToTools($){if(this.ws.readyState===1)this.ws.send($)}}function CZ(){return{lastScriptEval:{value:""},pageExecCtx:{id:0,isPage:!1},lastConsoleApiCalled:{value:null}}}function v($,Q,Z){return $.fireResultToTools(Q.id,Z),Promise.resolve(null)}function DZ($,Q){$.addMessageFilter("tools::Debugger.canSetScriptSource",(Z)=>v($,Z,{result:!1})),$.addMessageFilter("tools::Debugger.setBlackboxPatterns",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Debugger.setAsyncCallStackDepth",(Z)=>v($,Z,{})),$.addMessageFilter("target::Debugger.enable",(Z)=>{return $.callTarget("Debugger.setBreakpointsActive",{active:!0}).catch(()=>{}),$.callTarget("Debugger.setPauseOnDebuggerStatements",{enabled:!0}).catch(()=>{}),Promise.resolve(Z)}),$.addMessageFilter("target::Debugger.scriptParsed",(Z)=>{if(Z.params?.scriptId)Q.lastScriptEval.value=String(Z.params.scriptId);return Promise.resolve(Z)}),$.addMessageFilter("tools::Debugger.setBreakpoint",(Z)=>{let J=Z.params??{};return Z.params={location:J.location,options:J.condition?{condition:J.condition}:{}},Promise.resolve(Z)}),$.addMessageFilter("tools::Debugger.setBreakpointByUrl",(Z)=>{let J=Z.params??{};return Z.params={lineNumber:J.lineNumber,url:J.url,urlRegex:J.urlRegex,columnNumber:J.columnNumber,options:J.condition?{condition:J.condition}:{}},Promise.resolve(Z)});for(let Z of["removeBreakpoint","continueToLocation","stepInto","stepOver","stepOut","resume","pause","getScriptSource","evaluateOnCallFrame"])$.addMessageFilter(`tools::Debugger.${Z}`,(J)=>Promise.resolve(J));$.addMessageFilter("target::Debugger.paused",(Z)=>{let J=Z.params?.callFrames;if(Array.isArray(J))for(let Y of J){if(Y.functionName==null&&typeof Y.name==="string")Y.functionName=Y.name;if(!Y.location&&Y.sourceCodeLocation)Y.location={scriptId:String(Y.sourceCodeLocation.scriptId??""),lineNumber:Y.sourceCodeLocation.lineNumber??0,columnNumber:Y.sourceCodeLocation.columnNumber??0};if(Array.isArray(Y.scopeChain)){for(let X of Y.scopeChain)if(!X.object&&X.value)X.object=X.value}}return Promise.resolve(Z)}),$.addMessageFilter("tools::Debugger.setBlackboxedRanges",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Debugger.setSkipAllPauses",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Debugger.setPauseOnExceptions",(Z)=>{return Promise.resolve(Z)})}function PZ($,Q){$.addMessageFilter("target::Runtime.executionContextCreated",(Z)=>{let J=Z.params?.context;if(J){if(!J.origin)J.origin=J.name??"";let Y=Number(J.id),X=!!(J.isPageContext||J.type==="normal");if(Number.isFinite(Y)&&Y>0){if(!Q.pageExecCtx.id||X&&!Q.pageExecCtx.isPage)Q.pageExecCtx.id=Y,Q.pageExecCtx.isPage=X}if(J.frameId)J.auxData={frameId:J.frameId,isDefault:!0},delete J.frameId}return Promise.resolve(Z)}),$.addMessageFilter("tools::Runtime.evaluate",(Z)=>{let J=Z.params;if(!J)return Promise.resolve(Z);if(J.throwOnSideEffect)return v($,Z,{result:{type:"object",subtype:"error",className:"EvalError",description:"EvalError: Possible side-effect in debug-evaluate"},exceptionDetails:{exceptionId:0,text:"EvalError: Possible side-effect in debug-evaluate",lineNumber:0,columnNumber:0,url:"",exception:{type:"object",subtype:"error",className:"EvalError",description:"EvalError: Possible side-effect in debug-evaluate"}}});if("silent"in J)J.doNotPauseOnExceptionsAndMuteConsole=!!J.silent,delete J.silent;if("userGesture"in J)J.emulateUserGesture=!!J.userGesture,delete J.userGesture;return Promise.resolve(Z)}),$.addMessageFilter("target::Runtime.evaluate",(Z)=>{let J=Z.result;if(J?.wasThrown){if(J.result)J.result.subtype="error";J.exceptionDetails={exceptionId:0,text:J.result?.description??"Uncaught",url:"",scriptId:Q.lastScriptEval.value,lineNumber:0,columnNumber:0,stackTrace:{callFrames:[{functionName:"",scriptId:Q.lastScriptEval.value,url:"",lineNumber:0,columnNumber:0}]},exception:J.result}}return Promise.resolve(Z)}),$.addMessageFilter("target::Runtime.getProperties",(Z)=>{let J=Z.result;if(!J)return Promise.resolve(Z);let Y=Array.isArray(J.result)?J.result:Array.isArray(J.properties)?J.properties:null;if(Y)J.result=Y.filter((X)=>X.isOwn||X.nativeGetter).map((X)=>({...X,isOwn:!0})),delete J.properties;if(Array.isArray(J.internalProperties))J.internalProperties=J.internalProperties.map((X)=>({name:X.name,value:X.value}));return Promise.resolve(Z)}),$.addMessageFilter("tools::Runtime.compileScript",(Z)=>v($,Z,{scriptId:null,exceptionDetails:null})),$.addMessageFilter("tools::Runtime.globalLexicalScopeNames",(Z)=>v($,Z,{names:[]})),$.addMessageFilter("tools::Runtime.terminateExecution",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Runtime.getIsolateId",(Z)=>v($,Z,{id:"inspect-webkit"})),$.addMessageFilter("tools::Runtime.getHeapUsage",(Z)=>v($,Z,{usedSize:0,totalSize:0})),$.addMessageFilter("tools::Runtime.discardConsoleEntries",(Z)=>{return Z.method="Console.clearMessages",Promise.resolve(Z)}),$.addMessageFilter("tools::Runtime.runIfWaitingForDebugger",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Runtime.setAsyncCallStackDepth",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Runtime.releaseObject",(Z)=>Promise.resolve(Z)),$.addMessageFilter("tools::Runtime.releaseObjectGroup",(Z)=>Promise.resolve(Z)),$.addMessageFilter("tools::Runtime.callFunctionOn",(Z)=>Promise.resolve(Z)),$.addMessageFilter("tools::Runtime.queryObjects",(Z)=>Promise.resolve(Z)),$.addMessageFilter("target::Debugger.globalObjectCleared",(Z)=>{return $.fireEventToTools("Runtime.executionContextsCleared",{}),Promise.resolve(null)})}function TZ($,Q){$.addMessageFilter("tools::Log.startViolationsReport",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Log.stopViolationsReport",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Log.clear",(Z)=>{return Z.method="Console.clearMessages",Promise.resolve(Z)}),$.addMessageFilter("tools::Log.disable",(Z)=>{return Z.method="Console.disable",Promise.resolve(Z)}),$.addMessageFilter("tools::Log.enable",(Z)=>{return Z.method="Console.enable",Promise.resolve(Z)}),$.addMessageFilter("tools::Runtime.enable",(Z)=>{return $.callTarget("Console.enable",{}).catch(()=>{}),Promise.resolve(Z)}),$.addMessageFilter("target::Console.messageAdded",(Z)=>{let J=Z.params?.message??{},X=(Array.isArray(J.stackTrace)?J.stackTrace:Array.isArray(J.stackTrace?.callFrames)?J.stackTrace.callFrames:[]).map((V)=>({functionName:V.functionName??"",scriptId:V.scriptId??"",url:V.url??"",lineNumber:Number(V.lineNumber??0),columnNumber:Number(V.columnNumber??0)})),G=X.length?{callFrames:X}:void 0,H=Date.now();if(J.source==="console-api"){let V=J.type==="log"?J.level??"log":J.type??"log",W=EZ(V),z=Array.isArray(J.parameters)&&J.parameters.length>0?J.parameters:[{type:"string",value:String(J.text??"")}],B={type:W,args:z,executionContextId:Q.pageExecCtx.id||1,timestamp:H,stackTrace:G};return Q.lastConsoleApiCalled.value=B,$.fireEventToTools("Runtime.consoleAPICalled",B),Promise.resolve(null)}if(J.source==="javascript"&&J.level==="error")return $.fireEventToTools("Runtime.exceptionThrown",{timestamp:H,exceptionDetails:{exceptionId:0,text:String(J.text??"Uncaught"),lineNumber:Number(J.line??0),columnNumber:Number(J.column??0),scriptId:Q.lastScriptEval.value,url:J.url,stackTrace:G,exception:{type:"string",value:String(J.text??"")}}}),Promise.resolve(null);return $.fireEventToTools("Log.entryAdded",{entry:{source:J.source??"other",level:IZ(J.level??J.type??"log"),text:String(J.text??""),timestamp:H,url:J.url,lineNumber:J.line,stackTrace:G,networkRequestId:J.networkRequestId}}),Promise.resolve(null)}),$.addMessageFilter("target::Console.messagesCleared",()=>{return $.fireEventToTools("Log.entriesCleared",{}),$.fireEventToTools("Runtime.consoleAPICalled",{type:"clear",args:[],executionContextId:Q.pageExecCtx.id||1,timestamp:Date.now()}),Q.lastConsoleApiCalled.value=null,Promise.resolve(null)}),$.addMessageFilter("target::Console.messageRepeatCountUpdated",()=>{let Z=Q.lastConsoleApiCalled.value;if(Z)$.fireEventToTools("Runtime.consoleAPICalled",{...Z,timestamp:Date.now()});return Promise.resolve(null)}),$.addMessageFilter("target::Console.heapSnapshot",()=>Promise.resolve(null))}function EZ($){switch($){case"warn":case"warning":return"warning";case"log":case"info":case"error":case"debug":case"dir":case"dirxml":case"table":case"trace":case"clear":case"assert":case"profile":case"profileEnd":case"count":case"timeEnd":case"startGroup":case"startGroupCollapsed":case"endGroup":return $;default:return"log"}}function IZ($){switch($){case"log":case"debug":return"verbose";case"info":return"info";case"warn":case"warning":return"warning";case"error":return"error";default:return"info"}}function xZ($){let Q=new Set;$.addMessageFilter("tools::DOM.enable",(Z)=>v($,Z,{})),$.addMessageFilter("tools::DOM.setInspectMode",(Z)=>{if(Z.method="DOM.setInspectModeEnabled",Z.params)Z.params.enabled=Z.params.mode==="searchForNode",delete Z.params.mode,delete Z.params.highlightConfig;return Promise.resolve(Z)}),$.addMessageFilter("tools::DOM.setInspectedNode",(Z)=>{return Z.method="Console.addInspectedNode",Promise.resolve(Z)}),$.addMessageFilter("tools::DOM.performSearch",(Z)=>{if(Z.params)Z.params={query:Z.params.query,caseSensitive:!!Z.params.caseSensitive};return Promise.resolve(Z)}),$.addMessageFilter("target::DOM.performSearch",(Z)=>{let J=Z.result?.searchId;if(typeof J==="string")Q.add(J);return Promise.resolve(Z)}),$.addMessageFilter("tools::DOM.discardSearchResults",(Z)=>{let J=Z.params?.searchId;if(typeof J==="string")Q.delete(J);return Promise.resolve(Z)}),$.addMessageFilter("tools::DOM.pushNodesByBackendIdsToFrontend",async(Z)=>{let J=Z.params?.backendNodeIds??[],Y=await Promise.all(J.map((X)=>$.callTarget("DOM.pushNodeByBackendIdToFrontend",{backendNodeId:X}).then((G)=>G.nodeId).catch(()=>X)));return $.fireResultToTools(Z.id,{nodeIds:Y}),null}),$.addMessageFilter("tools::DOM.getBoxModel",(Z)=>{return $.callTarget("DOM.highlightNode",{highlightConfig:{showInfo:!0,contentColor:{r:111,g:168,b:220,a:0.66},paddingColor:{r:147,g:196,b:125,a:0.55},borderColor:{r:255,g:229,b:153,a:0.66},marginColor:{r:246,g:178,b:107,a:0.66}},nodeId:Z.params?.nodeId}).catch(()=>{}),Promise.resolve(null)}),$.addMessageFilter("tools::DOM.getNodeForLocation",async(Z)=>{try{let Y=(await $.callTarget("Runtime.evaluate",{expression:`document.elementFromPoint(${Z.params?.x},${Z.params?.y})`})).result?.objectId;if(!Y)return $.fireResultToTools(Z.id,{nodeId:0}),null;let X=await $.callTarget("DOM.requestNode",{objectId:Y});$.fireResultToTools(Z.id,{nodeId:X.nodeId,backendNodeId:X.nodeId})}catch(J){$.fireErrorToTools(Z.id,{message:J?.message??String(J)})}return null}),$.addMessageFilter("tools::DOM.resolveNode",(Z)=>{if(Z.params&&Z.params.objectGroup===void 0)delete Z.params.objectGroup;return Promise.resolve(Z)})}function qZ($){$.addMessageFilter("tools::DOMDebugger.getEventListeners",async(Q)=>{try{let Z=await $.callTarget("DOM.requestNode",{objectId:Q.params?.objectId}),Y=((await $.callTarget("DOM.getEventListenersForNode",{nodeId:Z.nodeId,objectGroup:"event-listeners-panel"})).listeners??[]).map((X)=>({type:X.type,useCapture:!!X.useCapture,passive:!!X.passive,once:!!X.once,location:X.location,handler:X.handler}));$.fireResultToTools(Q.id,{listeners:Y})}catch(Z){$.fireErrorToTools(Q.id,{message:Z?.message??String(Z)})}return null}),$.addMessageFilter("tools::DOMDebugger.setXHRBreakpoint",(Q)=>v($,Q,{})),$.addMessageFilter("tools::DOMDebugger.removeXHRBreakpoint",(Q)=>v($,Q,{})),$.addMessageFilter("tools::DOMDebugger.setEventListenerBreakpoint",(Q)=>v($,Q,{})),$.addMessageFilter("tools::DOMDebugger.removeEventListenerBreakpoint",(Q)=>v($,Q,{}))}function wZ($,Q){$.addMessageFilter("tools::Page.setOverlayMessage",(X)=>{return X.method="Debugger.setOverlayMessage",Promise.resolve(X)}),$.addMessageFilter("tools::Page.configureOverlay",(X)=>{return X.method="Debugger.setOverlayMessage",Promise.resolve(X)}),$.addMessageFilter("tools::Page.getNavigationHistory",async(X)=>{try{let G=await $.callTarget("Runtime.evaluate",{expression:"window.location.href"}),H=await $.callTarget("Runtime.evaluate",{expression:"document.title"});$.fireResultToTools(X.id,{currentIndex:0,entries:[{id:0,url:G.result?.value??"",userTypedURL:G.result?.value??"",title:H.result?.value??"",transitionType:"link"}]})}catch(G){$.fireErrorToTools(X.id,{message:G?.message??String(G)})}return null}),$.addMessageFilter("target::Page.frameNavigated",(X)=>{return e6(X.params?.frame),Promise.resolve(X)}),$.addMessageFilter("target::Page.getResourceTree",(X)=>{return E8(X.result?.frameTree),Promise.resolve(X)}),$.addMessageFilter("tools::Page.getFrameTree",async(X)=>{if(typeof X.id!=="number")return null;try{let G=await $.callTarget("Page.getResourceTree",{}),H=$$(G?.frameTree);E8(H),$.fireResultToTools(X.id,{frameTree:H})}catch(G){$.fireErrorToTools(X.id,{message:G?.message??String(G)})}return null}),$.addMessageFilter("tools::Page.createIsolatedWorld",(X)=>{if(typeof X.id!=="number")return Promise.resolve(null);return v($,X,{executionContextId:Q.pageExecCtx.id||1})});let Z=1;$.addMessageFilter("tools::Page.addScriptToEvaluateOnNewDocument",(X)=>v($,X,{identifier:`pptr-${Z++}`})),$.addMessageFilter("tools::WebMCP.enable",(X)=>v($,X,{})),$.addMessageFilter("tools::WebMCP.disable",(X)=>v($,X,{})),$.addMessageFilter("tools::Page.captureScreenshot",(X)=>{return $.fireErrorToTools(X.id,{message:"Page.captureScreenshot not supported by Safari"}),Promise.resolve(null)}),$.addMessageFilter("tools::Page.startScreencast",(X)=>v($,X,{})),$.addMessageFilter("tools::Page.stopScreencast",(X)=>v($,X,{})),$.addMessageFilter("tools::Page.screencastFrameAck",(X)=>v($,X,{})),$.addMessageFilter("tools::Page.setLifecycleEventsEnabled",(X)=>v($,X,{}));let J="",Y="0.1";$.addMessageFilter("target::Page.frameNavigated",(X)=>{let G=X.params?.frame;if(G)Y=G.id??Y,J=G.loaderId??J,$.fireEventToTools("Page.frameStartedLoading",{frameId:Y}),$.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"init",timestamp:0}),$.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"commit",timestamp:0});return Promise.resolve(X)}),$.addMessageFilter("target::Page.domContentEventFired",(X)=>{return $.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"DOMContentLoaded",timestamp:X.params?.timestamp??0}),Promise.resolve(X)}),$.addMessageFilter("target::Page.loadEventFired",(X)=>{return $.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"load",timestamp:X.params?.timestamp??0}),$.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"networkAlmostIdle",timestamp:X.params?.timestamp??0}),$.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"networkIdle",timestamp:X.params?.timestamp??0}),$.fireEventToTools("Page.frameStoppedLoading",{frameId:Y}),Promise.resolve(X)})}function e6($){if(!$)return;if(!$.securityOrigin)try{$.securityOrigin=new URL($.url??"").origin}catch{$.securityOrigin="://"}if(!$.mimeType)$.mimeType="text/html"}function E8($){if(!$)return;if(e6($.frame),Array.isArray($.childFrames))$.childFrames.forEach(E8)}function $$($){if(!$)return $;let Q={frame:$.frame};if(Array.isArray($.childFrames))Q.childFrames=$.childFrames.map($$);return Q}function SZ($){$.addMessageFilter("tools::Overlay.enable",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Overlay.disable",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Overlay.highlightNode",(Q)=>{let Z=Q.params??{};return Q.method="DOM.highlightNode",Q.params={highlightConfig:Z.highlightConfig,nodeId:Z.nodeId,objectId:Z.objectId},Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.highlightFrame",(Q)=>{return Q.method="DOM.highlightFrame",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.highlightQuad",(Q)=>{return Q.method="DOM.highlightQuad",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.highlightRect",(Q)=>{return Q.method="DOM.highlightRect",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.hideHighlight",(Q)=>{return Q.method="DOM.hideHighlight",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.setShowPaintRects",(Q)=>{return Q.method="Page.setShowPaintRects",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.setInspectMode",(Q)=>{let Z=Q.params??{};return Q.method="DOM.setInspectModeEnabled",Q.params={enabled:typeof Z.mode==="string"&&Z.mode!=="none",highlightConfig:Z.highlightConfig},Promise.resolve(Q)})}function yZ($){$.addMessageFilter("tools::Emulation.canEmulate",(Q)=>v($,Q,{result:!0})),$.addMessageFilter("tools::Emulation.setTouchEmulationEnabled",(Q)=>{return Q.method="Page.setTouchEmulationEnabled",Promise.resolve(Q)}),$.addMessageFilter("tools::Emulation.setScriptExecutionDisabled",(Q)=>{return Q.method="Page.setScriptExecutionDisabled",Promise.resolve(Q)}),$.addMessageFilter("tools::Emulation.setEmulatedMedia",(Q)=>{return Q.method="Page.setEmulatedMedia",Promise.resolve(Q)}),$.addMessageFilter("tools::Rendering.setShowPaintRects",(Q)=>{return Q.method="Page.setShowPaintRects",Promise.resolve(Q)}),$.addMessageFilter("tools::Emulation.setDeviceMetricsOverride",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Emulation.clearDeviceMetricsOverride",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Emulation.setUserAgentOverride",(Q)=>{let Z=Q.params?.userAgent??"";return Q.method="Page.overrideUserAgent",Q.params={value:Z},Promise.resolve(Q)}),$.addMessageFilter("tools::Emulation.setFocusEmulationEnabled",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Emulation.setDefaultBackgroundColorOverride",(Q)=>v($,Q,{}))}function R8($){switch($){case"Document":case"Image":case"Font":case"Script":case"XHR":case"Fetch":case"Ping":case"WebSocket":return $;case"StyleSheet":return"Stylesheet";default:return"Other"}}function pZ($){if(!$)return $;return{...uZ,...$,hasPostData:$.postData!=null}}function cZ($){if(!$)return $;let Q=0,Z=$.headers??{},J=Z["Content-Length"]??Z["content-length"];if(J!=null)Q=Number(J)||0;return{...gZ,...$,fromDiskCache:$.source==="disk-cache",fromServiceWorker:$.source==="service-worker",encodedDataLength:Q}}function lZ($,Q){if(!$)return;for(let[Z,J]of Object.entries(Q))if(Z in $&&!(J in $))$[J]=$[Z],delete $[Z]}function mZ($){let Q=typeof $.size==="number"?$.size:($.name?.length??0)+($.value?.length??0);return{name:$.name,value:$.value,domain:$.domain,path:$.path,expires:$.expires??-1,size:Q,httpOnly:!!$.httpOnly,secure:!!$.secure,session:!!$.session,...$.sameSite?{sameSite:$.sameSite}:{}}}function dZ($,Q){let Z=new Map,J=1e4,Y=1024,X=4194304,G=Promise.resolve(),H=(W)=>{let z=G.then(W,W);return G=z.catch(()=>{}),z};for(let[W,z]of Object.entries(kZ))$.addMessageFilter(`tools::${W}`,(B)=>{return B.method=z,Promise.resolve(B)});$.addMessageFilter("tools::Network.setCacheDisabled",(W)=>{if(W.params&&"cacheDisabled"in W.params)W.params={disabled:!!W.params.cacheDisabled};return Promise.resolve(W)});let V=async(W)=>{try{let z=await $.callTarget("Page.getCookies",{}),B=Array.isArray(z?.cookies)?z.cookies.map(mZ):[];$.fireResultToTools(W.id,{cookies:B})}catch(z){$.fireErrorToTools(W.id,{message:z?.message??String(z)})}return null};$.addMessageFilter("tools::Network.getCookies",V),$.addMessageFilter("tools::Network.getAllCookies",V),$.addMessageFilter("tools::Network.setCookie",(W)=>{let z=W.params??{};return W.method="Page.setCookie",W.params={cookie:{name:z.name,value:z.value,domain:z.domain??"",path:z.path??"/",expires:z.expires??-1,session:!1,httpOnly:!!z.httpOnly,secure:!!z.secure,sameSite:z.sameSite??"None"}},Promise.resolve(W)}),$.addMessageFilter("tools::Network.setCookies",async(W)=>{let z=Array.isArray(W.params?.cookies)?W.params.cookies:[];try{await Promise.all(z.map((B)=>$.callTarget("Page.setCookie",{cookie:B}))),$.fireResultToTools(W.id,{})}catch(B){$.fireErrorToTools(W.id,{message:B?.message??String(B)})}return null}),$.addMessageFilter("tools::Network.deleteCookies",(W)=>{let z=W.params??{},B=z.url??`https://${(z.domain??"").replace(/^\./,"")}${z.path??"/"}`;return W.method="Page.deleteCookie",W.params={cookieName:z.name,url:B},Promise.resolve(W)}),$.addMessageFilter("tools::Network.deleteCookie",(W)=>{return W.method="Page.deleteCookie",Promise.resolve(W)}),$.addMessageFilter("tools::Network.clearBrowserCookies",async(W)=>{try{let z=await $.callTarget("Page.getCookies",{}),B=Array.isArray(z?.cookies)?z.cookies:[];await Promise.all(B.map((M)=>$.callTarget("Page.deleteCookie",{cookieName:M.name,url:`${M.secure?"https":"http"}://${(M.domain??"").replace(/^\./,"")}${M.path??"/"}`}).catch(()=>{}))),$.fireResultToTools(W.id,{})}catch(z){$.fireErrorToTools(W.id,{message:z?.message??String(z)})}return null}),$.addMessageFilter("tools::Network.canEmulateNetworkConditions",(W)=>v($,W,{result:!1})),$.addMessageFilter("tools::Network.setExtraHTTPHeaders",(W)=>v($,W,{})),$.addMessageFilter("tools::Network.setBlockedURLs",(W)=>v($,W,{})),$.addMessageFilter("tools::Network.emulateNetworkConditions",(W)=>v($,W,{})),$.addMessageFilter("tools::Network.setMonitoringXHREnabled",(W)=>v($,W,{})),$.addMessageFilter("tools::Network.getResponseBody",async(W)=>{let z=W.params?.requestId,B=typeof z==="string"?Z.get(z):void 0;if(!B)return $.fireErrorToTools(W.id,{message:"Network.getResponseBody: requestId not tracked (only requests observed via requestWillBeSent are recoverable)"}),null;if(B.method&&B.method.toUpperCase()!=="GET")return $.fireErrorToTools(W.id,{message:`Network.getResponseBody: cannot recover ${B.method} response body (bridge re-fetch is GET-only)`}),null;if(B.bytes===0)return $.fireResultToTools(W.id,{body:"",base64Encoded:!1}),null;return H(async()=>{try{let M={};for(let[E,F]of Object.entries(B.headers??{})){let K=E.toLowerCase();if(K==="if-none-match"||K==="if-modified-since"||K==="host"||K==="connection")continue;M[E]=String(F)}let N=new AbortController,j=setTimeout(()=>N.abort(),1e4),R;try{R=await fetch(B.url,{headers:M,redirect:"follow",signal:N.signal})}finally{clearTimeout(j)}let x=Number(R.headers.get("content-length")??"");if(Number.isFinite(x)&&x>4194304){$.fireErrorToTools(W.id,{message:`Network.getResponseBody: response too large (${x} bytes > ${"4194304"}) — skipped re-fetch`});try{await R.arrayBuffer()}catch{}return}let A=Buffer.from(await R.arrayBuffer());if(A.byteLength>4194304){$.fireErrorToTools(W.id,{message:`Network.getResponseBody: response too large (${A.byteLength} bytes > 4194304)`});return}let D=((R.headers.get("content-type")??"").split(";")[0]??"").trim(),U=/^(text\/|image\/svg\+xml|application\/(json|xml|javascript|ecmascript|x-www-form-urlencoded))$/.test(D),C=U?A.toString("utf8"):A.toString("base64");$.fireResultToTools(W.id,{body:C,base64Encoded:!U})}catch(M){$.fireErrorToTools(W.id,{message:`Network.getResponseBody re-fetch failed: ${M?.message??String(M)}`})}}),null});for(let[W,z]of Object.entries(fZ))$.addMessageFilter(`target::${W}`,(B)=>{return lZ(B.params,z),Promise.resolve(B)});$.addMessageFilter("target::Network.requestWillBeSent",(W)=>{let z=W.params;if(z){if(Object.assign(z,{...vZ,...z}),z.request=pZ(z.request),z.type=R8(z.type),typeof z.requestId==="string"&&typeof z.request?.url==="string"){if(Z.size>=1024){let B=Z.keys().next().value;if(B!==void 0)Z.delete(B)}Z.set(z.requestId,{url:z.request.url,method:z.request.method,headers:z.request.headers,frameId:z.frameId,bytes:0})}}return Promise.resolve(W)}),$.addMessageFilter("target::Network.responseReceived",(W)=>{let z=W.params;if(z)Object.assign(z,{...bZ,...z}),z.response=cZ(z.response),z.type=R8(z.type);return Promise.resolve(W)}),$.addMessageFilter("target::Network.loadingFinished",(W)=>{let z=W.params;if(z){let B=z.metrics?.responseBodyBytesReceived;if(typeof B==="number"&&z.encodedDataLength==null)z.encodedDataLength=B;if(Object.assign(z,{...hZ,...z}),typeof z.requestId==="string"&&typeof B==="number"){let M=Z.get(z.requestId);if(M&&B>M.bytes)M.bytes=B}}return Promise.resolve(W)}),$.addMessageFilter("target::Network.dataReceived",(W)=>{let z=W.params;if(z&&typeof z.requestId==="string"){let B=Z.get(z.requestId);if(B){let M=Number(z.dataLength)||0;B.bytes+=M}}return Promise.resolve(W)}),$.addMessageFilter("target::Network.loadingFailed",(W)=>{let z=W.params;if(z){if(z.type=R8(z.type),!("canceled"in z))z.canceled=!1}return Promise.resolve(W)}),$.addMessageFilter("target::Network.requestServedFromMemoryCache",(W)=>{if(W.method="Network.requestServedFromCache",W.params)W.params={requestId:W.params.requestId};return Promise.resolve(W)}),$.addMessageFilter("tools::Network.loadNetworkResource",async(W)=>{let z=W.params??{};if(!Q)return $.fireResultToTools(W.id,{resource:{success:!1,netError:1,netErrorName:"ERR_NOT_IMPLEMENTED"}}),null;try{let B=await $.callTarget("Network.loadResource",{frameId:z.frameId,url:z.url}),M=!!B?.content&&(B?.status??0)>=200&&(B?.status??0)<300,N;if(M)N=`network-resource:${z.frameId??""}:${z.url}`,Q.set(N,String(B.content));$.fireResultToTools(W.id,{resource:{success:M,stream:N,httpStatusCode:B?.status,headers:B?.headers,mimeType:B?.mimeType}})}catch(B){$.fireResultToTools(W.id,{resource:{success:!1,netError:2,netErrorName:B?.message??"ERR_FAILED"}})}return null})}function iZ($){for(let Q of["Target.setAutoAttach","Target.setDiscoverTargets","Target.setRemoteLocations"])$.addMessageFilter(`tools::${Q}`,(Z)=>v($,Z,{}))}function nZ($){$.addMessageFilter("target::Inspector.inspect",async(Q)=>{let Z=Q.params?.object?.objectId;if(typeof Z!=="string")return null;try{let Y=(await $.callTarget("DOM.requestNode",{objectId:Z}))?.nodeId;if(typeof Y==="number")$.fireEventToTools("Overlay.inspectNodeRequested",{backendNodeId:Y}),$.fireEventToTools("DOM.inspectNodeRequested",{backendNodeId:Y})}catch{}return null})}function aZ($){if(!$)return $;let Q=$.origin==="inspector";return{styleSheetId:$.styleSheetId,frameId:$.frameId,sourceURL:$.sourceURL??"",origin:$.origin==="author"?"regular":$.origin,title:$.title??"",disabled:!!$.disabled,isInline:!!$.isInline,startLine:$.startLine??0,startColumn:$.startColumn??0,isMutable:Q,isConstructed:Q,length:$.length??0,endLine:$.endLine??0,endColumn:$.endColumn??0,hasSourceURL:!!$.sourceURL}}function I8($){if(!$)return $;let Q={origin:$.origin==="author"?"regular":$.origin,style:O0($.style),selectorList:sZ($.selectorList)};if($.ruleId?.styleSheetId)Q.styleSheetId=$.ruleId.styleSheetId;if(Array.isArray($.groupings))Q.media=$.groupings.map((Z)=>({text:Z.text,sourceURL:Z.sourceURL,source:tZ[Z.type]}));return Q}function Q2($){let Q={lastNodeId:0},Z=new Map;async function J(Y,X){let G=Z.get(Y);if(!G)try{if(G=(await $.callTarget("CSS.getStyleSheet",{styleSheetId:Y}))?.styleSheet,G)Z.set(Y,G)}catch{}let H=G?.rules??[];for(let V=0;V<H.length;V++)if(oZ(H[V]?.style?.range,X))return{styleSheetId:Y,ordinal:V};return{styleSheetId:Y,ordinal:0}}$.addMessageFilter("tools::CSS.enable",(Y)=>{return $.fireResultToTools(Y.id,{}),Promise.resolve(null)}),$.addMessageFilter("target::CSS.styleSheetAdded",(Y)=>{if(Y.params?.header)Y.params.header=aZ(Y.params.header);return Promise.resolve(Y)}),$.addMessageFilter("target::CSS.getInlineStylesForNode",(Y)=>{let X=Y.result;if(X)Y.result={inlineStyle:O0(X.inlineStyle),attributesStyle:O0(X.attributesStyle)};return Promise.resolve(Y)}),$.addMessageFilter("tools::CSS.getMatchedStylesForNode",async(Y)=>{if(typeof Y.params?.nodeId==="number")Q.lastNodeId=Y.params.nodeId;try{let[X,G]=await Promise.all([$.callTarget("CSS.getInlineStylesForNode",{nodeId:Y.params.nodeId}),$.callTarget("CSS.getMatchedStylesForNode",{nodeId:Y.params.nodeId,includePseudo:!0,includeInherited:!0})]);$.fireResultToTools(Y.id,{inlineStyle:O0(X?.inlineStyle),attributesStyle:O0(X?.attributesStyle),matchedCSSRules:v8(G?.matchedCSSRules),pseudoElements:eZ(G?.pseudoElements),inherited:$2(G?.inherited),cssKeyframesRules:[]})}catch(X){$.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null}),$.addMessageFilter("tools::CSS.setStyleTexts",async(Y)=>{let X=Y.params?.edits??[],G=[];for(let H of X)try{let V=await J(H.styleSheetId,H.range),W=await $.callTarget("CSS.setStyleText",{styleId:V,text:H.text});G.push(O0(W?.style)),Z.delete(H.styleSheetId),$.fireEventToTools("CSS.styleSheetChanged",{styleSheetId:H.styleSheetId})}catch{G.push(null)}return $.fireResultToTools(Y.id,{styles:G}),null}),$.addMessageFilter("tools::CSS.setRuleSelector",async(Y)=>{let{styleSheetId:X,range:G,selector:H}=Y.params??{};try{let V=await J(X,G);Y.params={ruleId:V,selector:H}}catch(V){return $.fireErrorToTools(Y.id,{message:V?.message??String(V)}),null}return Y}),$.addMessageFilter("target::CSS.setRuleSelector",(Y)=>{if(Y.result?.rule)Y.result={rule:I8(Y.result.rule)};return Promise.resolve(Y)}),$.addMessageFilter("tools::CSS.addRule",async(Y)=>{let X=Y.params??{},G=String(X.ruleText??"").trim().replace(/\{\s*\}\s*$/,"").trim();try{let H=await $.callTarget("CSS.addRule",{contextNodeId:Q.lastNodeId,styleSheetId:X.styleSheetId,selector:G});$.fireResultToTools(Y.id,{rule:I8(H?.rule)})}catch(H){$.fireErrorToTools(Y.id,{message:H?.message??String(H)})}return null})}function J2($){$.addMessageFilter("tools::Browser.getVersion",(Q)=>v($,Q,Z2)),$.addMessageFilter("tools::Browser.getWindowForTarget",(Q)=>v($,Q,{windowId:1,bounds:{}})),$.addMessageFilter("tools::Browser.setWindowBounds",(Q)=>v($,Q,{}))}function X2($){switch($){case"mousePressed":return"mousedown";case"mouseReleased":return"click";case"mouseMoved":return"mousemove";default:return null}}function G2($){let Q=async(Z)=>{let J=Z.params??{},Y=X2(J.type);if(!Y)return $.fireResultToTools(Z.id,{}),null;let X=Y==="click"?["mousedown","click","mouseup"]:[Y];try{for(let G of X){let H={x:Number(J.x)||0,y:Number(J.y)||0,modifiers:Number(J.modifiers)||0,button:J.button??"none",type:G},V=`(${Y2}, __sd_simulate(${JSON.stringify(H)}))`;await $.callTarget("Runtime.evaluate",{expression:V})}$.fireResultToTools(Z.id,{})}catch(G){$.fireErrorToTools(Z.id,{message:G?.message??String(G)})}return null};$.addMessageFilter("tools::Input.dispatchMouseEvent",Q),$.addMessageFilter("tools::Input.emulateTouchFromMouseEvent",Q),$.addMessageFilter("tools::Input.setIgnoreInputEvents",(Z)=>{return $.fireResultToTools(Z.id,{}),Promise.resolve(null)})}function V2($){let Q=new Map;return $.addMessageFilter("tools::IO.read",(Z)=>{let J=String(Z.params?.handle??""),Y=Number(Z.params?.size)||K2,X=Number(Z.params?.offset)||0,G=Q.get(J);if(G===void 0)return $.fireResultToTools(Z.id,{data:"",eof:!0,base64Encoded:!1}),Promise.resolve(null);let H=G.slice(X,X+Y),V=X+Y>=G.length;return $.fireResultToTools(Z.id,{data:H,eof:V,base64Encoded:!1}),Promise.resolve(null)}),$.addMessageFilter("tools::IO.close",(Z)=>{return Q.delete(String(Z.params?.handle??"")),$.fireResultToTools(Z.id,{}),Promise.resolve(null)}),Q}function W2($){$.addMessageFilter("tools::Accessibility.enable",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Accessibility.disable",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Accessibility.getPartialAXTree",async(Q)=>{let Z=Q.params??{},J=Z.nodeId??Z.backendNodeId;if(typeof J!=="number")return $.fireResultToTools(Q.id,{nodes:[]}),null;try{let X=(await $.callTarget("DOM.getAccessibilityPropertiesForNode",{nodeId:J}))?.properties??{},G={nodeId:String(J),ignored:Boolean(X.ignored),role:X.role?{type:"role",value:String(X.role)}:void 0,name:X.label?{type:"computedString",value:String(X.label)}:void 0,backendDOMNodeId:J,childIds:[],properties:[]};$.fireResultToTools(Q.id,{nodes:[G]})}catch(Y){$.fireResultToTools(Q.id,{nodes:[]})}return null})}function M2($){for(let[Z,J]of Object.entries(H2))$.addMessageFilter(`tools::${Z}`,(Y)=>v($,Y,J));for(let Z of z2)for(let J of["enable","disable"])$.addMessageFilter(`tools::${Z}.${J}`,(Y)=>v($,Y,{}));let Q=[["Autofill.setAddresses",{}],["Storage.getStorageKey",{storageKey:""}],["Storage.trackCacheStorageForOrigin",{}],["Storage.trackIndexedDBForOrigin",{}],["Storage.untrackCacheStorageForOrigin",{}],["Storage.untrackIndexedDBForOrigin",{}],["Storage.getCookies",{cookies:[]}],["ServiceWorker.unregister",{}]];for(let[Z,J]of Q)$.addMessageFilter(`tools::${Z}`,(Y)=>v($,Y,J))}function x8($){let Q=CZ();M2($);let Z=V2($);DZ($,Q),PZ($,Q),TZ($,Q),xZ($),qZ($),wZ($,Q),SZ($),yZ($),dZ($,Z),iZ($),nZ($),Q2($),J2($),G2($),W2($)}function Z$($){let Q=`${$.reqHost}/devtools/page/${$.id}`;return{description:$.description,devtoolsFrontendUrl:`devtools://devtools/bundled/inspector.html?ws=${Q}`,devtoolsFrontendUrlCompat:`devtools://devtools/bundled/inspector.html?ws=${Q}`,id:$.id,title:$.title,type:$.type,url:$.url,webSocketDebuggerUrl:`ws://${Q}`,faviconUrl:""}}function f0($){return $.replace(/[&<>"']/g,(Q)=>F2[Q])}function J$($){return Q$.createServer((Q,Z)=>{let J=new URL(Q.url??"/","http://placeholder"),Y=Q.headers.host??"";if(J.pathname==="/json/version"){let X=typeof $.version==="function"?$.version(Y):$.version;return C8(Z,X)}if(J.pathname==="/json"||J.pathname==="/json/list")return C8(Z,$.listTargets(Y));if(J.pathname==="/json/protocol")return C8(Z,{});if(J.pathname==="/")return N2(Z,$,Y);Z.writeHead(404,{"content-type":"text/plain"}),Z.end("not found")})}function C8($,Q,Z=200){$.writeHead(Z,{"content-type":"application/json; charset=utf-8"}),$.end(JSON.stringify(Q))}function N2($,Q,Z){let J=Q.listTargets(Z),Y=J.map((V)=>`<li><strong>${f0(V.title||V.url||V.id)}</strong><br><small>${f0(V.url)}</small><br><small>copy &amp; paste into Chrome's address bar:</small><br><code style="user-select:all">${f0(V.devtoolsFrontendUrl)}</code></li>`).join(""),X=`inspect-webkit${Q.brand?` (${Q.brand})`:""}`,G=Q.indexNote??'<p>Open <code style="display:inline;padding:1px 4px">chrome://inspect</code> → <em>Configure…</em> → add '+`<code style="display:inline;padding:1px 4px">${f0(Z)}</code>.</p>`,H=`<!doctype html><meta charset=utf-8><title>${f0(X)}</title><style>body{font:14px -apple-system,sans-serif;max-width:760px;margin:2em auto;padding:0 1em}code{display:block;background:#f4f4f4;padding:.5em;border-radius:4px;word-break:break-all;margin:.4em 0 1em}li{margin-bottom:1.5em;list-style:none}</style><h1>${f0(X)} — ${J.length} target${J.length===1?"":"s"}</h1>`+G+`<ul>${Y}</ul>`+'<hr><p>JSON: <a href="/json/list">/json/list</a> · <a href="/json/version">/json/version</a></p>';$.writeHead(200,{"content-type":"text/html; charset=utf-8"}),$.end(H)}function Y$($,Q,Z){return new Promise((J,Y)=>{$.once("error",(G)=>{if(G.port==null)G.port=Z;if(G.host==null)G.host=Q;Y(G)});let X=Q==="localhost"||Q==="::1"||Q==="127.0.0.1"?"::":Q;$.listen({port:Z,host:X,ipv6Only:!1},()=>{$.off("error",Y),J()})})}function X$($){let Q=!process.env.NO_COLOR&&process.stderr.isTTY===!0,Z=(V,W)=>Q?`\x1B[${V}m${W}\x1B[0m`:W,J=(V)=>Z("1",V),Y=(V)=>Z("2",V),X=(V)=>Z("36",V),G=(V)=>Z("32",V),H=`http://${$.host}:${$.port}`;console.error(`${G("●")} ${J(`${$.brand} CDP`)} ${X(H)}`),console.error(` ${Y("chrome")} chrome://inspect → ${$.host}:${$.port}`),console.error(` ${Y("vscode")} "type": "chrome", "port": ${$.port}`)}function _2($,Q){let Z=!!process.env.INSPECT_WEBKIT_DEBUG,J=new Map,Y=!1,X=!1,G=!1,H=new Map,V=null;function W(U){if($.readyState!==1)return;let C=JSON.stringify(U);if(Z)console.error(`[browser] tools<< ${C.slice(0,240)}`);$.send(C)}function z(U,C){let E={method:U,params:C};if(V)E.sessionId=V;W(E)}function B(U,C){return{targetId:U.targetId,type:U.type==="page"?"page":U.type||"other",title:U.title||"",url:U.url||"",attached:C,canAccessOpener:!1,browserContextId:"default"}}function M(U){for(let C of J.values())if(C.targetId===U)return!0;return!1}function N(U,C){let E=Q.listEntries().find((L)=>L.targetId===U);if(!E)return null;let F=crypto.randomUUID(),K=(L)=>{let P;try{P=JSON.parse(L)}catch{return}P.sessionId=F,W(P)},_=Q.createPageSession(U,K);if(!_)return null;return J.set(F,{handle:_,targetId:U}),z("Target.attachedToTarget",{sessionId:F,targetInfo:B(E,!0),waitingForDebugger:C}),{sessionId:F,entry:E}}function j(U){let C=J.get(U);if(!C)return!1;try{C.handle.close()}catch{}return J.delete(U),z("Target.detachedFromTarget",{sessionId:U,targetId:C.targetId}),!0}function R(){let U=Q.listEntries(),C=new Set;for(let E of U){C.add(E.targetId);let F=H.get(E.targetId);if(!F){if(H.set(E.targetId,E),Y)z("Target.targetCreated",{targetInfo:B(E,M(E.targetId))});if(X&&!M(E.targetId))N(E.targetId,G)}else if(F.title!==E.title||F.url!==E.url){if(H.set(E.targetId,E),Y)z("Target.targetInfoChanged",{targetInfo:B(E,M(E.targetId))})}}for(let E of[...H.keys()]){if(C.has(E))continue;H.delete(E);for(let[F,K]of J)if(K.targetId===E)j(F);if(Y)z("Target.targetDestroyed",{targetId:E})}}let x=setInterval(R,Q.refreshMs??1000);function A(U,C){if(U)C.sessionId=U;W(C)}function D(U,C){let{id:E,method:F}=U,K=U.params??{};switch(F){case"Browser.getVersion":return A(C,{id:E,result:{protocolVersion:"1.3",product:"Safari/inspect-webkit",revision:"@",userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit",jsVersion:""}});case"Target.attachToBrowserTarget":{if(!V)V=crypto.randomUUID();return A(C,{id:E,result:{sessionId:V}})}case"Target.setDiscoverTargets":{if(Y=!!K.discover,Y)for(let _ of Q.listEntries())H.set(_.targetId,_),z("Target.targetCreated",{targetInfo:B(_,M(_.targetId))});if(typeof E==="number")A(C,{id:E,result:{}});return}case"Target.getTargets":{let _=Q.listEntries().map((L)=>B(L,M(L.targetId)));return A(C,{id:E,result:{targetInfos:_}})}case"Target.setAutoAttach":{if(X=!!K.autoAttach,G=!!K.waitForDebuggerOnStart,X){for(let _ of Q.listEntries())if(!M(_.targetId))N(_.targetId,G)}if(typeof E==="number")A(C,{id:E,result:{}});return}case"Target.attachToTarget":{for(let[L,P]of J)if(P.targetId===K.targetId){if(typeof E==="number")A(C,{id:E,result:{sessionId:L}});return}let _=N(K.targetId,!1);if(!_){if(typeof E==="number")A(C,{id:E,error:{code:-32000,message:"No target with given id found"}});return}if(typeof E==="number")A(C,{id:E,result:{sessionId:_.sessionId}});return}case"Target.detachFromTarget":{if(j(K.sessionId),typeof E==="number")A(C,{id:E,result:{}});return}case"Target.sendMessageToTarget":{let _=J.get(K.sessionId);if(_)_.handle.onMessageFromTools(K.message);if(typeof E==="number")A(C,{id:E,result:{}});return}case"Target.setRemoteLocations":case"Target.exposeDevToolsProtocol":case"Target.activateTarget":case"Target.closeTarget":if(typeof E==="number")A(C,{id:E,result:{}});return;case"Target.getBrowserContexts":{if(typeof E==="number")A(C,{id:E,result:{browserContextIds:["default"]}});return}}if(typeof E==="number")A(C,{id:E,error:{code:-32601,message:`Browser-level method '${F??"?"}' not implemented`}})}$.on("message",(U,C)=>{let E=C?new TextDecoder().decode(U):U.toString();if(Z)console.error(`[browser] tools>> ${E.slice(0,240)}`);let F;try{F=JSON.parse(E)}catch{return}if(typeof F.sessionId==="string"){if(F.sessionId===V){let L={...F};return delete L.sessionId,D(L,F.sessionId)}let K=J.get(F.sessionId);if(!K){if(typeof F.id==="number")W({id:F.id,sessionId:F.sessionId,error:{code:-32000,message:`Session ${F.sessionId} not found`}});return}let _={...F};delete _.sessionId,K.handle.onMessageFromTools(JSON.stringify(_));return}D(F,void 0)}),$.on("close",()=>{clearInterval(x);for(let[,U]of J)try{U.handle.close()}catch{}J.clear()})}async function L2($={}){let Q=$.port??9222,Z=$.host??"localhost",J=await U2();if(J.length===0)console.error("warn: no inspectable sources found (no devices, no simulators)."),console.error(" The server will still run; new targets will appear if you start one.");let Y=new Map,X=new WeakMap,G=new Map;for(let F of J)G.set(F,[]),X.set(F,new Set),F.wi.subscribe((K)=>{let{__selector:_,__argument:L}=K;if(!_||!L)return;if(_==="_rpc_reportConnectedApplicationList:"){let P=L.WIRApplicationDictionaryKey??{},T=Object.entries(P).map(([S,y])=>({appId:S,bundleId:y.WIRApplicationBundleIdentifierKey,name:y.WIRApplicationNameKey??y.WIRApplicationBundleIdentifierKey??S,isProxy:Boolean(y.WIRIsApplicationProxyKey)}));G.set(F,T);let q=X.get(F);for(let S of T){if(S.isProxy||q.has(S.appId))continue;q.add(S.appId),F.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:S.appId})}}else if(_==="_rpc_applicationConnected:"){let P=L,T=G.get(F)??[];if(!T.find((q)=>q.appId===P.WIRApplicationIdentifierKey))T.push({appId:P.WIRApplicationIdentifierKey,bundleId:P.WIRApplicationBundleIdentifierKey,name:P.WIRApplicationNameKey??P.WIRApplicationBundleIdentifierKey,isProxy:Boolean(P.WIRIsApplicationProxyKey)}),G.set(F,T);if(!P.WIRIsApplicationProxyKey){let q=X.get(F);if(!q.has(P.WIRApplicationIdentifierKey))q.add(P.WIRApplicationIdentifierKey),F.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:P.WIRApplicationIdentifierKey})}}else if(_==="_rpc_applicationDisconnected:"){let P=G.get(F)??[];G.set(F,P.filter((T)=>T.appId!==L.WIRApplicationIdentifierKey)),Y.delete(`${F.id}:${L.WIRApplicationIdentifierKey}`)}else if(_==="_rpc_applicationSentListing:"){let P=L.WIRApplicationIdentifierKey,T=L.WIRListingKey??{},q=new Map;for(let[S,y]of Object.entries(T))q.set(S,{pageId:Number(y.WIRPageIdentifierKey??0),title:y.WIRTitleKey??"",url:y.WIRURLKey??"",type:y.WIRTypeKey??"",connectionId:typeof y.WIRConnectionIdentifierKey==="string"?y.WIRConnectionIdentifierKey:null});Y.set(`${F.id}:${P}`,q)}}),F.wi.send("_rpc_reportIdentifier:",{}),F.wi.send("_rpc_getConnectedApplications:",{});let H=setInterval(()=>{for(let F of J){let K=G.get(F)??[];for(let _ of K){if(_.isProxy)continue;F.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:_.appId})}}},B2),V=new Map;function W(){let F=[];for(let K of J){let _=G.get(K)??[];for(let L of _){if(L.isProxy)continue;let P=Y.get(`${K.id}:${L.appId}`);if(!P)continue;for(let T of P.values()){let q=!!T.connectionId&&T.connectionId!==K.wi.connection;F.push({targetId:`${K.id}:${L.appId}:${T.pageId}`,source:K,appId:L.appId,appName:L.name,bundleId:L.bundleId,pageId:T.pageId,title:T.title,url:T.url,type:T.type,inUseByOtherInspector:q})}}}return F}let z=crypto.randomUUID(),B=J$({brand:"",version:(F)=>({Browser:"Safari/inspect-webkit","Protocol-Version":"1.3","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit","WebKit-Version":"605.1.15",webSocketDebuggerUrl:`ws://${F}/devtools/browser/${z}`}),listTargets:(F)=>W().map((K)=>Z$({reqHost:F,id:K.targetId,description:`${K.source.label}${K.bundleId?` (${K.bundleId})`:""}`,title:K.title||K.appName,url:/^https?:/i.test(K.url)?K.url:"about:blank",type:g6(K.type)}))}),M=new s6.default({noServer:!0}),N=`/devtools/browser/${z}`;B.on("upgrade",(F,K,_)=>{let L=new URL(F.url??"/","http://placeholder");if(console.error(`# ws upgrade: ${L.pathname}`),L.pathname===N){M.handleUpgrade(F,K,_,(T)=>{_2(T,{listEntries:()=>W().map((q)=>({targetId:q.targetId,type:g6(q.type),title:q.title||q.appName,url:q.url})),createPageSession:(q,S)=>{let y=W().find((k)=>k.targetId===q);if(!y)return null;return j(y,S)}})});return}if(!L.pathname.startsWith("/devtools/page/")){console.error(`# ws upgrade rejected: unknown path ${L.pathname}`),K.destroy();return}let P=decodeURIComponent(L.pathname.slice(15));M.handleUpgrade(F,K,_,(T)=>{E(T,P)})});function j(F,K){let _=crypto.randomUUID(),P=new A4({readyState:1,send:(S)=>K(S)},F.source.wi,F.appId,F.pageId,_);x8(P),V.set(_,P);let T=!!process.env.INSPECT_WEBKIT_DEBUG,q=F.source.wi.subscribe((S)=>{if(S.__selector!=="_rpc_applicationSentData:")return;let y=S.__argument;if(!y)return;if(y.WIRDestinationKey&&y.WIRDestinationKey!==_)return;if(y.WIRApplicationIdentifierKey!==F.appId)return;if(y.WIRPageIdentifierKey!==void 0&&Number(y.WIRPageIdentifierKey)!==F.pageId)return;let k=y.WIRMessageDataKey??y.WIRSocketDataKey;if(!k)return;let h=typeof k==="string"?k:new TextDecoder().decode(k);if(T)console.error(`[cdp] target>> ${h.slice(0,240)}`);P.onMessageFromTarget(h)});return F.source.wi.forwardSocketSetup(F.appId,F.pageId,_),console.error(`# devtools attached: ${F.source.label} :: ${F.appName} :: ${F.title||F.url}`),{onMessageFromTools(S){if(T)console.error(`[cdp] tools>> ${S.slice(0,300)}`);P.onMessageFromTools(S)},close(){q();try{P.wi.forwardDidClose(P.appId,P.pageId,P.senderKey)}catch{}V.delete(P.senderKey)}}}let R=new Map,x=8000;function A(F){let K=R.get(F);if(K)return K;let _=W().find((k)=>k.targetId===F);if(!_)return null;let L=crypto.randomUUID(),T=new A4({readyState:1,send:()=>{}},_.source.wi,_.appId,_.pageId,L);x8(T),V.set(L,T);let q=_.source.wi.subscribe((k)=>{if(k.__selector!=="_rpc_applicationSentData:")return;let h=k.__argument;if(!h)return;if(h.WIRDestinationKey&&h.WIRDestinationKey!==L)return;if(h.WIRApplicationIdentifierKey!==_.appId)return;if(h.WIRPageIdentifierKey!==void 0&&Number(h.WIRPageIdentifierKey)!==_.pageId)return;let c=h.WIRMessageDataKey??h.WIRSocketDataKey;if(!c)return;let I=typeof c==="string"?c:new TextDecoder().decode(c);T.onMessageFromTarget(I)});_.source.wi.forwardSocketSetup(_.appId,_.pageId,L);let S=Promise.race([T.callTarget("DOM.getDocument",{depth:0}).then((k)=>k?.root?.nodeId),new Promise((k,h)=>setTimeout(()=>h(Error("DOM.getDocument timeout")),5000))]),y={cdp:T,rootNodeIdPromise:S,idleTimer:null,close(){if(y.idleTimer)clearTimeout(y.idleTimer);q();try{T.wi.forwardDidClose(T.appId,T.pageId,T.senderKey)}catch{}V.delete(L),R.delete(F)}};return R.set(F,y),S.catch(()=>y.close()),y}function D(F){if(F.idleTimer)clearTimeout(F.idleTimer);F.idleTimer=setTimeout(()=>F.close(),x)}function U(F){if(F){R.get(F)?.close();return}for(let K of R.values())K.close()}async function C(F,K){let _=A(F);if(!_)return;D(_);try{if(K){let L=await _.rootNodeIdPromise;if(!L)return;await _.cdp.callTarget("DOM.highlightNode",{nodeId:L,highlightConfig:{showInfo:!1,contentColor:{r:111,g:168,b:220,a:0.55},paddingColor:{r:147,g:196,b:125,a:0},borderColor:{r:255,g:229,b:153,a:0},marginColor:{r:246,g:178,b:107,a:0}}})}else await _.cdp.callTarget("DOM.hideHighlight",{})}catch{_.close()}}function E(F,K){let _=W().find((q)=>q.targetId===K);if(!_){console.error(`# ws closed: unknown target ${K} (known: ${W().map((q)=>q.targetId).join(", ")||"none"})`),F.close(1011,`unknown target ${K}`);return}let L=j(_,(q)=>{if(F.readyState===1)F.send(q)}),P=!0;F.on("pong",()=>{P=!0});let T=setInterval(()=>{if(!P){try{F.terminate()}catch{}return}P=!1;try{F.ping()}catch{}},15000);F.on("message",(q,S)=>{let y=S?new TextDecoder().decode(q):q.toString();L.onMessageFromTools(y)}),F.on("close",()=>{clearInterval(T),L.close()})}return await Y$(B,Z,Q),X$({brand:"safari",host:Z,port:Q}),{stop(){clearInterval(H);for(let F of R.values())F.close();M.close(),B.close();for(let F of J)try{F.wi.close(),F.lockdown?.close()}catch{}},getTargets(){return W()},highlightTarget(F,K){return C(F,K)},releaseHighlight(F){U(F)}}}async function U2(){let[$,Q]=await Promise.all([O2(),j2()]);return[...$,...Q]}async function O2(){let $=[];try{$=await i6()}catch(Z){return console.error(`warn: usbmux: ${Z.message}`),[]}return(await Promise.all($.map(A2))).filter((Z)=>Z!==null)}async function A2($){try{let Q=await n6($.Properties.SerialNumber),Z=await D4.open($,Q);await Z.startSession();let J=await Z.startService("com.apple.webinspector"),{socket:Y,stream:X}=await Z.connectService(J),G=new s0(Y,X);return await G.reportIdentifier(),{kind:"device",id:`device:${$.Properties.SerialNumber}`,label:`device:${$.Properties.SerialNumber.slice(0,8)}`,wi:G,lockdown:Z}}catch(Q){return console.error(`warn: device ${$.Properties.SerialNumber}: ${Q.message}`),null}}async function j2(){let $=[];try{$=await a6()}catch(Z){return console.error(`warn: simulator discovery: ${Z.message}`),[]}return(await Promise.all($.map(R2))).filter((Z)=>Z!==null)}async function R2($){try{let{socket:Q,stream:Z}=await r6($.socketPath),J=new s0(Q,Z);return await J.reportIdentifier(),{kind:"simulator",id:`sim:${$.pid}`,label:`sim:${$.pid}`,wi:J}}catch(Q){return console.error(`warn: simulator ${$.socketPath}: ${Q.message}`),null}}function g6($){switch($){case"WIRTypeServiceWorker":return"service_worker";case"WIRTypeWorker":case"WIRTypeJavaScript":return"worker";default:return"page"}}class G${url;ws;handlers=new Set;openPromise;constructor($){this.url=$,this.ws=new u6($),this.ws.binaryType="nodebuffer",this.openPromise=new Promise((Q,Z)=>{this.ws.once("open",()=>Q()),this.ws.once("error",(J)=>Z(J))}),this.ws.on("message",(Q,Z)=>{let J=Z?new TextDecoder().decode(Q):Q.toString();for(let Y of this.handlers)Y(J)})}ready(){return this.openPromise}onFrame($){return this.handlers.add($),()=>this.handlers.delete($)}forwardSocketData($,Q,Z,J){if(this.ws.readyState!==u6.OPEN)return;this.ws.send(new TextDecoder().decode(J))}forwardDidClose($,Q,Z){}close(){try{this.ws.close()}catch{}}}async function C2($){let Q=$.port??9223,Z=$.host??"localhost",{upstreams:J}=$,Y=J$({brand:"bun",version:{Browser:"Bun/inspect-webkit","Protocol-Version":"1.3","User-Agent":"Bun (via inspect-webkit)","WebKit-Version":"605.1.15"},listTargets:(H)=>J.map((V)=>Z$({reqHost:H,id:encodeURIComponent(V.url),description:V.label??"bun",title:V.label??V.url,url:V.url,type:"node"}))}),X=new s6.default({noServer:!0});Y.on("upgrade",(H,V,W)=>{let z=new URL(H.url??"/","http://placeholder");if(!z.pathname.startsWith("/devtools/page/")){V.destroy();return}let B=decodeURIComponent(z.pathname.slice(15)),M=J.find((N)=>N.url===B);if(!M){V.destroy();return}X.handleUpgrade(H,V,W,(N)=>{G(N,M).catch((j)=>{console.error(`# bun attach failed: ${j.message}`);try{N.close(1011,j.message)}catch{}})})});async function G(H,V){let W=!!process.env.INSPECT_WEBKIT_DEBUG,z=new G$(V.url);await z.ready();let B=crypto.randomUUID(),M=new A4(H,z,"bun",0,B);x8(M);let N=z.onFrame((j)=>{if(W)console.error(`[bun] target>> ${j.slice(0,240)}`);M.onMessageFromTarget(j)});H.on("message",(j,R)=>{let x=R?new TextDecoder().decode(j):j.toString();if(W)console.error(`[bun] tools>> ${x.slice(0,300)}`);M.onMessageFromTools(x)}),H.on("close",()=>{N(),z.close()}),console.error(`# devtools attached: ${V.label??V.url}`)}return await Y$(Y,Z,Q),X$({brand:"bun",host:Z,port:Q}),{stop(){X.close(),Y.close()},getTargets(){return J.slice()}}}async function K$(){return i6()}async function D2(){let[$,Q]=await Promise.all([P2(),T2()]);return[...$.flat(),...Q.flat()]}async function P2(){let $=await K$();return Promise.all($.map(E2))}async function T2(){let $=await a6();return Promise.all($.map(I2))}async function E2($){let Q=null;try{return Q=await x2($),await V$(Q.client,{source:"device",udid:$.Properties.SerialNumber,deviceID:$.DeviceID})}catch(Z){return console.error(`warn: ${$.Properties.SerialNumber}: ${Z.message}`),[]}finally{Q?.client.close(),Q?.lockdown.close()}}async function I2($){let Q=null;try{let{socket:Z,stream:J}=await r6($.socketPath);return Q=new s0(Z,J),await Q.reportIdentifier(),await V$(Q,{source:"simulator",udid:`sim:${$.pid}`})}catch(Z){return console.error(`warn: simulator (${$.socketPath}): ${Z.message}`),[]}finally{Q?.close()}}async function x2($){let Q=await n6($.Properties.SerialNumber),Z=await D4.open($,Q);await Z.startSession();let J=await Z.startService("com.apple.webinspector"),{socket:Y,stream:X}=await Z.connectService(J),G=new s0(Y,X);return await G.reportIdentifier(),{client:G,lockdown:Z}}async function V$($,Q){let Z=(await $.listApplications()).filter((X)=>!X.isProxy),J=await Promise.all(Z.map((X)=>$.getListing(X.appId))),Y=[];for(let X=0;X<Z.length;X++){let G=Z[X];for(let H of J[X])Y.push({...Q,appId:G.appId,appName:G.name??G.bundleId??G.appId,bundleId:G.bundleId,pageId:H.pageId,title:H.title,url:H.url,type:H.type})}return Y}var r7,t7,k6,s7,e7,QZ,ZZ,z0=($,Q,Z)=>{var J=$!=null&&typeof $==="object";if(J){var Y=Q?QZ??=new WeakMap:ZZ??=new WeakMap,X=Y.get($);if(X)return X}Z=$!=null?r7(t7($)):{};let G=Q||!$||!$.__esModule?k6(Z,"default",{value:$,enumerable:!0}):Z;for(let H of s7($))if(!e7.call(G,H))k6(G,H,{get:$Z.bind($,H),enumerable:!0});if(J)Y.set($,G);return G},e=($,Q)=>()=>(Q||$((Q={exports:{}}).exports,Q),Q.exports),o,H0,j4,JZ,r0,t0,p6,c6,YZ,q8,w8,XZ,l6,GZ,KZ=`<?xml version="1.0" encoding="UTF-8"?>
13
+ `||$==="\r")this.pos++;else if(this.src.startsWith("<!--",this.pos)){let Q=this.src.indexOf("-->",this.pos+4);if(Q<0)throw Error("unterminated comment");this.pos=Q+3}else if(this.src.startsWith("<?",this.pos)){let Q=this.src.indexOf("?>",this.pos+2);if(Q<0)throw Error("unterminated processing instruction");this.pos=Q+2}else if(this.src.startsWith("<!DOCTYPE",this.pos)){let Q=0;while(this.pos<this.src.length){let Z=this.src[this.pos++];if(Z==="[")Q++;else if(Z==="]")Q--;else if(Z===">"&&Q===0)break}}else break}}nextTag(){if(this.skip(),this.pos>=this.src.length)return null;if(this.src[this.pos]!=="<")throw Error(`expected '<' at ${this.pos}`);let $=this.src.indexOf(">",this.pos);if($<0)throw Error("unterminated tag");let Q=this.src.slice(this.pos+1,$);this.pos=$+1;let Z=Q.startsWith("/"),J=Q.endsWith("/");return{name:Q.replace(/^\/?/,"").replace(/\/$/,"").trim().split(/\s+/)[0],selfClose:J,isClose:Z}}readText(){let $=this.src.indexOf("<",this.pos),Q=$<0?this.src.slice(this.pos):this.src.slice(this.pos,$);return this.pos=$<0?this.src.length:$,Q.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&")}}function P8($,Q){let Z=(J)=>{let Y=$.nextTag();if(!Y||!Y.isClose||Y.name!==J)throw Error(`expected </${J}>`)};switch(Q){case"true":case"false":throw Error(`<${Q}> must be self-closing`);case"string":case"key":{let J=$.readText();return Z(Q),J}case"integer":{let J=$.readText().trim();if(Z("integer"),/^-?\d+$/.test(J)&&Math.abs(Number(J))<=Number.MAX_SAFE_INTEGER)return Number(J);return BigInt(J)}case"real":{let J=Number($.readText().trim());return Z("real"),J}case"data":{let J=zZ($.readText());return Z("data"),J}case"date":{let J=new Date($.readText().trim());return Z("date"),J}case"array":{let J=[];while(!0){let Y=$.nextTag();if(!Y)throw Error("unterminated <array>");if(Y.isClose&&Y.name==="array")return J;J.push(Y.selfClose?T8(Y.name):P8($,Y.name))}}case"dict":{let J={};while(!0){let Y=$.nextTag();if(!Y)throw Error("unterminated <dict>");if(Y.isClose&&Y.name==="dict")return J;if(Y.name!=="key")throw Error(`expected <key>, got <${Y.name}>`);let X=$.readText();Z("key");let G=$.nextTag();if(!G)throw Error("unterminated <dict>");J[X]=G.selfClose?T8(G.name):P8($,G.name)}}default:throw Error(`unknown plist tag <${Q}>`)}}function T8($){if($==="true")return!0;if($==="false")return!1;if($==="string")return"";if($==="data")return new Uint8Array(0);if($==="array")return[];if($==="dict")return{};throw Error(`self-closing <${$}/> not supported`)}function C4($){let Q=typeof $==="string"?$:new TextDecoder().decode($),Z=new d6(Q);while(!0){let Y=Z.nextTag();if(!Y)throw Error("no <plist> root");if(Y.name==="plist"&&!Y.isClose)break}let J=Z.nextTag();if(!J)throw Error("empty plist");return J.selfClose?T8(J.name):P8(Z,J.name)}function U0($,Q,Z){let J=0;for(let Y=0;Y<Z;Y++)J=J*256+$[Q+Y];return J}function HZ($){if($.length<41)throw Error("bplist too short");let Q=new TextDecoder().decode($.slice(0,8));if(Q!=="bplist00")throw Error(`bad magic: ${Q}`);let Z=$.length-32,J=$[Z+6],Y=$[Z+7],X=U0($,Z+8,8),G=U0($,Z+16,8),H=U0($,Z+24,8),V=Array(X);for(let B=0;B<X;B++)V[B]=U0($,H+B*J,J);function W(B){return U0($,B,Y)}function z(B){let M=V[B],N=$[M],j=N>>4,R=N&15;function x(A){if(R!==15)return{len:R,next:A};let D=$[A];if((D&240)!==16)throw Error("expected int marker for length");let U=1<<(D&15);return{len:U0($,A+1,U),next:A+1+U}}switch(j){case 0:if(R===0)return null;if(R===8)return!1;if(R===9)return!0;if(R===15)return null;throw Error(`unknown singleton ${R}`);case 1:{let A=1<<R,D=U0($,M+1,A);if(A===8&&D>Number.MAX_SAFE_INTEGER)return BigInt(D);return D}case 2:{let A=1<<R,D=new DataView($.buffer,$.byteOffset+M+1,A);return A===4?D.getFloat32(0,!1):D.getFloat64(0,!1)}case 3:{let D=new DataView($.buffer,$.byteOffset+M+1,8).getFloat64(0,!1);return new Date(Date.UTC(2001,0,1)+D*1000)}case 4:{let{len:A,next:D}=x(M+1);return $.slice(D,D+A)}case 5:{let{len:A,next:D}=x(M+1);return new TextDecoder("ascii").decode($.slice(D,D+A))}case 6:{let{len:A,next:D}=x(M+1),U=$.slice(D,D+A*2),C=new Uint8Array(U.length);for(let E=0;E<U.length;E+=2)C[E]=U[E+1],C[E+1]=U[E];return new TextDecoder("utf-16le").decode(C)}case 10:{let{len:A,next:D}=x(M+1),U=[];for(let C=0;C<A;C++)U.push(z(W(D+C*Y)));return U}case 13:{let{len:A,next:D}=x(M+1),U={};for(let C=0;C<A;C++){let E=z(W(D+C*Y)),F=z(W(D+(A+C)*Y));if(typeof E!=="string")throw Error(`non-string dict key: ${typeof E}`);U[E]=F}return U}default:throw Error(`unknown bplist marker 0x${N.toString(16)} at ${M}`)}}return z(G)}function MZ($){if($.length>=8){if(new TextDecoder().decode($.slice(0,8))==="bplist00")return HZ($)}return C4($)}class D4{chunks=[];size=0;waiters=[];closed=!1;closeErr=null;push($){if($.length===0)return;this.chunks.push($),this.size+=$.length,this.drain()}close($){this.closed=!0,this.closeErr=$??null;for(let Q of this.waiters)Q.reject($??Error("stream closed"));this.waiters=[]}read($){return new Promise((Q,Z)=>{if(this.closed&&this.size<$){Z(this.closeErr??Error("stream closed"));return}this.waiters.push({n:$,resolve:Q,reject:Z}),this.drain()})}drain(){while(this.waiters.length>0&&this.waiters[0].n<=this.size){let $=this.waiters.shift(),Q=new Uint8Array($.n),Z=0;while(Z<$.n){let J=this.chunks[0],Y=$.n-Z;if(J.length<=Y)Q.set(J,Z),Z+=J.length,this.chunks.shift();else Q.set(J.subarray(0,Y),Z),this.chunks[0]=J.subarray(Y),Z+=Y}this.size-=$.n,$.resolve(Q)}}}function y8($,Q){let Z=(X)=>{Q.push(new Uint8Array(X.buffer,X.byteOffset,X.byteLength))},J=()=>Q.close(),Y=(X)=>Q.close(X);return $.on("data",Z),$.on("close",J),$.on("error",Y),()=>{$.off("data",Z),$.off("close",J),$.off("error",Y)}}async function k8(){let $=new D4;return new Promise((Q,Z)=>{let J=m6.createConnection({path:_Z}),Y=(X)=>{$.close(X),Z(X)};J.once("error",Y),J.once("connect",()=>{J.off("error",Y);let X=y8(J,$);Q({socket:J,stream:$,detach:X})})})}async function BZ($){let Q=await $.read(4),Z=new DataView(Q.buffer,Q.byteOffset,4).getUint32(0,!0);return(await $.read(Z-4)).slice(12)}function LZ($,Q,Z){let J=16+Z.length,Y=new Uint8Array(16),X=new DataView(Y.buffer);X.setUint32(0,J,!0),X.setUint32(4,FZ,!0),X.setUint32(8,NZ,!0),X.setUint32(12,Q,!0),$.write(Y),$.write(Z)}async function f8($,Q,Z,J){let Y=S8({ClientVersionString:"inspect-webkit-1.0",ProgName:"inspect-webkit",kLibUSBMuxVersion:3,...J});LZ($,Z,Y);let X=await BZ(Q);return C4(X)}async function i6(){let{socket:$,stream:Q}=await k8();try{return(await f8($,Q,1,{MessageType:"ListDevices"})).DeviceList??[]}finally{$.end()}}async function n6($){let{socket:Q,stream:Z}=await k8();try{let Y=(await f8(Q,Z,1,{MessageType:"ReadPairRecord",PairRecordID:$})).PairRecordData;if(!Y)throw Error(`no pair record for ${$} — pair the device first (open Finder/iTunes, tap "Trust")`);return C4(Y)}finally{Q.end()}}async function v6($,Q){let{socket:Z,stream:J,detach:Y}=await k8(),X=(Q&255)<<8|Q>>8&255,G=await f8(Z,J,1,{MessageType:"Connect",DeviceID:$,PortNumber:X});if(G.MessageType!=="Result"||G.Number!==0){Z.end();let H=G.Number??"?";throw Error(`Connect to device ${$} port ${Q} failed (code ${H})`)}return{socket:Z,stream:J,detach:Y}}async function a6(){let $=UZ("lsof",["-U"],{stdio:["ignore","pipe","ignore"]});if($.status!==0||!$.stdout)return[];let Q=$.stdout.toString("utf8"),Z=new Map;for(let J of Q.split(`
14
+ `)){if(!/com\.apple\.webinspectord_sim\.socket\b/.test(J))continue;let Y=J.split(/\s+/),X=Number(Y[1]),G=Y[Y.length-1];if(G)Z.set(G,X)}return Array.from(Z,([J,Y])=>({socketPath:J,pid:Y}))}async function r6($){let Q=new D4;return new Promise((Z,J)=>{let Y=o6.createConnection({path:$}),X=(G)=>{Q.close(G),J(G)};Y.once("error",X),Y.once("connect",()=>{Y.off("error",X),y8(Y,Q),Z({socket:Y,stream:Q})})})}async function O8($){let Q=await $.read(4),Z=new DataView(Q.buffer,Q.byteOffset,4).getUint32(0,!1),J=await $.read(Z);return C4(J)}function A8($,Q){let Z=S8({Label:"inspect-webkit",...Q}),J=new Uint8Array(4);new DataView(J.buffer).setUint32(0,Z.length,!1),$.write(J),$.write(Z)}function j8($,Q){if($.Error)throw Error(`lockdown ${Q} error: ${String($.Error)}`);if($.Request!==Q)throw Error(`lockdown expected Request=${Q}, got ${String($.Request)}`)}function h6($,Q,Z,J){return new Promise((Y,X)=>{Q();let G=new D4,H=t6.connect({socket:$,cert:Buffer.from(Z.HostCertificate),key:Buffer.from(Z.HostPrivateKey),ca:Buffer.from(Z.RootCertificate),rejectUnauthorized:!1}),V=(W)=>{Q0(`${J} tls error:`,W),G.close(W),X(W)};H.once("error",V),H.once("secureConnect",()=>{Q0(`${J} tls handshake complete`),H.off("error",V);let W=y8(H,G);Y({socket:H,stream:G,detach:W})})})}class P4{socket;stream;pair;udid;deviceID;detach;constructor($,Q,Z,J,Y,X){this.socket=$,this.stream=Q,this.pair=Z,this.udid=J,this.deviceID=Y,this.detach=X}static async open($,Q){Q0("connecting usbmux tunnel to lockdown port",b6);let{socket:Z,stream:J,detach:Y}=await v6($.DeviceID,b6),X=new P4(Z,J,Q,$.Properties.SerialNumber,$.DeviceID,Y);Q0("sending QueryType"),A8(Z,{Request:"QueryType"});let G=await O8(J);if(Q0("QueryType reply:",G),j8(G,"QueryType"),G.Type!=="com.apple.mobile.lockdown")throw Error(`unexpected lockdown Type: ${String(G.Type)}`);return X}async startSession(){Q0("StartSession with HostID",this.pair.HostID),A8(this.socket,{Request:"StartSession",HostID:this.pair.HostID,SystemBUID:this.pair.SystemBUID});let $=await O8(this.stream);if(Q0("StartSession reply:",$),j8($,"StartSession"),$.EnableSessionSSL){Q0("upgrading to TLS");let Q=await h6(this.socket,this.detach,this.pair,"lockdown");this.socket=Q.socket,this.stream=Q.stream,this.detach=Q.detach,Q0("TLS upgrade complete")}}async startService($){Q0("StartService",$),A8(this.socket,{Request:"StartService",Service:$});let Q=await O8(this.stream);return Q0("StartService reply:",Q),j8(Q,"StartService"),{port:Q.Port,enableServiceSSL:Boolean(Q.EnableServiceSSL),service:$}}async connectService($){Q0("connecting service tunnel to port",$.port,"ssl=",$.enableServiceSSL);let{socket:Q,stream:Z,detach:J}=await v6(this.deviceID,$.port);if(!$.enableServiceSSL)return{socket:Q,stream:Z};let Y=await h6(Q,J,this.pair,"service");return{socket:Y.socket,stream:Y.stream}}close(){this.socket.end()}}async function OZ($){let Q=await $.read(4),Z=new DataView(Q.buffer,Q.byteOffset,4).getUint32(0,!1),J=await $.read(Z);return MZ(J)}function AZ($,Q){let Z=S8(Q),J=new Uint8Array(4);new DataView(J.buffer).setUint32(0,Z.length,!1),$.write(J),$.write(Z)}function jZ(){let $=crypto.getRandomValues(new Uint8Array(16));$[6]=$[6]&15|64,$[8]=$[8]&63|128;let Q=Array.from($,(Z)=>Z.toString(16).padStart(2,"0")).join("");return`${Q.slice(0,8)}-${Q.slice(8,12)}-${Q.slice(12,16)}-${Q.slice(16,20)}-${Q.slice(20)}`}class s0{socket;stream;connectionId=jZ();subscribers=new Set;reading;constructor($,Q){this.socket=$,this.stream=Q,this.reading=(async()=>{try{while(!Q.closed){let Z=await OZ(Q);for(let J of[...this.subscribers])try{J(Z)}catch{}}}catch{}})()}subscribe($){return this.subscribers.add($),()=>this.subscribers.delete($)}waitFor($,Q=5000){return new Promise((Z,J)=>{let Y=setTimeout(()=>{X(),J(Error(`timeout waiting for ${$} after ${Q}ms`))},Q),X=this.subscribe((G)=>{if(G.__selector===$)clearTimeout(Y),X(),Z(G)})})}send($,Q){AZ(this.socket,{__selector:$,__argument:{WIRConnectionIdentifierKey:this.connectionId,...Q}})}async reportIdentifier(){this.send("_rpc_reportIdentifier:",{})}async listApplications(){this.send("_rpc_getConnectedApplications:",{});let $=await this.waitFor("_rpc_reportConnectedApplicationList:",3000).catch(()=>null);if(!$)return[];let Z=$.__argument.WIRApplicationDictionaryKey??{},J=[];for(let[Y,X]of Object.entries(Z)){let G=X;J.push({appId:Y,bundleId:G.WIRApplicationBundleIdentifierKey,name:G.WIRApplicationNameKey,isProxy:Boolean(G.WIRIsApplicationProxyKey),isActive:Boolean(G.WIRIsApplicationActiveKey),hostAppId:G.WIRHostApplicationIdentifierKey})}return J}async getListing($){this.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:$});let Q=await this.waitFor("_rpc_applicationSentListing:",3000).catch(()=>null);if(!Q)return[];let J=Q.__argument.WIRListingKey??{},Y=[];for(let X of Object.values(J)){let G=X;Y.push({pageId:Number(G.WIRPageIdentifierKey??0),title:G.WIRTitleKey??"",url:G.WIRURLKey??"",type:G.WIRTypeKey??""})}return Y}get connection(){return this.connectionId}forwardSocketSetup($,Q,Z){this.send("_rpc_forwardSocketSetup:",{WIRApplicationIdentifierKey:$,WIRPageIdentifierKey:Q,WIRSenderKey:Z,WIRAutomaticallyPause:!1})}forwardSocketData($,Q,Z,J){this.send("_rpc_forwardSocketData:",{WIRApplicationIdentifierKey:$,WIRPageIdentifierKey:Q,WIRSenderKey:Z,WIRSocketDataKey:J})}forwardDidClose($,Q,Z){this.send("_rpc_forwardDidClose:",{WIRApplicationIdentifierKey:$,WIRPageIdentifierKey:Q,WIRSenderKey:Z})}onMessage($){return this.subscribe($)}close(){this.socket.end()}}class j4{ws;wi;appId;pageId;senderKey;filters=new Map;toolRequestMap=new Map;adapterRequestMap=new Map;requestId=0;innerTargetId=null;wrappedAckIds=new Set;outgoingQueue=[];sawAnyTargetCreated=!1;constructor($,Q,Z,J,Y){this.ws=$,this.wi=Q,this.appId=Z,this.pageId=J,this.senderKey=Y}addMessageFilter($,Q){let Z=this.filters.get($);if(!Z)this.filters.set($,Z=[]);Z.push(Q)}callTarget($,Q={}){return new Promise((Z,J)=>{let Y=--this.requestId;this.adapterRequestMap.set(Y,{resolve:Z,reject:J}),this.sendRaw(JSON.stringify({id:Y,method:$,params:Q}))})}fireEventToTools($,Q){this.sendToTools(JSON.stringify({method:$,params:Q}))}fireResultToTools($,Q){this.sendToTools(JSON.stringify({id:$,result:Q}))}fireErrorToTools($,Q){this.sendToTools(JSON.stringify({id:$,error:{code:Q.code??-32000,message:Q.message}}))}replyEmpty($){if(typeof $.id==="number")this.fireResultToTools($.id,{});return Promise.resolve(null)}async onMessageFromTools($){let Q;try{Q=JSON.parse($)}catch{return}if(typeof Q.method==="string"&&typeof Q.id==="number")this.toolRequestMap.set(Q.id,Q.method);let Z=`tools::${Q.method}`,J=this.filters.get(Z),Y=Q;if(J)for(let X of J){if(!Y)break;Y=await X(Y)}if(Y)this.sendRaw(JSON.stringify(Y))}async onMessageFromTarget($){let Q;try{Q=JSON.parse($)}catch{return}if(Q.method==="Target.targetCreated"){this.sawAnyTargetCreated=!0;let X=Q.params?.targetInfo;if(X?.type==="page"&&!this.innerTargetId)this.innerTargetId=X.targetId,this.flushQueue();return}if(Q.method==="Target.didCommitProvisionalTarget"){let X=Q.params?.newTargetId;if(typeof X==="string")this.innerTargetId=X;return}if(Q.method==="Target.targetDestroyed")return;if(Q.method==="Target.dispatchMessageFromTarget"){let X=Q.params?.message;if(typeof X==="string")return this.onMessageFromTarget(X);return}if(typeof Q.id==="number"&&this.wrappedAckIds.has(Q.id)){this.wrappedAckIds.delete(Q.id);return}if(typeof Q.id==="number"){let X=this.adapterRequestMap.get(Q.id);if(X){if(this.adapterRequestMap.delete(Q.id),"error"in Q&&Q.error)X.reject(Q.error);else X.resolve(Q.result??{});return}let G=this.toolRequestMap.get(Q.id);if(G){this.toolRequestMap.delete(Q.id);let H=`target::${G}`;if("error"in Q&&this.filters.has("target::error"))H="target::error";let V=this.filters.get(H);if(!V)return this.sendToTools($);let W=Q;for(let z of V){if(!W)break;W=await z(W)}if(W)this.sendToTools(JSON.stringify(W));return}return this.sendToTools($)}let Z=`target::${Q.method}`,J=this.filters.get(Z);if(!J)return this.sendToTools($);let Y=Q;for(let X of J){if(!Y)break;Y=await X(Y)}if(Y)this.sendToTools(JSON.stringify(Y))}sendRaw($){let Q=null;try{Q=JSON.parse($)}catch{}let Z=Q&&typeof Q.method==="string"&&Q.method.startsWith("Target.");if(this.innerTargetId&&Q&&!Z){if(typeof Q.id==="number")this.wrappedAckIds.add(Q.id);let J={id:Q.id,method:"Target.sendMessageToTarget",params:{id:Q.id,message:$,targetId:this.innerTargetId}};this.writeFrame(JSON.stringify(J));return}if(!this.innerTargetId&&Q&&!Z){if(this.outgoingQueue.push($),this.outgoingQueue.length===1)setTimeout(()=>{if(!this.innerTargetId&&!this.sawAnyTargetCreated&&this.outgoingQueue.length>0){let J=this.outgoingQueue;this.outgoingQueue=[];for(let Y of J)this.writeFrame(Y)}},250);return}this.writeFrame($)}flushQueue(){if(this.outgoingQueue.length===0)return;let $=this.outgoingQueue;this.outgoingQueue=[];for(let Q of $)this.sendRaw(Q)}writeFrame($){this.wi.forwardSocketData(this.appId,this.pageId,this.senderKey,new TextEncoder().encode($))}sendToTools($){if(this.ws.readyState===1)this.ws.send($)}}function CZ(){return{lastScriptEval:{value:""},pageExecCtx:{id:0,isPage:!1},lastConsoleApiCalled:{value:null}}}function v($,Q,Z){return $.fireResultToTools(Q.id,Z),Promise.resolve(null)}function DZ($,Q){$.addMessageFilter("tools::Debugger.canSetScriptSource",(Z)=>v($,Z,{result:!1})),$.addMessageFilter("tools::Debugger.setBlackboxPatterns",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Debugger.setAsyncCallStackDepth",(Z)=>v($,Z,{})),$.addMessageFilter("target::Debugger.enable",(Z)=>{return $.callTarget("Debugger.setBreakpointsActive",{active:!0}).catch(()=>{}),$.callTarget("Debugger.setPauseOnDebuggerStatements",{enabled:!0}).catch(()=>{}),Promise.resolve(Z)}),$.addMessageFilter("target::Debugger.scriptParsed",(Z)=>{if(Z.params?.scriptId)Q.lastScriptEval.value=String(Z.params.scriptId);return Promise.resolve(Z)}),$.addMessageFilter("tools::Debugger.setBreakpoint",(Z)=>{let J=Z.params??{};return Z.params={location:J.location,options:J.condition?{condition:J.condition}:{}},Promise.resolve(Z)}),$.addMessageFilter("tools::Debugger.setBreakpointByUrl",(Z)=>{let J=Z.params??{};return Z.params={lineNumber:J.lineNumber,url:J.url,urlRegex:J.urlRegex,columnNumber:J.columnNumber,options:J.condition?{condition:J.condition}:{}},Promise.resolve(Z)});for(let Z of["removeBreakpoint","continueToLocation","stepInto","stepOver","stepOut","resume","pause","getScriptSource","evaluateOnCallFrame"])$.addMessageFilter(`tools::Debugger.${Z}`,(J)=>Promise.resolve(J));$.addMessageFilter("target::Debugger.paused",(Z)=>{let J=Z.params?.callFrames;if(Array.isArray(J))for(let Y of J){if(Y.functionName==null&&typeof Y.name==="string")Y.functionName=Y.name;if(!Y.location&&Y.sourceCodeLocation)Y.location={scriptId:String(Y.sourceCodeLocation.scriptId??""),lineNumber:Y.sourceCodeLocation.lineNumber??0,columnNumber:Y.sourceCodeLocation.columnNumber??0};if(Array.isArray(Y.scopeChain)){for(let X of Y.scopeChain)if(!X.object&&X.value)X.object=X.value}}return Promise.resolve(Z)}),$.addMessageFilter("tools::Debugger.setBlackboxedRanges",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Debugger.setSkipAllPauses",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Debugger.setPauseOnExceptions",(Z)=>{return Promise.resolve(Z)})}function PZ($,Q){$.addMessageFilter("target::Runtime.executionContextCreated",(Z)=>{let J=Z.params?.context;if(J){if(!J.origin)J.origin=J.name??"";let Y=Number(J.id),X=!!(J.isPageContext||J.type==="normal");if(Number.isFinite(Y)&&Y>0){if(!Q.pageExecCtx.id||X&&!Q.pageExecCtx.isPage)Q.pageExecCtx.id=Y,Q.pageExecCtx.isPage=X}if(J.frameId)J.auxData={frameId:J.frameId,isDefault:!0},delete J.frameId}return Promise.resolve(Z)}),$.addMessageFilter("tools::Runtime.evaluate",(Z)=>{let J=Z.params;if(!J)return Promise.resolve(Z);if(J.throwOnSideEffect)return v($,Z,{result:{type:"object",subtype:"error",className:"EvalError",description:"EvalError: Possible side-effect in debug-evaluate"},exceptionDetails:{exceptionId:0,text:"EvalError: Possible side-effect in debug-evaluate",lineNumber:0,columnNumber:0,url:"",exception:{type:"object",subtype:"error",className:"EvalError",description:"EvalError: Possible side-effect in debug-evaluate"}}});if("silent"in J)J.doNotPauseOnExceptionsAndMuteConsole=!!J.silent,delete J.silent;if("userGesture"in J)J.emulateUserGesture=!!J.userGesture,delete J.userGesture;return Promise.resolve(Z)}),$.addMessageFilter("target::Runtime.evaluate",(Z)=>{let J=Z.result;if(J?.wasThrown){if(J.result)J.result.subtype="error";J.exceptionDetails={exceptionId:0,text:J.result?.description??"Uncaught",url:"",scriptId:Q.lastScriptEval.value,lineNumber:0,columnNumber:0,stackTrace:{callFrames:[{functionName:"",scriptId:Q.lastScriptEval.value,url:"",lineNumber:0,columnNumber:0}]},exception:J.result}}return Promise.resolve(Z)}),$.addMessageFilter("target::Runtime.getProperties",(Z)=>{let J=Z.result;if(!J)return Promise.resolve(Z);let Y=Array.isArray(J.result)?J.result:Array.isArray(J.properties)?J.properties:null;if(Y)J.result=Y.filter((X)=>X.isOwn||X.nativeGetter).map((X)=>({...X,isOwn:!0})),delete J.properties;if(Array.isArray(J.internalProperties))J.internalProperties=J.internalProperties.map((X)=>({name:X.name,value:X.value}));return Promise.resolve(Z)}),$.addMessageFilter("tools::Runtime.compileScript",(Z)=>v($,Z,{scriptId:null,exceptionDetails:null})),$.addMessageFilter("tools::Runtime.globalLexicalScopeNames",(Z)=>v($,Z,{names:[]})),$.addMessageFilter("tools::Runtime.terminateExecution",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Runtime.getIsolateId",(Z)=>v($,Z,{id:"inspect-webkit"})),$.addMessageFilter("tools::Runtime.getHeapUsage",(Z)=>v($,Z,{usedSize:0,totalSize:0})),$.addMessageFilter("tools::Runtime.discardConsoleEntries",(Z)=>{return Z.method="Console.clearMessages",Promise.resolve(Z)}),$.addMessageFilter("tools::Runtime.runIfWaitingForDebugger",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Runtime.setAsyncCallStackDepth",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Runtime.releaseObject",(Z)=>Promise.resolve(Z)),$.addMessageFilter("tools::Runtime.releaseObjectGroup",(Z)=>Promise.resolve(Z)),$.addMessageFilter("tools::Runtime.callFunctionOn",(Z)=>Promise.resolve(Z)),$.addMessageFilter("tools::Runtime.queryObjects",(Z)=>Promise.resolve(Z)),$.addMessageFilter("target::Debugger.globalObjectCleared",(Z)=>{return $.fireEventToTools("Runtime.executionContextsCleared",{}),Promise.resolve(null)})}function TZ($,Q){$.addMessageFilter("tools::Log.startViolationsReport",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Log.stopViolationsReport",(Z)=>v($,Z,{})),$.addMessageFilter("tools::Log.clear",(Z)=>{return Z.method="Console.clearMessages",Promise.resolve(Z)}),$.addMessageFilter("tools::Log.disable",(Z)=>{return Z.method="Console.disable",Promise.resolve(Z)}),$.addMessageFilter("tools::Log.enable",(Z)=>{return Z.method="Console.enable",Promise.resolve(Z)}),$.addMessageFilter("tools::Runtime.enable",(Z)=>{return $.callTarget("Console.enable",{}).catch(()=>{}),Promise.resolve(Z)}),$.addMessageFilter("target::Console.messageAdded",(Z)=>{let J=Z.params?.message??{},X=(Array.isArray(J.stackTrace)?J.stackTrace:Array.isArray(J.stackTrace?.callFrames)?J.stackTrace.callFrames:[]).map((V)=>({functionName:V.functionName??"",scriptId:V.scriptId??"",url:V.url??"",lineNumber:Number(V.lineNumber??0),columnNumber:Number(V.columnNumber??0)})),G=X.length?{callFrames:X}:void 0,H=Date.now();if(J.source==="console-api"){let V=J.type==="log"?J.level??"log":J.type??"log",W=EZ(V),z=Array.isArray(J.parameters)&&J.parameters.length>0?J.parameters:[{type:"string",value:String(J.text??"")}],B={type:W,args:z,executionContextId:Q.pageExecCtx.id||1,timestamp:H,stackTrace:G};return Q.lastConsoleApiCalled.value=B,$.fireEventToTools("Runtime.consoleAPICalled",B),Promise.resolve(null)}if(J.source==="javascript"&&J.level==="error")return $.fireEventToTools("Runtime.exceptionThrown",{timestamp:H,exceptionDetails:{exceptionId:0,text:String(J.text??"Uncaught"),lineNumber:Number(J.line??0),columnNumber:Number(J.column??0),scriptId:Q.lastScriptEval.value,url:J.url,stackTrace:G,exception:{type:"string",value:String(J.text??"")}}}),Promise.resolve(null);return $.fireEventToTools("Log.entryAdded",{entry:{source:J.source??"other",level:IZ(J.level??J.type??"log"),text:String(J.text??""),timestamp:H,url:J.url,lineNumber:J.line,stackTrace:G,networkRequestId:J.networkRequestId}}),Promise.resolve(null)}),$.addMessageFilter("target::Console.messagesCleared",()=>{return $.fireEventToTools("Log.entriesCleared",{}),$.fireEventToTools("Runtime.consoleAPICalled",{type:"clear",args:[],executionContextId:Q.pageExecCtx.id||1,timestamp:Date.now()}),Q.lastConsoleApiCalled.value=null,Promise.resolve(null)}),$.addMessageFilter("target::Console.messageRepeatCountUpdated",()=>{let Z=Q.lastConsoleApiCalled.value;if(Z)$.fireEventToTools("Runtime.consoleAPICalled",{...Z,timestamp:Date.now()});return Promise.resolve(null)}),$.addMessageFilter("target::Console.heapSnapshot",()=>Promise.resolve(null))}function EZ($){switch($){case"warn":case"warning":return"warning";case"log":case"info":case"error":case"debug":case"dir":case"dirxml":case"table":case"trace":case"clear":case"assert":case"profile":case"profileEnd":case"count":case"timeEnd":case"startGroup":case"startGroupCollapsed":case"endGroup":return $;default:return"log"}}function IZ($){switch($){case"log":case"debug":return"verbose";case"info":return"info";case"warn":case"warning":return"warning";case"error":return"error";default:return"info"}}function xZ($){let Q=new Set;$.addMessageFilter("tools::DOM.enable",(Z)=>v($,Z,{})),$.addMessageFilter("tools::DOM.setInspectMode",(Z)=>{if(Z.method="DOM.setInspectModeEnabled",Z.params)Z.params.enabled=Z.params.mode==="searchForNode",delete Z.params.mode,delete Z.params.highlightConfig;return Promise.resolve(Z)}),$.addMessageFilter("tools::DOM.setInspectedNode",(Z)=>{return Z.method="Console.addInspectedNode",Promise.resolve(Z)}),$.addMessageFilter("tools::DOM.performSearch",(Z)=>{if(Z.params)Z.params={query:Z.params.query,caseSensitive:!!Z.params.caseSensitive};return Promise.resolve(Z)}),$.addMessageFilter("target::DOM.performSearch",(Z)=>{let J=Z.result?.searchId;if(typeof J==="string")Q.add(J);return Promise.resolve(Z)}),$.addMessageFilter("tools::DOM.discardSearchResults",(Z)=>{let J=Z.params?.searchId;if(typeof J==="string")Q.delete(J);return Promise.resolve(Z)}),$.addMessageFilter("tools::DOM.pushNodesByBackendIdsToFrontend",async(Z)=>{let J=Z.params?.backendNodeIds??[],Y=await Promise.all(J.map((X)=>$.callTarget("DOM.pushNodeByBackendIdToFrontend",{backendNodeId:X}).then((G)=>G.nodeId).catch(()=>X)));return $.fireResultToTools(Z.id,{nodeIds:Y}),null}),$.addMessageFilter("tools::DOM.getBoxModel",(Z)=>{return $.callTarget("DOM.highlightNode",{highlightConfig:{showInfo:!0,contentColor:{r:111,g:168,b:220,a:0.66},paddingColor:{r:147,g:196,b:125,a:0.55},borderColor:{r:255,g:229,b:153,a:0.66},marginColor:{r:246,g:178,b:107,a:0.66}},nodeId:Z.params?.nodeId}).catch(()=>{}),Promise.resolve(null)}),$.addMessageFilter("tools::DOM.getNodeForLocation",async(Z)=>{try{let Y=(await $.callTarget("Runtime.evaluate",{expression:`document.elementFromPoint(${Z.params?.x},${Z.params?.y})`})).result?.objectId;if(!Y)return $.fireResultToTools(Z.id,{nodeId:0}),null;let X=await $.callTarget("DOM.requestNode",{objectId:Y});$.fireResultToTools(Z.id,{nodeId:X.nodeId,backendNodeId:X.nodeId})}catch(J){$.fireErrorToTools(Z.id,{message:J?.message??String(J)})}return null}),$.addMessageFilter("tools::DOM.resolveNode",(Z)=>{if(Z.params&&Z.params.objectGroup===void 0)delete Z.params.objectGroup;return Promise.resolve(Z)})}function qZ($){$.addMessageFilter("tools::DOMDebugger.getEventListeners",async(Q)=>{try{let Z=await $.callTarget("DOM.requestNode",{objectId:Q.params?.objectId}),Y=((await $.callTarget("DOM.getEventListenersForNode",{nodeId:Z.nodeId,objectGroup:"event-listeners-panel"})).listeners??[]).map((X)=>({type:X.type,useCapture:!!X.useCapture,passive:!!X.passive,once:!!X.once,location:X.location,handler:X.handler}));$.fireResultToTools(Q.id,{listeners:Y})}catch(Z){$.fireErrorToTools(Q.id,{message:Z?.message??String(Z)})}return null}),$.addMessageFilter("tools::DOMDebugger.setXHRBreakpoint",(Q)=>v($,Q,{})),$.addMessageFilter("tools::DOMDebugger.removeXHRBreakpoint",(Q)=>v($,Q,{})),$.addMessageFilter("tools::DOMDebugger.setEventListenerBreakpoint",(Q)=>v($,Q,{})),$.addMessageFilter("tools::DOMDebugger.removeEventListenerBreakpoint",(Q)=>v($,Q,{}))}function wZ($,Q){$.addMessageFilter("tools::Page.setOverlayMessage",(X)=>{return X.method="Debugger.setOverlayMessage",Promise.resolve(X)}),$.addMessageFilter("tools::Page.configureOverlay",(X)=>{return X.method="Debugger.setOverlayMessage",Promise.resolve(X)}),$.addMessageFilter("tools::Page.getNavigationHistory",async(X)=>{try{let G=await $.callTarget("Runtime.evaluate",{expression:"window.location.href"}),H=await $.callTarget("Runtime.evaluate",{expression:"document.title"});$.fireResultToTools(X.id,{currentIndex:0,entries:[{id:0,url:G.result?.value??"",userTypedURL:G.result?.value??"",title:H.result?.value??"",transitionType:"link"}]})}catch(G){$.fireErrorToTools(X.id,{message:G?.message??String(G)})}return null}),$.addMessageFilter("target::Page.frameNavigated",(X)=>{return e6(X.params?.frame),Promise.resolve(X)}),$.addMessageFilter("target::Page.getResourceTree",(X)=>{return E8(X.result?.frameTree),Promise.resolve(X)}),$.addMessageFilter("tools::Page.getFrameTree",async(X)=>{if(typeof X.id!=="number")return null;try{let G=await $.callTarget("Page.getResourceTree",{}),H=$$(G?.frameTree);E8(H),$.fireResultToTools(X.id,{frameTree:H})}catch(G){$.fireErrorToTools(X.id,{message:G?.message??String(G)})}return null}),$.addMessageFilter("tools::Page.createIsolatedWorld",(X)=>{if(typeof X.id!=="number")return Promise.resolve(null);return v($,X,{executionContextId:Q.pageExecCtx.id||1})});let Z=1;$.addMessageFilter("tools::Page.addScriptToEvaluateOnNewDocument",(X)=>v($,X,{identifier:`pptr-${Z++}`})),$.addMessageFilter("tools::WebMCP.enable",(X)=>v($,X,{})),$.addMessageFilter("tools::WebMCP.disable",(X)=>v($,X,{})),$.addMessageFilter("tools::Page.captureScreenshot",(X)=>{return $.fireErrorToTools(X.id,{message:"Page.captureScreenshot not supported by Safari"}),Promise.resolve(null)}),$.addMessageFilter("tools::Page.startScreencast",(X)=>v($,X,{})),$.addMessageFilter("tools::Page.stopScreencast",(X)=>v($,X,{})),$.addMessageFilter("tools::Page.screencastFrameAck",(X)=>v($,X,{})),$.addMessageFilter("tools::Page.setLifecycleEventsEnabled",(X)=>v($,X,{}));let J="",Y="0.1";$.addMessageFilter("target::Page.frameNavigated",(X)=>{let G=X.params?.frame;if(G)Y=G.id??Y,J=G.loaderId??J,$.fireEventToTools("Page.frameStartedLoading",{frameId:Y}),$.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"init",timestamp:0}),$.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"commit",timestamp:0});return Promise.resolve(X)}),$.addMessageFilter("target::Page.domContentEventFired",(X)=>{return $.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"DOMContentLoaded",timestamp:X.params?.timestamp??0}),Promise.resolve(X)}),$.addMessageFilter("target::Page.loadEventFired",(X)=>{return $.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"load",timestamp:X.params?.timestamp??0}),$.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"networkAlmostIdle",timestamp:X.params?.timestamp??0}),$.fireEventToTools("Page.lifecycleEvent",{frameId:Y,loaderId:J,name:"networkIdle",timestamp:X.params?.timestamp??0}),$.fireEventToTools("Page.frameStoppedLoading",{frameId:Y}),Promise.resolve(X)})}function e6($){if(!$)return;if(!$.securityOrigin)try{$.securityOrigin=new URL($.url??"").origin}catch{$.securityOrigin="://"}if(!$.mimeType)$.mimeType="text/html"}function E8($){if(!$)return;if(e6($.frame),Array.isArray($.childFrames))$.childFrames.forEach(E8)}function $$($){if(!$)return $;let Q={frame:$.frame};if(Array.isArray($.childFrames))Q.childFrames=$.childFrames.map($$);return Q}function SZ($){$.addMessageFilter("tools::Overlay.enable",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Overlay.disable",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Overlay.highlightNode",(Q)=>{let Z=Q.params??{};return Q.method="DOM.highlightNode",Q.params={highlightConfig:Z.highlightConfig,nodeId:Z.nodeId,objectId:Z.objectId},Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.highlightFrame",(Q)=>{return Q.method="DOM.highlightFrame",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.highlightQuad",(Q)=>{return Q.method="DOM.highlightQuad",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.highlightRect",(Q)=>{return Q.method="DOM.highlightRect",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.hideHighlight",(Q)=>{return Q.method="DOM.hideHighlight",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.setShowPaintRects",(Q)=>{return Q.method="Page.setShowPaintRects",Promise.resolve(Q)}),$.addMessageFilter("tools::Overlay.setInspectMode",(Q)=>{let Z=Q.params??{};return Q.method="DOM.setInspectModeEnabled",Q.params={enabled:typeof Z.mode==="string"&&Z.mode!=="none",highlightConfig:Z.highlightConfig},Promise.resolve(Q)})}function yZ($){$.addMessageFilter("tools::Emulation.canEmulate",(Q)=>v($,Q,{result:!0})),$.addMessageFilter("tools::Emulation.setTouchEmulationEnabled",(Q)=>{return Q.method="Page.setTouchEmulationEnabled",Promise.resolve(Q)}),$.addMessageFilter("tools::Emulation.setScriptExecutionDisabled",(Q)=>{return Q.method="Page.setScriptExecutionDisabled",Promise.resolve(Q)}),$.addMessageFilter("tools::Emulation.setEmulatedMedia",(Q)=>{return Q.method="Page.setEmulatedMedia",Promise.resolve(Q)}),$.addMessageFilter("tools::Rendering.setShowPaintRects",(Q)=>{return Q.method="Page.setShowPaintRects",Promise.resolve(Q)}),$.addMessageFilter("tools::Emulation.setDeviceMetricsOverride",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Emulation.clearDeviceMetricsOverride",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Emulation.setUserAgentOverride",(Q)=>{let Z=Q.params?.userAgent??"";return Q.method="Page.overrideUserAgent",Q.params={value:Z},Promise.resolve(Q)}),$.addMessageFilter("tools::Emulation.setFocusEmulationEnabled",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Emulation.setDefaultBackgroundColorOverride",(Q)=>v($,Q,{}))}function R8($){switch($){case"Document":case"Image":case"Font":case"Script":case"XHR":case"Fetch":case"Ping":case"WebSocket":return $;case"StyleSheet":return"Stylesheet";default:return"Other"}}function pZ($){if(!$)return $;return{...uZ,...$,hasPostData:$.postData!=null}}function cZ($){if(!$)return $;let Q=0,Z=$.headers??{},J=Z["Content-Length"]??Z["content-length"];if(J!=null)Q=Number(J)||0;return{...gZ,...$,fromDiskCache:$.source==="disk-cache",fromServiceWorker:$.source==="service-worker",encodedDataLength:Q}}function lZ($,Q){if(!$)return;for(let[Z,J]of Object.entries(Q))if(Z in $&&!(J in $))$[J]=$[Z],delete $[Z]}function mZ($){let Q=typeof $.size==="number"?$.size:($.name?.length??0)+($.value?.length??0);return{name:$.name,value:$.value,domain:$.domain,path:$.path,expires:$.expires??-1,size:Q,httpOnly:!!$.httpOnly,secure:!!$.secure,session:!!$.session,...$.sameSite?{sameSite:$.sameSite}:{}}}function dZ($,Q){let Z=new Map,J=1e4,Y=1024,X=4194304,G=Promise.resolve(),H=(W)=>{let z=G.then(W,W);return G=z.catch(()=>{}),z};for(let[W,z]of Object.entries(kZ))$.addMessageFilter(`tools::${W}`,(B)=>{return B.method=z,Promise.resolve(B)});$.addMessageFilter("tools::Network.setCacheDisabled",(W)=>{if(W.params&&"cacheDisabled"in W.params)W.params={disabled:!!W.params.cacheDisabled};return Promise.resolve(W)});let V=async(W)=>{try{let z=await $.callTarget("Page.getCookies",{}),B=Array.isArray(z?.cookies)?z.cookies.map(mZ):[];$.fireResultToTools(W.id,{cookies:B})}catch(z){$.fireErrorToTools(W.id,{message:z?.message??String(z)})}return null};$.addMessageFilter("tools::Network.getCookies",V),$.addMessageFilter("tools::Network.getAllCookies",V),$.addMessageFilter("tools::Network.setCookie",(W)=>{let z=W.params??{};return W.method="Page.setCookie",W.params={cookie:{name:z.name,value:z.value,domain:z.domain??"",path:z.path??"/",expires:z.expires??-1,session:!1,httpOnly:!!z.httpOnly,secure:!!z.secure,sameSite:z.sameSite??"None"}},Promise.resolve(W)}),$.addMessageFilter("tools::Network.setCookies",async(W)=>{let z=Array.isArray(W.params?.cookies)?W.params.cookies:[];try{await Promise.all(z.map((B)=>$.callTarget("Page.setCookie",{cookie:B}))),$.fireResultToTools(W.id,{})}catch(B){$.fireErrorToTools(W.id,{message:B?.message??String(B)})}return null}),$.addMessageFilter("tools::Network.deleteCookies",(W)=>{let z=W.params??{},B=z.url??`https://${(z.domain??"").replace(/^\./,"")}${z.path??"/"}`;return W.method="Page.deleteCookie",W.params={cookieName:z.name,url:B},Promise.resolve(W)}),$.addMessageFilter("tools::Network.deleteCookie",(W)=>{return W.method="Page.deleteCookie",Promise.resolve(W)}),$.addMessageFilter("tools::Network.clearBrowserCookies",async(W)=>{try{let z=await $.callTarget("Page.getCookies",{}),B=Array.isArray(z?.cookies)?z.cookies:[];await Promise.all(B.map((M)=>$.callTarget("Page.deleteCookie",{cookieName:M.name,url:`${M.secure?"https":"http"}://${(M.domain??"").replace(/^\./,"")}${M.path??"/"}`}).catch(()=>{}))),$.fireResultToTools(W.id,{})}catch(z){$.fireErrorToTools(W.id,{message:z?.message??String(z)})}return null}),$.addMessageFilter("tools::Network.canEmulateNetworkConditions",(W)=>v($,W,{result:!1})),$.addMessageFilter("tools::Network.setExtraHTTPHeaders",(W)=>v($,W,{})),$.addMessageFilter("tools::Network.setBlockedURLs",(W)=>v($,W,{})),$.addMessageFilter("tools::Network.emulateNetworkConditions",(W)=>v($,W,{})),$.addMessageFilter("tools::Network.setMonitoringXHREnabled",(W)=>v($,W,{})),$.addMessageFilter("tools::Network.getResponseBody",async(W)=>{let z=W.params?.requestId,B=typeof z==="string"?Z.get(z):void 0;if(!B)return $.fireErrorToTools(W.id,{message:"Network.getResponseBody: requestId not tracked (only requests observed via requestWillBeSent are recoverable)"}),null;if(B.method&&B.method.toUpperCase()!=="GET")return $.fireErrorToTools(W.id,{message:`Network.getResponseBody: cannot recover ${B.method} response body (bridge re-fetch is GET-only)`}),null;if(B.bytes===0)return $.fireResultToTools(W.id,{body:"",base64Encoded:!1}),null;return H(async()=>{try{let M={};for(let[E,F]of Object.entries(B.headers??{})){let K=E.toLowerCase();if(K==="if-none-match"||K==="if-modified-since"||K==="host"||K==="connection")continue;M[E]=String(F)}let N=new AbortController,j=setTimeout(()=>N.abort(),1e4),R;try{R=await fetch(B.url,{headers:M,redirect:"follow",signal:N.signal})}finally{clearTimeout(j)}let x=Number(R.headers.get("content-length")??"");if(Number.isFinite(x)&&x>4194304){$.fireErrorToTools(W.id,{message:`Network.getResponseBody: response too large (${x} bytes > ${"4194304"}) — skipped re-fetch`});try{await R.arrayBuffer()}catch{}return}let A=Buffer.from(await R.arrayBuffer());if(A.byteLength>4194304){$.fireErrorToTools(W.id,{message:`Network.getResponseBody: response too large (${A.byteLength} bytes > 4194304)`});return}let D=((R.headers.get("content-type")??"").split(";")[0]??"").trim(),U=/^(text\/|image\/svg\+xml|application\/(json|xml|javascript|ecmascript|x-www-form-urlencoded))$/.test(D),C=U?A.toString("utf8"):A.toString("base64");$.fireResultToTools(W.id,{body:C,base64Encoded:!U})}catch(M){$.fireErrorToTools(W.id,{message:`Network.getResponseBody re-fetch failed: ${M?.message??String(M)}`})}}),null});for(let[W,z]of Object.entries(fZ))$.addMessageFilter(`target::${W}`,(B)=>{return lZ(B.params,z),Promise.resolve(B)});$.addMessageFilter("target::Network.requestWillBeSent",(W)=>{let z=W.params;if(z){if(Object.assign(z,{...vZ,...z}),z.request=pZ(z.request),z.type=R8(z.type),typeof z.requestId==="string"&&typeof z.request?.url==="string"){if(Z.size>=1024){let B=Z.keys().next().value;if(B!==void 0)Z.delete(B)}Z.set(z.requestId,{url:z.request.url,method:z.request.method,headers:z.request.headers,frameId:z.frameId,bytes:0})}}return Promise.resolve(W)}),$.addMessageFilter("target::Network.responseReceived",(W)=>{let z=W.params;if(z)Object.assign(z,{...bZ,...z}),z.response=cZ(z.response),z.type=R8(z.type);return Promise.resolve(W)}),$.addMessageFilter("target::Network.loadingFinished",(W)=>{let z=W.params;if(z){let B=z.metrics?.responseBodyBytesReceived;if(typeof B==="number"&&z.encodedDataLength==null)z.encodedDataLength=B;if(Object.assign(z,{...hZ,...z}),typeof z.requestId==="string"&&typeof B==="number"){let M=Z.get(z.requestId);if(M&&B>M.bytes)M.bytes=B}}return Promise.resolve(W)}),$.addMessageFilter("target::Network.dataReceived",(W)=>{let z=W.params;if(z&&typeof z.requestId==="string"){let B=Z.get(z.requestId);if(B){let M=Number(z.dataLength)||0;B.bytes+=M}}return Promise.resolve(W)}),$.addMessageFilter("target::Network.loadingFailed",(W)=>{let z=W.params;if(z){if(z.type=R8(z.type),!("canceled"in z))z.canceled=!1}return Promise.resolve(W)}),$.addMessageFilter("target::Network.requestServedFromMemoryCache",(W)=>{if(W.method="Network.requestServedFromCache",W.params)W.params={requestId:W.params.requestId};return Promise.resolve(W)}),$.addMessageFilter("tools::Network.loadNetworkResource",async(W)=>{let z=W.params??{};if(!Q)return $.fireResultToTools(W.id,{resource:{success:!1,netError:1,netErrorName:"ERR_NOT_IMPLEMENTED"}}),null;try{let B=await $.callTarget("Network.loadResource",{frameId:z.frameId,url:z.url}),M=!!B?.content&&(B?.status??0)>=200&&(B?.status??0)<300,N;if(M)N=`network-resource:${z.frameId??""}:${z.url}`,Q.set(N,String(B.content));$.fireResultToTools(W.id,{resource:{success:M,stream:N,httpStatusCode:B?.status,headers:B?.headers,mimeType:B?.mimeType}})}catch(B){$.fireResultToTools(W.id,{resource:{success:!1,netError:2,netErrorName:B?.message??"ERR_FAILED"}})}return null})}function iZ($){for(let Q of["Target.setAutoAttach","Target.setDiscoverTargets","Target.setRemoteLocations"])$.addMessageFilter(`tools::${Q}`,(Z)=>v($,Z,{}))}function nZ($){$.addMessageFilter("target::Inspector.inspect",async(Q)=>{let Z=Q.params?.object?.objectId;if(typeof Z!=="string")return null;try{let Y=(await $.callTarget("DOM.requestNode",{objectId:Z}))?.nodeId;if(typeof Y==="number")$.fireEventToTools("Overlay.inspectNodeRequested",{backendNodeId:Y}),$.fireEventToTools("DOM.inspectNodeRequested",{backendNodeId:Y})}catch{}return null})}function aZ($){if(!$)return $;let Q=$.origin==="inspector";return{styleSheetId:$.styleSheetId,frameId:$.frameId,sourceURL:$.sourceURL??"",origin:$.origin==="author"?"regular":$.origin,title:$.title??"",disabled:!!$.disabled,isInline:!!$.isInline,startLine:$.startLine??0,startColumn:$.startColumn??0,isMutable:Q,isConstructed:Q,length:$.length??0,endLine:$.endLine??0,endColumn:$.endColumn??0,hasSourceURL:!!$.sourceURL}}function I8($){if(!$)return $;let Q={origin:$.origin==="author"?"regular":$.origin,style:O0($.style),selectorList:sZ($.selectorList)};if($.ruleId?.styleSheetId)Q.styleSheetId=$.ruleId.styleSheetId;if(Array.isArray($.groupings))Q.media=$.groupings.map((Z)=>({text:Z.text,sourceURL:Z.sourceURL,source:tZ[Z.type]}));return Q}function Q2($){let Q={lastNodeId:0},Z=new Map;async function J(Y,X){let G=Z.get(Y);if(!G)try{if(G=(await $.callTarget("CSS.getStyleSheet",{styleSheetId:Y}))?.styleSheet,G)Z.set(Y,G)}catch{}let H=G?.rules??[];for(let V=0;V<H.length;V++)if(oZ(H[V]?.style?.range,X))return{styleSheetId:Y,ordinal:V};return{styleSheetId:Y,ordinal:0}}$.addMessageFilter("tools::CSS.enable",(Y)=>{return $.fireResultToTools(Y.id,{}),Promise.resolve(null)}),$.addMessageFilter("target::CSS.styleSheetAdded",(Y)=>{if(Y.params?.header)Y.params.header=aZ(Y.params.header);return Promise.resolve(Y)}),$.addMessageFilter("target::CSS.getInlineStylesForNode",(Y)=>{let X=Y.result;if(X)Y.result={inlineStyle:O0(X.inlineStyle),attributesStyle:O0(X.attributesStyle)};return Promise.resolve(Y)}),$.addMessageFilter("tools::CSS.getMatchedStylesForNode",async(Y)=>{if(typeof Y.params?.nodeId==="number")Q.lastNodeId=Y.params.nodeId;try{let[X,G]=await Promise.all([$.callTarget("CSS.getInlineStylesForNode",{nodeId:Y.params.nodeId}),$.callTarget("CSS.getMatchedStylesForNode",{nodeId:Y.params.nodeId,includePseudo:!0,includeInherited:!0})]);$.fireResultToTools(Y.id,{inlineStyle:O0(X?.inlineStyle),attributesStyle:O0(X?.attributesStyle),matchedCSSRules:v8(G?.matchedCSSRules),pseudoElements:eZ(G?.pseudoElements),inherited:$2(G?.inherited),cssKeyframesRules:[]})}catch(X){$.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null}),$.addMessageFilter("tools::CSS.setStyleTexts",async(Y)=>{let X=Y.params?.edits??[],G=[];for(let H of X)try{let V=await J(H.styleSheetId,H.range),W=await $.callTarget("CSS.setStyleText",{styleId:V,text:H.text});G.push(O0(W?.style)),Z.delete(H.styleSheetId),$.fireEventToTools("CSS.styleSheetChanged",{styleSheetId:H.styleSheetId})}catch{G.push(null)}return $.fireResultToTools(Y.id,{styles:G}),null}),$.addMessageFilter("tools::CSS.setRuleSelector",async(Y)=>{let{styleSheetId:X,range:G,selector:H}=Y.params??{};try{let V=await J(X,G);Y.params={ruleId:V,selector:H}}catch(V){return $.fireErrorToTools(Y.id,{message:V?.message??String(V)}),null}return Y}),$.addMessageFilter("target::CSS.setRuleSelector",(Y)=>{if(Y.result?.rule)Y.result={rule:I8(Y.result.rule)};return Promise.resolve(Y)}),$.addMessageFilter("tools::CSS.addRule",async(Y)=>{let X=Y.params??{},G=String(X.ruleText??"").trim().replace(/\{\s*\}\s*$/,"").trim();try{let H=await $.callTarget("CSS.addRule",{contextNodeId:Q.lastNodeId,styleSheetId:X.styleSheetId,selector:G});$.fireResultToTools(Y.id,{rule:I8(H?.rule)})}catch(H){$.fireErrorToTools(Y.id,{message:H?.message??String(H)})}return null})}function J2($){$.addMessageFilter("tools::Browser.getVersion",(Q)=>v($,Q,Z2)),$.addMessageFilter("tools::Browser.getWindowForTarget",(Q)=>v($,Q,{windowId:1,bounds:{}})),$.addMessageFilter("tools::Browser.setWindowBounds",(Q)=>v($,Q,{}))}function X2($){switch($){case"mousePressed":return"mousedown";case"mouseReleased":return"click";case"mouseMoved":return"mousemove";default:return null}}function G2($){let Q=async(Z)=>{let J=Z.params??{},Y=X2(J.type);if(!Y)return $.fireResultToTools(Z.id,{}),null;let X=Y==="click"?["mousedown","click","mouseup"]:[Y];try{for(let G of X){let H={x:Number(J.x)||0,y:Number(J.y)||0,modifiers:Number(J.modifiers)||0,button:J.button??"none",type:G},V=`(${Y2}, __sd_simulate(${JSON.stringify(H)}))`;await $.callTarget("Runtime.evaluate",{expression:V})}$.fireResultToTools(Z.id,{})}catch(G){$.fireErrorToTools(Z.id,{message:G?.message??String(G)})}return null};$.addMessageFilter("tools::Input.dispatchMouseEvent",Q),$.addMessageFilter("tools::Input.emulateTouchFromMouseEvent",Q),$.addMessageFilter("tools::Input.setIgnoreInputEvents",(Z)=>{return $.fireResultToTools(Z.id,{}),Promise.resolve(null)})}function V2($){let Q=new Map;return $.addMessageFilter("tools::IO.read",(Z)=>{let J=String(Z.params?.handle??""),Y=Number(Z.params?.size)||K2,X=Number(Z.params?.offset)||0,G=Q.get(J);if(G===void 0)return $.fireResultToTools(Z.id,{data:"",eof:!0,base64Encoded:!1}),Promise.resolve(null);let H=G.slice(X,X+Y),V=X+Y>=G.length;return $.fireResultToTools(Z.id,{data:H,eof:V,base64Encoded:!1}),Promise.resolve(null)}),$.addMessageFilter("tools::IO.close",(Z)=>{return Q.delete(String(Z.params?.handle??"")),$.fireResultToTools(Z.id,{}),Promise.resolve(null)}),Q}function W2($){$.addMessageFilter("tools::Accessibility.enable",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Accessibility.disable",(Q)=>v($,Q,{})),$.addMessageFilter("tools::Accessibility.getPartialAXTree",async(Q)=>{let Z=Q.params??{},J=Z.nodeId??Z.backendNodeId;if(typeof J!=="number")return $.fireResultToTools(Q.id,{nodes:[]}),null;try{let X=(await $.callTarget("DOM.getAccessibilityPropertiesForNode",{nodeId:J}))?.properties??{},G={nodeId:String(J),ignored:Boolean(X.ignored),role:X.role?{type:"role",value:String(X.role)}:void 0,name:X.label?{type:"computedString",value:String(X.label)}:void 0,backendDOMNodeId:J,childIds:[],properties:[]};$.fireResultToTools(Q.id,{nodes:[G]})}catch(Y){$.fireResultToTools(Q.id,{nodes:[]})}return null})}function M2($){for(let[Z,J]of Object.entries(H2))$.addMessageFilter(`tools::${Z}`,(Y)=>v($,Y,J));for(let Z of z2)for(let J of["enable","disable"])$.addMessageFilter(`tools::${Z}.${J}`,(Y)=>v($,Y,{}));let Q=[["Autofill.setAddresses",{}],["Storage.getStorageKey",{storageKey:""}],["Storage.trackCacheStorageForOrigin",{}],["Storage.trackIndexedDBForOrigin",{}],["Storage.untrackCacheStorageForOrigin",{}],["Storage.untrackIndexedDBForOrigin",{}],["Storage.getCookies",{cookies:[]}],["ServiceWorker.unregister",{}]];for(let[Z,J]of Q)$.addMessageFilter(`tools::${Z}`,(Y)=>v($,Y,J))}function x8($){let Q=CZ();M2($);let Z=V2($);DZ($,Q),PZ($,Q),TZ($,Q),xZ($),qZ($),wZ($,Q),SZ($),yZ($),dZ($,Z),iZ($),nZ($),Q2($),J2($),G2($),W2($)}function Z$($){let Q=`${$.reqHost}/devtools/page/${$.id}`;return{description:$.description,devtoolsFrontendUrl:`devtools://devtools/bundled/inspector.html?ws=${Q}`,devtoolsFrontendUrlCompat:`devtools://devtools/bundled/inspector.html?ws=${Q}`,id:$.id,title:$.title,type:$.type,url:$.url,webSocketDebuggerUrl:`ws://${Q}`,faviconUrl:""}}function f0($){return $.replace(/[&<>"']/g,(Q)=>F2[Q])}function J$($){return Q$.createServer((Q,Z)=>{let J=new URL(Q.url??"/","http://placeholder"),Y=Q.headers.host??"";if(J.pathname==="/json/version"){let X=typeof $.version==="function"?$.version(Y):$.version;return C8(Z,X)}if(J.pathname==="/json"||J.pathname==="/json/list")return C8(Z,$.listTargets(Y));if(J.pathname==="/json/protocol")return C8(Z,{});if(J.pathname==="/")return N2(Z,$,Y);Z.writeHead(404,{"content-type":"text/plain"}),Z.end("not found")})}function C8($,Q,Z=200){$.writeHead(Z,{"content-type":"application/json; charset=utf-8"}),$.end(JSON.stringify(Q))}function N2($,Q,Z){let J=Q.listTargets(Z),Y=J.map((V)=>`<li><strong>${f0(V.title||V.url||V.id)}</strong><br><small>${f0(V.url)}</small><br><small>copy &amp; paste into Chrome's address bar:</small><br><code style="user-select:all">${f0(V.devtoolsFrontendUrl)}</code></li>`).join(""),X=`inspect-webkit${Q.brand?` (${Q.brand})`:""}`,G=Q.indexNote??'<p>Open <code style="display:inline;padding:1px 4px">chrome://inspect</code> → <em>Configure…</em> → add '+`<code style="display:inline;padding:1px 4px">${f0(Z)}</code>.</p>`,H=`<!doctype html><meta charset=utf-8><title>${f0(X)}</title><style>body{font:14px -apple-system,sans-serif;max-width:760px;margin:2em auto;padding:0 1em}code{display:block;background:#f4f4f4;padding:.5em;border-radius:4px;word-break:break-all;margin:.4em 0 1em}li{margin-bottom:1.5em;list-style:none}</style><h1>${f0(X)} — ${J.length} target${J.length===1?"":"s"}</h1>`+G+`<ul>${Y}</ul>`+'<hr><p>JSON: <a href="/json/list">/json/list</a> · <a href="/json/version">/json/version</a></p>';$.writeHead(200,{"content-type":"text/html; charset=utf-8"}),$.end(H)}function Y$($,Q,Z){return new Promise((J,Y)=>{$.once("error",(G)=>{if(G.port==null)G.port=Z;if(G.host==null)G.host=Q;Y(G)});let X=Q==="localhost"||Q==="::1"||Q==="127.0.0.1"?"::":Q;$.listen({port:Z,host:X,ipv6Only:!1},()=>{$.off("error",Y),J()})})}function X$($){let Q=!process.env.NO_COLOR&&process.stderr.isTTY===!0,Z=(V,W)=>Q?`\x1B[${V}m${W}\x1B[0m`:W,J=(V)=>Z("1",V),Y=(V)=>Z("2",V),X=(V)=>Z("36",V),G=(V)=>Z("32",V),H=`http://${$.host}:${$.port}`;console.error(`${G("●")} ${J(`${$.brand} CDP`)} ${X(H)}`),console.error(` ${Y("chrome")} chrome://inspect → ${$.host}:${$.port}`),console.error(` ${Y("vscode")} "type": "chrome", "port": ${$.port}`)}function _2($,Q){let Z=!!process.env.INSPECT_WEBKIT_DEBUG,J=new Map,Y=!1,X=!1,G=!1,H=new Map,V=null;function W(U){if($.readyState!==1)return;let C=JSON.stringify(U);if(Z)console.error(`[browser] tools<< ${C.slice(0,240)}`);$.send(C)}function z(U,C){let E={method:U,params:C};if(V)E.sessionId=V;W(E)}function B(U,C){return{targetId:U.targetId,type:U.type==="page"?"page":U.type||"other",title:U.title||"",url:U.url||"",attached:C,canAccessOpener:!1,browserContextId:"default"}}function M(U){for(let C of J.values())if(C.targetId===U)return!0;return!1}function N(U,C){let E=Q.listEntries().find((L)=>L.targetId===U);if(!E)return null;let F=crypto.randomUUID(),K=(L)=>{let P;try{P=JSON.parse(L)}catch{return}P.sessionId=F,W(P)},_=Q.createPageSession(U,K);if(!_)return null;return J.set(F,{handle:_,targetId:U}),z("Target.attachedToTarget",{sessionId:F,targetInfo:B(E,!0),waitingForDebugger:C}),{sessionId:F,entry:E}}function j(U){let C=J.get(U);if(!C)return!1;try{C.handle.close()}catch{}return J.delete(U),z("Target.detachedFromTarget",{sessionId:U,targetId:C.targetId}),!0}function R(){let U=Q.listEntries(),C=new Set;for(let E of U){C.add(E.targetId);let F=H.get(E.targetId);if(!F){if(H.set(E.targetId,E),Y)z("Target.targetCreated",{targetInfo:B(E,M(E.targetId))});if(X&&!M(E.targetId))N(E.targetId,G)}else if(F.title!==E.title||F.url!==E.url){if(H.set(E.targetId,E),Y)z("Target.targetInfoChanged",{targetInfo:B(E,M(E.targetId))})}}for(let E of[...H.keys()]){if(C.has(E))continue;H.delete(E);for(let[F,K]of J)if(K.targetId===E)j(F);if(Y)z("Target.targetDestroyed",{targetId:E})}}let x=setInterval(R,Q.refreshMs??1000);function A(U,C){if(U)C.sessionId=U;W(C)}function D(U,C){let{id:E,method:F}=U,K=U.params??{};switch(F){case"Browser.getVersion":return A(C,{id:E,result:{protocolVersion:"1.3",product:"Safari/inspect-webkit",revision:"@",userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit",jsVersion:""}});case"Target.attachToBrowserTarget":{if(!V)V=crypto.randomUUID();return A(C,{id:E,result:{sessionId:V}})}case"Target.setDiscoverTargets":{if(Y=!!K.discover,Y)for(let _ of Q.listEntries())H.set(_.targetId,_),z("Target.targetCreated",{targetInfo:B(_,M(_.targetId))});if(typeof E==="number")A(C,{id:E,result:{}});return}case"Target.getTargets":{let _=Q.listEntries().map((L)=>B(L,M(L.targetId)));return A(C,{id:E,result:{targetInfos:_}})}case"Target.setAutoAttach":{if(X=!!K.autoAttach,G=!!K.waitForDebuggerOnStart,X){for(let _ of Q.listEntries())if(!M(_.targetId))N(_.targetId,G)}if(typeof E==="number")A(C,{id:E,result:{}});return}case"Target.attachToTarget":{for(let[L,P]of J)if(P.targetId===K.targetId){if(typeof E==="number")A(C,{id:E,result:{sessionId:L}});return}let _=N(K.targetId,!1);if(!_){if(typeof E==="number")A(C,{id:E,error:{code:-32000,message:"No target with given id found"}});return}if(typeof E==="number")A(C,{id:E,result:{sessionId:_.sessionId}});return}case"Target.detachFromTarget":{if(j(K.sessionId),typeof E==="number")A(C,{id:E,result:{}});return}case"Target.sendMessageToTarget":{let _=J.get(K.sessionId);if(_)_.handle.onMessageFromTools(K.message);if(typeof E==="number")A(C,{id:E,result:{}});return}case"Target.setRemoteLocations":case"Target.exposeDevToolsProtocol":case"Target.activateTarget":case"Target.closeTarget":if(typeof E==="number")A(C,{id:E,result:{}});return;case"Target.getBrowserContexts":{if(typeof E==="number")A(C,{id:E,result:{browserContextIds:["default"]}});return}}if(typeof E==="number")A(C,{id:E,error:{code:-32601,message:`Browser-level method '${F??"?"}' not implemented`}})}$.on("message",(U,C)=>{let E=C?new TextDecoder().decode(U):U.toString();if(Z)console.error(`[browser] tools>> ${E.slice(0,240)}`);let F;try{F=JSON.parse(E)}catch{return}if(typeof F.sessionId==="string"){if(F.sessionId===V){let L={...F};return delete L.sessionId,D(L,F.sessionId)}let K=J.get(F.sessionId);if(!K){if(typeof F.id==="number")W({id:F.id,sessionId:F.sessionId,error:{code:-32000,message:`Session ${F.sessionId} not found`}});return}let _={...F};delete _.sessionId,K.handle.onMessageFromTools(JSON.stringify(_));return}D(F,void 0)}),$.on("close",()=>{clearInterval(x);for(let[,U]of J)try{U.handle.close()}catch{}J.clear()})}async function L2($={}){let Q=$.port??9222,Z=$.host??"localhost",J=await U2();if(J.length===0)console.error("warn: no inspectable sources found (no devices, no simulators)."),console.error(" The server will still run; new targets will appear if you start one.");let Y=new Map,X=new WeakMap,G=new Map;for(let F of J)G.set(F,[]),X.set(F,new Set),F.wi.subscribe((K)=>{let{__selector:_,__argument:L}=K;if(!_||!L)return;if(_==="_rpc_reportConnectedApplicationList:"){let P=L.WIRApplicationDictionaryKey??{},T=Object.entries(P).map(([S,y])=>({appId:S,bundleId:y.WIRApplicationBundleIdentifierKey,name:y.WIRApplicationNameKey??y.WIRApplicationBundleIdentifierKey??S,isProxy:Boolean(y.WIRIsApplicationProxyKey)}));G.set(F,T);let q=X.get(F);for(let S of T){if(S.isProxy||q.has(S.appId))continue;q.add(S.appId),F.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:S.appId})}}else if(_==="_rpc_applicationConnected:"){let P=L,T=G.get(F)??[];if(!T.find((q)=>q.appId===P.WIRApplicationIdentifierKey))T.push({appId:P.WIRApplicationIdentifierKey,bundleId:P.WIRApplicationBundleIdentifierKey,name:P.WIRApplicationNameKey??P.WIRApplicationBundleIdentifierKey,isProxy:Boolean(P.WIRIsApplicationProxyKey)}),G.set(F,T);if(!P.WIRIsApplicationProxyKey){let q=X.get(F);if(!q.has(P.WIRApplicationIdentifierKey))q.add(P.WIRApplicationIdentifierKey),F.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:P.WIRApplicationIdentifierKey})}}else if(_==="_rpc_applicationDisconnected:"){let P=G.get(F)??[];G.set(F,P.filter((T)=>T.appId!==L.WIRApplicationIdentifierKey)),Y.delete(`${F.id}:${L.WIRApplicationIdentifierKey}`)}else if(_==="_rpc_applicationSentListing:"){let P=L.WIRApplicationIdentifierKey,T=L.WIRListingKey??{},q=new Map;for(let[S,y]of Object.entries(T))q.set(S,{pageId:Number(y.WIRPageIdentifierKey??0),title:y.WIRTitleKey??"",url:y.WIRURLKey??"",type:y.WIRTypeKey??"",connectionId:typeof y.WIRConnectionIdentifierKey==="string"?y.WIRConnectionIdentifierKey:null});Y.set(`${F.id}:${P}`,q)}}),F.wi.send("_rpc_reportIdentifier:",{}),F.wi.send("_rpc_getConnectedApplications:",{});let H=setInterval(()=>{for(let F of J){let K=G.get(F)??[];for(let _ of K){if(_.isProxy)continue;F.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:_.appId})}}},B2),V=new Map;function W(){let F=[];for(let K of J){let _=G.get(K)??[];for(let L of _){if(L.isProxy)continue;let P=Y.get(`${K.id}:${L.appId}`);if(!P)continue;for(let T of P.values()){let q=!!T.connectionId&&T.connectionId!==K.wi.connection;F.push({targetId:`${K.id}:${L.appId}:${T.pageId}`,source:K,appId:L.appId,appName:L.name,bundleId:L.bundleId,pageId:T.pageId,title:T.title,url:T.url,type:T.type,inUseByOtherInspector:q})}}}return F}let z=crypto.randomUUID(),B=J$({brand:"",version:(F)=>({Browser:"Safari/inspect-webkit","Protocol-Version":"1.3","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit","WebKit-Version":"605.1.15",webSocketDebuggerUrl:`ws://${F}/devtools/browser/${z}`}),listTargets:(F)=>W().map((K)=>Z$({reqHost:F,id:K.targetId,description:`${K.source.label}${K.bundleId?` (${K.bundleId})`:""}`,title:K.title||K.appName,url:/^https?:/i.test(K.url)?K.url:"about:blank",type:g6(K.type)}))}),M=new s6.default({noServer:!0}),N=`/devtools/browser/${z}`;B.on("upgrade",(F,K,_)=>{let L=new URL(F.url??"/","http://placeholder");if(console.error(`# ws upgrade: ${L.pathname}`),L.pathname===N){M.handleUpgrade(F,K,_,(T)=>{_2(T,{listEntries:()=>W().map((q)=>({targetId:q.targetId,type:g6(q.type),title:q.title||q.appName,url:q.url})),createPageSession:(q,S)=>{let y=W().find((k)=>k.targetId===q);if(!y)return null;return j(y,S)}})});return}if(!L.pathname.startsWith("/devtools/page/")){console.error(`# ws upgrade rejected: unknown path ${L.pathname}`),K.destroy();return}let P=decodeURIComponent(L.pathname.slice(15));M.handleUpgrade(F,K,_,(T)=>{E(T,P)})});function j(F,K){let _=crypto.randomUUID(),P=new j4({readyState:1,send:(S)=>K(S)},F.source.wi,F.appId,F.pageId,_);x8(P),V.set(_,P);let T=!!process.env.INSPECT_WEBKIT_DEBUG,q=F.source.wi.subscribe((S)=>{if(S.__selector!=="_rpc_applicationSentData:")return;let y=S.__argument;if(!y)return;if(y.WIRDestinationKey&&y.WIRDestinationKey!==_)return;if(y.WIRApplicationIdentifierKey!==F.appId)return;if(y.WIRPageIdentifierKey!==void 0&&Number(y.WIRPageIdentifierKey)!==F.pageId)return;let k=y.WIRMessageDataKey??y.WIRSocketDataKey;if(!k)return;let h=typeof k==="string"?k:new TextDecoder().decode(k);if(T)console.error(`[cdp] target>> ${h.slice(0,240)}`);P.onMessageFromTarget(h)});return F.source.wi.forwardSocketSetup(F.appId,F.pageId,_),console.error(`# devtools attached: ${F.source.label} :: ${F.appName} :: ${F.title||F.url}`),{onMessageFromTools(S){if(T)console.error(`[cdp] tools>> ${S.slice(0,300)}`);P.onMessageFromTools(S)},close(){q();try{P.wi.forwardDidClose(P.appId,P.pageId,P.senderKey)}catch{}V.delete(P.senderKey)}}}let R=new Map,x=8000;function A(F){let K=R.get(F);if(K)return K;let _=W().find((k)=>k.targetId===F);if(!_)return null;let L=crypto.randomUUID(),T=new j4({readyState:1,send:()=>{}},_.source.wi,_.appId,_.pageId,L);x8(T),V.set(L,T);let q=_.source.wi.subscribe((k)=>{if(k.__selector!=="_rpc_applicationSentData:")return;let h=k.__argument;if(!h)return;if(h.WIRDestinationKey&&h.WIRDestinationKey!==L)return;if(h.WIRApplicationIdentifierKey!==_.appId)return;if(h.WIRPageIdentifierKey!==void 0&&Number(h.WIRPageIdentifierKey)!==_.pageId)return;let c=h.WIRMessageDataKey??h.WIRSocketDataKey;if(!c)return;let I=typeof c==="string"?c:new TextDecoder().decode(c);T.onMessageFromTarget(I)});_.source.wi.forwardSocketSetup(_.appId,_.pageId,L);let S=Promise.race([T.callTarget("DOM.getDocument",{depth:0}).then((k)=>k?.root?.nodeId),new Promise((k,h)=>setTimeout(()=>h(Error("DOM.getDocument timeout")),5000))]),y={cdp:T,rootNodeIdPromise:S,idleTimer:null,close(){if(y.idleTimer)clearTimeout(y.idleTimer);q();try{T.wi.forwardDidClose(T.appId,T.pageId,T.senderKey)}catch{}V.delete(L),R.delete(F)}};return R.set(F,y),S.catch(()=>y.close()),y}function D(F){if(F.idleTimer)clearTimeout(F.idleTimer);F.idleTimer=setTimeout(()=>F.close(),x)}function U(F){if(F){R.get(F)?.close();return}for(let K of R.values())K.close()}async function C(F,K){let _=A(F);if(!_)return;D(_);try{if(K){let L=await _.rootNodeIdPromise;if(!L)return;await _.cdp.callTarget("DOM.highlightNode",{nodeId:L,highlightConfig:{showInfo:!1,contentColor:{r:111,g:168,b:220,a:0.55},paddingColor:{r:147,g:196,b:125,a:0},borderColor:{r:255,g:229,b:153,a:0},marginColor:{r:246,g:178,b:107,a:0}}})}else await _.cdp.callTarget("DOM.hideHighlight",{})}catch{_.close()}}function E(F,K){let _=W().find((q)=>q.targetId===K);if(!_){console.error(`# ws closed: unknown target ${K} (known: ${W().map((q)=>q.targetId).join(", ")||"none"})`),F.close(1011,`unknown target ${K}`);return}let L=j(_,(q)=>{if(F.readyState===1)F.send(q)}),P=!0;F.on("pong",()=>{P=!0});let T=setInterval(()=>{if(!P){try{F.terminate()}catch{}return}P=!1;try{F.ping()}catch{}},15000);F.on("message",(q,S)=>{let y=S?new TextDecoder().decode(q):q.toString();L.onMessageFromTools(y)}),F.on("close",()=>{clearInterval(T),L.close()})}return await Y$(B,Z,Q),X$({brand:"safari",host:Z,port:Q}),{stop(){clearInterval(H);for(let F of R.values())F.close();M.close(),B.close();for(let F of J)try{F.wi.close(),F.lockdown?.close()}catch{}},getTargets(){return W()},highlightTarget(F,K){return C(F,K)},releaseHighlight(F){U(F)}}}async function U2(){let[$,Q]=await Promise.all([O2(),j2()]);return[...$,...Q]}async function O2(){let $=[];try{$=await i6()}catch(Z){return console.error(`warn: usbmux: ${Z.message}`),[]}return(await Promise.all($.map(A2))).filter((Z)=>Z!==null)}async function A2($){try{let Q=await n6($.Properties.SerialNumber),Z=await P4.open($,Q);await Z.startSession();let J=await Z.startService("com.apple.webinspector"),{socket:Y,stream:X}=await Z.connectService(J),G=new s0(Y,X);return await G.reportIdentifier(),{kind:"device",id:`device:${$.Properties.SerialNumber}`,label:`device:${$.Properties.SerialNumber.slice(0,8)}`,wi:G,lockdown:Z}}catch(Q){return console.error(`warn: device ${$.Properties.SerialNumber}: ${Q.message}`),null}}async function j2(){let $=[];try{$=await a6()}catch(Z){return console.error(`warn: simulator discovery: ${Z.message}`),[]}return(await Promise.all($.map(R2))).filter((Z)=>Z!==null)}async function R2($){try{let{socket:Q,stream:Z}=await r6($.socketPath),J=new s0(Q,Z);return await J.reportIdentifier(),{kind:"simulator",id:`sim:${$.pid}`,label:`sim:${$.pid}`,wi:J}}catch(Q){return console.error(`warn: simulator ${$.socketPath}: ${Q.message}`),null}}function g6($){switch($){case"WIRTypeServiceWorker":return"service_worker";case"WIRTypeWorker":case"WIRTypeJavaScript":return"worker";default:return"page"}}class G${url;ws;handlers=new Set;openPromise;constructor($){this.url=$,this.ws=new u6($),this.ws.binaryType="nodebuffer",this.openPromise=new Promise((Q,Z)=>{this.ws.once("open",()=>Q()),this.ws.once("error",(J)=>Z(J))}),this.ws.on("message",(Q,Z)=>{let J=Z?new TextDecoder().decode(Q):Q.toString();for(let Y of this.handlers)Y(J)})}ready(){return this.openPromise}onFrame($){return this.handlers.add($),()=>this.handlers.delete($)}forwardSocketData($,Q,Z,J){if(this.ws.readyState!==u6.OPEN)return;this.ws.send(new TextDecoder().decode(J))}forwardDidClose($,Q,Z){}close(){try{this.ws.close()}catch{}}}async function C2($){let Q=$.port??9223,Z=$.host??"localhost",{upstreams:J}=$,Y=J$({brand:"bun",version:{Browser:"Bun/inspect-webkit","Protocol-Version":"1.3","User-Agent":"Bun (via inspect-webkit)","WebKit-Version":"605.1.15"},listTargets:(H)=>J.map((V)=>Z$({reqHost:H,id:encodeURIComponent(V.url),description:V.label??"bun",title:V.label??V.url,url:V.url,type:"node"}))}),X=new s6.default({noServer:!0});Y.on("upgrade",(H,V,W)=>{let z=new URL(H.url??"/","http://placeholder");if(!z.pathname.startsWith("/devtools/page/")){V.destroy();return}let B=decodeURIComponent(z.pathname.slice(15)),M=J.find((N)=>N.url===B);if(!M){V.destroy();return}X.handleUpgrade(H,V,W,(N)=>{G(N,M).catch((j)=>{console.error(`# bun attach failed: ${j.message}`);try{N.close(1011,j.message)}catch{}})})});async function G(H,V){let W=!!process.env.INSPECT_WEBKIT_DEBUG,z=new G$(V.url);await z.ready();let B=crypto.randomUUID(),M=new j4(H,z,"bun",0,B);x8(M);let N=z.onFrame((j)=>{if(W)console.error(`[bun] target>> ${j.slice(0,240)}`);M.onMessageFromTarget(j)});H.on("message",(j,R)=>{let x=R?new TextDecoder().decode(j):j.toString();if(W)console.error(`[bun] tools>> ${x.slice(0,300)}`);M.onMessageFromTools(x)}),H.on("close",()=>{N(),z.close()}),console.error(`# devtools attached: ${V.label??V.url}`)}return await Y$(Y,Z,Q),X$({brand:"bun",host:Z,port:Q}),{stop(){X.close(),Y.close()},getTargets(){return J.slice()}}}async function K$(){return i6()}async function D2(){let[$,Q]=await Promise.all([P2(),T2()]);return[...$.flat(),...Q.flat()]}async function P2(){let $=await K$();return Promise.all($.map(E2))}async function T2(){let $=await a6();return Promise.all($.map(I2))}async function E2($){let Q=null;try{return Q=await x2($),await V$(Q.client,{source:"device",udid:$.Properties.SerialNumber,deviceID:$.DeviceID})}catch(Z){return console.error(`warn: ${$.Properties.SerialNumber}: ${Z.message}`),[]}finally{Q?.client.close(),Q?.lockdown.close()}}async function I2($){let Q=null;try{let{socket:Z,stream:J}=await r6($.socketPath);return Q=new s0(Z,J),await Q.reportIdentifier(),await V$(Q,{source:"simulator",udid:`sim:${$.pid}`})}catch(Z){return console.error(`warn: simulator (${$.socketPath}): ${Z.message}`),[]}finally{Q?.close()}}async function x2($){let Q=await n6($.Properties.SerialNumber),Z=await P4.open($,Q);await Z.startSession();let J=await Z.startService("com.apple.webinspector"),{socket:Y,stream:X}=await Z.connectService(J),G=new s0(Y,X);return await G.reportIdentifier(),{client:G,lockdown:Z}}async function V$($,Q){let Z=(await $.listApplications()).filter((X)=>!X.isProxy),J=await Promise.all(Z.map((X)=>$.getListing(X.appId))),Y=[];for(let X=0;X<Z.length;X++){let G=Z[X];for(let H of J[X])Y.push({...Q,appId:G.appId,appName:G.name??G.bundleId??G.appId,bundleId:G.bundleId,pageId:H.pageId,title:H.title,url:H.url,type:H.type})}return Y}var r7,t7,k6,s7,e7,QZ,ZZ,H0=($,Q,Z)=>{var J=$!=null&&typeof $==="object";if(J){var Y=Q?QZ??=new WeakMap:ZZ??=new WeakMap,X=Y.get($);if(X)return X}Z=$!=null?r7(t7($)):{};let G=Q||!$||!$.__esModule?k6(Z,"default",{value:$,enumerable:!0}):Z;for(let H of s7($))if(!e7.call(G,H))k6(G,H,{get:$Z.bind($,H),enumerable:!0});if(J)Y.set($,G);return G},e=($,Q)=>()=>(Q||$((Q={exports:{}}).exports,Q),Q.exports),o,M0,R4,JZ,r0,t0,p6,c6,YZ,q8,w8,XZ,l6,GZ,KZ=`<?xml version="1.0" encoding="UTF-8"?>
15
15
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
16
16
  <plist version="1.0">
17
17
  `,VZ=`
@@ -31,27 +31,27 @@ function __sd_simulate(p){
31
31
  });
32
32
  el.dispatchEvent(ev);
33
33
  return true;
34
- }`,K2=65536,z2,H2,F2,B2=1500;var z$=a$(()=>{r7=Object.create,t7=Object.getPrototypeOf,k6=Object.defineProperty,s7=Object.getOwnPropertyNames,e7=Object.prototype.hasOwnProperty;o=a7(import.meta.url),H0=e(($,Q)=>{var Z=["nodebuffer","arraybuffer","fragments"],J=typeof Blob<"u";if(J)Z.push("blob");Q.exports={BINARY_TYPES:Z,CLOSE_TIMEOUT:30000,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:J,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}}),j4=e(($,Q)=>{var{EMPTY_BUFFER:Z}=H0(),J=Buffer[Symbol.species];function Y(W,z){if(W.length===0)return Z;if(W.length===1)return W[0];let B=Buffer.allocUnsafe(z),M=0;for(let N=0;N<W.length;N++){let j=W[N];B.set(j,M),M+=j.length}if(M<z)return new J(B.buffer,B.byteOffset,M);return B}function X(W,z,B,M,N){for(let j=0;j<N;j++)B[M+j]=W[j]^z[j&3]}function G(W,z){for(let B=0;B<W.length;B++)W[B]^=z[B&3]}function H(W){if(W.length===W.buffer.byteLength)return W.buffer;return W.buffer.slice(W.byteOffset,W.byteOffset+W.length)}function V(W){if(V.readOnly=!0,Buffer.isBuffer(W))return W;let z;if(W instanceof ArrayBuffer)z=new J(W);else if(ArrayBuffer.isView(W))z=new J(W.buffer,W.byteOffset,W.byteLength);else z=Buffer.from(W),V.readOnly=!1;return z}if(Q.exports={concat:Y,mask:X,toArrayBuffer:H,toBuffer:V,unmask:G},!process.env.WS_NO_BUFFER_UTIL)try{let W=(()=>{throw Error("Cannot require module bufferutil")})();Q.exports.mask=function(z,B,M,N,j){if(j<48)X(z,B,M,N,j);else W.mask(z,B,M,N,j)},Q.exports.unmask=function(z,B){if(z.length<32)G(z,B);else W.unmask(z,B)}}catch(W){}}),JZ=e(($,Q)=>{var Z=Symbol("kDone"),J=Symbol("kRun");class Y{constructor(X){this[Z]=()=>{this.pending--,this[J]()},this.concurrency=X||1/0,this.jobs=[],this.pending=0}add(X){this.jobs.push(X),this[J]()}[J](){if(this.pending===this.concurrency)return;if(this.jobs.length){let X=this.jobs.shift();this.pending++,X(this[Z])}}}Q.exports=Y}),r0=e(($,Q)=>{var Z=o("zlib"),J=j4(),Y=JZ(),{kStatusCode:X}=H0(),G=Buffer[Symbol.species],H=Buffer.from([0,0,255,255]),V=Symbol("permessage-deflate"),W=Symbol("total-length"),z=Symbol("callback"),B=Symbol("buffers"),M=Symbol("error"),N;class j{constructor(D){if(this._options=D||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!N){let U=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;N=new Y(U)}}static get extensionName(){return"permessage-deflate"}offer(){let D={};if(this._options.serverNoContextTakeover)D.server_no_context_takeover=!0;if(this._options.clientNoContextTakeover)D.client_no_context_takeover=!0;if(this._options.serverMaxWindowBits)D.server_max_window_bits=this._options.serverMaxWindowBits;if(this._options.clientMaxWindowBits)D.client_max_window_bits=this._options.clientMaxWindowBits;else if(this._options.clientMaxWindowBits==null)D.client_max_window_bits=!0;return D}accept(D){return D=this.normalizeParams(D),this.params=this._isServer?this.acceptAsServer(D):this.acceptAsClient(D),this.params}cleanup(){if(this._inflate)this._inflate.close(),this._inflate=null;if(this._deflate){let D=this._deflate[z];if(this._deflate.close(),this._deflate=null,D)D(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(D){let U=this._options,C=D.find((E)=>{if(U.serverNoContextTakeover===!1&&E.server_no_context_takeover||E.server_max_window_bits&&(U.serverMaxWindowBits===!1||typeof U.serverMaxWindowBits==="number"&&U.serverMaxWindowBits>E.server_max_window_bits)||typeof U.clientMaxWindowBits==="number"&&!E.client_max_window_bits)return!1;return!0});if(!C)throw Error("None of the extension offers can be accepted");if(U.serverNoContextTakeover)C.server_no_context_takeover=!0;if(U.clientNoContextTakeover)C.client_no_context_takeover=!0;if(typeof U.serverMaxWindowBits==="number")C.server_max_window_bits=U.serverMaxWindowBits;if(typeof U.clientMaxWindowBits==="number")C.client_max_window_bits=U.clientMaxWindowBits;else if(C.client_max_window_bits===!0||U.clientMaxWindowBits===!1)delete C.client_max_window_bits;return C}acceptAsClient(D){let U=D[0];if(this._options.clientNoContextTakeover===!1&&U.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(!U.client_max_window_bits){if(typeof this._options.clientMaxWindowBits==="number")U.client_max_window_bits=this._options.clientMaxWindowBits}else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==="number"&&U.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"');return U}normalizeParams(D){return D.forEach((U)=>{Object.keys(U).forEach((C)=>{let E=U[C];if(E.length>1)throw Error(`Parameter "${C}" must have only a single value`);if(E=E[0],C==="client_max_window_bits"){if(E!==!0){let F=+E;if(!Number.isInteger(F)||F<8||F>15)throw TypeError(`Invalid value for parameter "${C}": ${E}`);E=F}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${C}": ${E}`)}else if(C==="server_max_window_bits"){let F=+E;if(!Number.isInteger(F)||F<8||F>15)throw TypeError(`Invalid value for parameter "${C}": ${E}`);E=F}else if(C==="client_no_context_takeover"||C==="server_no_context_takeover"){if(E!==!0)throw TypeError(`Invalid value for parameter "${C}": ${E}`)}else throw Error(`Unknown parameter "${C}"`);U[C]=E})}),D}decompress(D,U,C){N.add((E)=>{this._decompress(D,U,(F,K)=>{E(),C(F,K)})})}compress(D,U,C){N.add((E)=>{this._compress(D,U,(F,K)=>{E(),C(F,K)})})}_decompress(D,U,C){let E=this._isServer?"client":"server";if(!this._inflate){let F=`${E}_max_window_bits`,K=typeof this.params[F]!=="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[F];this._inflate=Z.createInflateRaw({...this._options.zlibInflateOptions,windowBits:K}),this._inflate[V]=this,this._inflate[W]=0,this._inflate[B]=[],this._inflate.on("error",A),this._inflate.on("data",x)}if(this._inflate[z]=C,this._inflate.write(D),U)this._inflate.write(H);this._inflate.flush(()=>{let F=this._inflate[M];if(F){this._inflate.close(),this._inflate=null,C(F);return}let K=J.concat(this._inflate[B],this._inflate[W]);if(this._inflate._readableState.endEmitted)this._inflate.close(),this._inflate=null;else if(this._inflate[W]=0,this._inflate[B]=[],U&&this.params[`${E}_no_context_takeover`])this._inflate.reset();C(null,K)})}_compress(D,U,C){let E=this._isServer?"server":"client";if(!this._deflate){let F=`${E}_max_window_bits`,K=typeof this.params[F]!=="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[F];this._deflate=Z.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:K}),this._deflate[W]=0,this._deflate[B]=[],this._deflate.on("data",R)}this._deflate[z]=C,this._deflate.write(D),this._deflate.flush(Z.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let F=J.concat(this._deflate[B],this._deflate[W]);if(U)F=new G(F.buffer,F.byteOffset,F.length-4);if(this._deflate[z]=null,this._deflate[W]=0,this._deflate[B]=[],U&&this.params[`${E}_no_context_takeover`])this._deflate.reset();C(null,F)})}}Q.exports=j;function R(D){this[B].push(D),this[W]+=D.length}function x(D){if(this[W]+=D.length,this[V]._maxPayload<1||this[W]<=this[V]._maxPayload){this[B].push(D);return}this[M]=RangeError("Max payload size exceeded"),this[M].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[M][X]=1009,this.removeListener("data",x),this.reset()}function A(D){if(this[V]._inflate=null,this[M]){this[z](this[M]);return}D[X]=1007,this[z](D)}}),t0=e(($,Q)=>{var{isUtf8:Z}=o("buffer"),{hasBlob:J}=H0(),Y=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function X(V){return V>=1000&&V<=1014&&V!==1004&&V!==1005&&V!==1006||V>=3000&&V<=4999}function G(V){let W=V.length,z=0;while(z<W)if((V[z]&128)===0)z++;else if((V[z]&224)===192){if(z+1===W||(V[z+1]&192)!==128||(V[z]&254)===192)return!1;z+=2}else if((V[z]&240)===224){if(z+2>=W||(V[z+1]&192)!==128||(V[z+2]&192)!==128||V[z]===224&&(V[z+1]&224)===128||V[z]===237&&(V[z+1]&224)===160)return!1;z+=3}else if((V[z]&248)===240){if(z+3>=W||(V[z+1]&192)!==128||(V[z+2]&192)!==128||(V[z+3]&192)!==128||V[z]===240&&(V[z+1]&240)===128||V[z]===244&&V[z+1]>143||V[z]>244)return!1;z+=4}else return!1;return!0}function H(V){return J&&typeof V==="object"&&typeof V.arrayBuffer==="function"&&typeof V.type==="string"&&typeof V.stream==="function"&&(V[Symbol.toStringTag]==="Blob"||V[Symbol.toStringTag]==="File")}if(Q.exports={isBlob:H,isValidStatusCode:X,isValidUTF8:G,tokenChars:Y},Z)Q.exports.isValidUTF8=function(V){return V.length<24?G(V):Z(V)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let V=(()=>{throw Error("Cannot require module utf-8-validate")})();Q.exports.isValidUTF8=function(W){return W.length<32?G(W):V(W)}}catch(V){}}),p6=e(($,Q)=>{var{Writable:Z}=o("stream"),J=r0(),{BINARY_TYPES:Y,EMPTY_BUFFER:X,kStatusCode:G,kWebSocket:H}=H0(),{concat:V,toArrayBuffer:W,unmask:z}=j4(),{isValidStatusCode:B,isValidUTF8:M}=t0(),N=Buffer[Symbol.species],j=0,R=1,x=2,A=3,D=4,U=5,C=6;class E extends Z{constructor(F={}){super();this._allowSynchronousEvents=F.allowSynchronousEvents!==void 0?F.allowSynchronousEvents:!0,this._binaryType=F.binaryType||Y[0],this._extensions=F.extensions||{},this._isServer=!!F.isServer,this._maxPayload=F.maxPayload|0,this._skipUTF8Validation=!!F.skipUTF8Validation,this[H]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=j}_write(F,K,_){if(this._opcode===8&&this._state==j)return _();this._bufferedBytes+=F.length,this._buffers.push(F),this.startLoop(_)}consume(F){if(this._bufferedBytes-=F,F===this._buffers[0].length)return this._buffers.shift();if(F<this._buffers[0].length){let _=this._buffers[0];return this._buffers[0]=new N(_.buffer,_.byteOffset+F,_.length-F),new N(_.buffer,_.byteOffset,F)}let K=Buffer.allocUnsafe(F);do{let _=this._buffers[0],L=K.length-F;if(F>=_.length)K.set(this._buffers.shift(),L);else K.set(new Uint8Array(_.buffer,_.byteOffset,F),L),this._buffers[0]=new N(_.buffer,_.byteOffset+F,_.length-F);F-=_.length}while(F>0);return K}startLoop(F){this._loop=!0;do switch(this._state){case j:this.getInfo(F);break;case R:this.getPayloadLength16(F);break;case x:this.getPayloadLength64(F);break;case A:this.getMask();break;case D:this.getData(F);break;case U:case C:this._loop=!1;return}while(this._loop);if(!this._errored)F()}getInfo(F){if(this._bufferedBytes<2){this._loop=!1;return}let K=this.consume(2);if((K[0]&48)!==0){let L=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");F(L);return}let _=(K[0]&64)===64;if(_&&!this._extensions[J.extensionName]){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");F(L);return}if(this._fin=(K[0]&128)===128,this._opcode=K[0]&15,this._payloadLength=K[1]&127,this._opcode===0){if(_){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");F(L);return}if(!this._fragmented){let L=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");F(L);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let L=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");F(L);return}this._compressed=_}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let L=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");F(L);return}if(_){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");F(L);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let L=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");F(L);return}}else{let L=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");F(L);return}if(!this._fin&&!this._fragmented)this._fragmented=this._opcode;if(this._masked=(K[1]&128)===128,this._isServer){if(!this._masked){let L=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");F(L);return}}else if(this._masked){let L=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");F(L);return}if(this._payloadLength===126)this._state=R;else if(this._payloadLength===127)this._state=x;else this.haveLength(F)}getPayloadLength16(F){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(F)}getPayloadLength64(F){if(this._bufferedBytes<8){this._loop=!1;return}let K=this.consume(8),_=K.readUInt32BE(0);if(_>Math.pow(2,21)-1){let L=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");F(L);return}this._payloadLength=_*Math.pow(2,32)+K.readUInt32BE(4),this.haveLength(F)}haveLength(F){if(this._payloadLength&&this._opcode<8){if(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0){let K=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");F(K);return}}if(this._masked)this._state=A;else this._state=D}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=D}getData(F){let K=X;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}if(K=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0)z(K,this._mask)}if(this._opcode>7){this.controlMessage(K,F);return}if(this._compressed){this._state=U,this.decompress(K,F);return}if(K.length)this._messageLength=this._totalPayloadLength,this._fragments.push(K);this.dataMessage(F)}decompress(F,K){this._extensions[J.extensionName].decompress(F,this._fin,(L,P)=>{if(L)return K(L);if(P.length){if(this._messageLength+=P.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let T=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");K(T);return}this._fragments.push(P)}if(this.dataMessage(K),this._state===j)this.startLoop(K)})}dataMessage(F){if(!this._fin){this._state=j;return}let K=this._messageLength,_=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let L;if(this._binaryType==="nodebuffer")L=V(_,K);else if(this._binaryType==="arraybuffer")L=W(V(_,K));else if(this._binaryType==="blob")L=new Blob(_);else L=_;if(this._allowSynchronousEvents)this.emit("message",L,!0),this._state=j;else this._state=C,setImmediate(()=>{this.emit("message",L,!0),this._state=j,this.startLoop(F)})}else{let L=V(_,K);if(!this._skipUTF8Validation&&!M(L)){let P=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");F(P);return}if(this._state===U||this._allowSynchronousEvents)this.emit("message",L,!1),this._state=j;else this._state=C,setImmediate(()=>{this.emit("message",L,!1),this._state=j,this.startLoop(F)})}}controlMessage(F,K){if(this._opcode===8){if(F.length===0)this._loop=!1,this.emit("conclude",1005,X),this.end();else{let _=F.readUInt16BE(0);if(!B(_)){let P=this.createError(RangeError,`invalid status code ${_}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");K(P);return}let L=new N(F.buffer,F.byteOffset+2,F.length-2);if(!this._skipUTF8Validation&&!M(L)){let P=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");K(P);return}this._loop=!1,this.emit("conclude",_,L),this.end()}this._state=j;return}if(this._allowSynchronousEvents)this.emit(this._opcode===9?"ping":"pong",F),this._state=j;else this._state=C,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",F),this._state=j,this.startLoop(K)})}createError(F,K,_,L,P){this._loop=!1,this._errored=!0;let T=new F(_?`Invalid WebSocket frame: ${K}`:K);return Error.captureStackTrace(T,this.createError),T.code=P,T[G]=L,T}}Q.exports=E}),c6=e(($,Q)=>{var{Duplex:Z}=o("stream"),{randomFillSync:J}=o("crypto"),Y=r0(),{EMPTY_BUFFER:X,kWebSocket:G,NOOP:H}=H0(),{isBlob:V,isValidStatusCode:W}=t0(),{mask:z,toBuffer:B}=j4(),M=Symbol("kByteLength"),N=Buffer.alloc(4),j=8192,R,x=j,A=0,D=1,U=2;class C{constructor(K,_,L){if(this._extensions=_||{},L)this._generateMask=L,this._maskBuffer=Buffer.alloc(4);this._socket=K,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=A,this.onerror=H,this[G]=void 0}static frame(K,_){let L,P=!1,T=2,q=!1;if(_.mask){if(L=_.maskBuffer||N,_.generateMask)_.generateMask(L);else{if(x===j){if(R===void 0)R=Buffer.alloc(j);J(R,0,j),x=0}L[0]=R[x++],L[1]=R[x++],L[2]=R[x++],L[3]=R[x++]}q=(L[0]|L[1]|L[2]|L[3])===0,T=6}let S;if(typeof K==="string")if((!_.mask||q)&&_[M]!==void 0)S=_[M];else K=Buffer.from(K),S=K.length;else S=K.length,P=_.mask&&_.readOnly&&!q;let y=S;if(S>=65536)T+=8,y=127;else if(S>125)T+=2,y=126;let k=Buffer.allocUnsafe(P?S+T:T);if(k[0]=_.fin?_.opcode|128:_.opcode,_.rsv1)k[0]|=64;if(k[1]=y,y===126)k.writeUInt16BE(S,2);else if(y===127)k[2]=k[3]=0,k.writeUIntBE(S,4,6);if(!_.mask)return[k,K];if(k[1]|=128,k[T-4]=L[0],k[T-3]=L[1],k[T-2]=L[2],k[T-1]=L[3],q)return[k,K];if(P)return z(K,L,k,T,S),[k];return z(K,L,K,0,S),[k,K]}close(K,_,L,P){let T;if(K===void 0)T=X;else if(typeof K!=="number"||!W(K))throw TypeError("First argument must be a valid error code number");else if(_===void 0||!_.length)T=Buffer.allocUnsafe(2),T.writeUInt16BE(K,0);else{let S=Buffer.byteLength(_);if(S>123)throw RangeError("The message must not be greater than 123 bytes");if(T=Buffer.allocUnsafe(2+S),T.writeUInt16BE(K,0),typeof _==="string")T.write(_,2);else T.set(_,2)}let q={[M]:T.length,fin:!0,generateMask:this._generateMask,mask:L,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};if(this._state!==A)this.enqueue([this.dispatch,T,!1,q,P]);else this.sendFrame(C.frame(T,q),P)}ping(K,_,L){let P,T;if(typeof K==="string")P=Buffer.byteLength(K),T=!1;else if(V(K))P=K.size,T=!1;else K=B(K),P=K.length,T=B.readOnly;if(P>125)throw RangeError("The data size must not be greater than 125 bytes");let q={[M]:P,fin:!0,generateMask:this._generateMask,mask:_,maskBuffer:this._maskBuffer,opcode:9,readOnly:T,rsv1:!1};if(V(K))if(this._state!==A)this.enqueue([this.getBlobData,K,!1,q,L]);else this.getBlobData(K,!1,q,L);else if(this._state!==A)this.enqueue([this.dispatch,K,!1,q,L]);else this.sendFrame(C.frame(K,q),L)}pong(K,_,L){let P,T;if(typeof K==="string")P=Buffer.byteLength(K),T=!1;else if(V(K))P=K.size,T=!1;else K=B(K),P=K.length,T=B.readOnly;if(P>125)throw RangeError("The data size must not be greater than 125 bytes");let q={[M]:P,fin:!0,generateMask:this._generateMask,mask:_,maskBuffer:this._maskBuffer,opcode:10,readOnly:T,rsv1:!1};if(V(K))if(this._state!==A)this.enqueue([this.getBlobData,K,!1,q,L]);else this.getBlobData(K,!1,q,L);else if(this._state!==A)this.enqueue([this.dispatch,K,!1,q,L]);else this.sendFrame(C.frame(K,q),L)}send(K,_,L){let P=this._extensions[Y.extensionName],T=_.binary?2:1,q=_.compress,S,y;if(typeof K==="string")S=Buffer.byteLength(K),y=!1;else if(V(K))S=K.size,y=!1;else K=B(K),S=K.length,y=B.readOnly;if(this._firstFragment){if(this._firstFragment=!1,q&&P&&P.params[P._isServer?"server_no_context_takeover":"client_no_context_takeover"])q=S>=P._threshold;this._compress=q}else q=!1,T=0;if(_.fin)this._firstFragment=!0;let k={[M]:S,fin:_.fin,generateMask:this._generateMask,mask:_.mask,maskBuffer:this._maskBuffer,opcode:T,readOnly:y,rsv1:q};if(V(K))if(this._state!==A)this.enqueue([this.getBlobData,K,this._compress,k,L]);else this.getBlobData(K,this._compress,k,L);else if(this._state!==A)this.enqueue([this.dispatch,K,this._compress,k,L]);else this.dispatch(K,this._compress,k,L)}getBlobData(K,_,L,P){this._bufferedBytes+=L[M],this._state=U,K.arrayBuffer().then((T)=>{if(this._socket.destroyed){let S=Error("The socket was closed while the blob was being read");process.nextTick(E,this,S,P);return}this._bufferedBytes-=L[M];let q=B(T);if(!_)this._state=A,this.sendFrame(C.frame(q,L),P),this.dequeue();else this.dispatch(q,_,L,P)}).catch((T)=>{process.nextTick(F,this,T,P)})}dispatch(K,_,L,P){if(!_){this.sendFrame(C.frame(K,L),P);return}let T=this._extensions[Y.extensionName];this._bufferedBytes+=L[M],this._state=D,T.compress(K,L.fin,(q,S)=>{if(this._socket.destroyed){let y=Error("The socket was closed while data was being compressed");E(this,y,P);return}this._bufferedBytes-=L[M],this._state=A,L.readOnly=!1,this.sendFrame(C.frame(S,L),P),this.dequeue()})}dequeue(){while(this._state===A&&this._queue.length){let K=this._queue.shift();this._bufferedBytes-=K[3][M],Reflect.apply(K[0],this,K.slice(1))}}enqueue(K){this._bufferedBytes+=K[3][M],this._queue.push(K)}sendFrame(K,_){if(K.length===2)this._socket.cork(),this._socket.write(K[0]),this._socket.write(K[1],_),this._socket.uncork();else this._socket.write(K[0],_)}}Q.exports=C;function E(K,_,L){if(typeof L==="function")L(_);for(let P=0;P<K._queue.length;P++){let T=K._queue[P],q=T[T.length-1];if(typeof q==="function")q(_)}}function F(K,_,L){E(K,_,L),K.onerror(_)}}),YZ=e(($,Q)=>{var{kForOnEventAttribute:Z,kListener:J}=H0(),Y=Symbol("kCode"),X=Symbol("kData"),G=Symbol("kError"),H=Symbol("kMessage"),V=Symbol("kReason"),W=Symbol("kTarget"),z=Symbol("kType"),B=Symbol("kWasClean");class M{constructor(D){this[W]=null,this[z]=D}get target(){return this[W]}get type(){return this[z]}}Object.defineProperty(M.prototype,"target",{enumerable:!0}),Object.defineProperty(M.prototype,"type",{enumerable:!0});class N extends M{constructor(D,U={}){super(D);this[Y]=U.code===void 0?0:U.code,this[V]=U.reason===void 0?"":U.reason,this[B]=U.wasClean===void 0?!1:U.wasClean}get code(){return this[Y]}get reason(){return this[V]}get wasClean(){return this[B]}}Object.defineProperty(N.prototype,"code",{enumerable:!0}),Object.defineProperty(N.prototype,"reason",{enumerable:!0}),Object.defineProperty(N.prototype,"wasClean",{enumerable:!0});class j extends M{constructor(D,U={}){super(D);this[G]=U.error===void 0?null:U.error,this[H]=U.message===void 0?"":U.message}get error(){return this[G]}get message(){return this[H]}}Object.defineProperty(j.prototype,"error",{enumerable:!0}),Object.defineProperty(j.prototype,"message",{enumerable:!0});class R extends M{constructor(D,U={}){super(D);this[X]=U.data===void 0?null:U.data}get data(){return this[X]}}Object.defineProperty(R.prototype,"data",{enumerable:!0});var x={addEventListener(D,U,C={}){for(let F of this.listeners(D))if(!C[Z]&&F[J]===U&&!F[Z])return;let E;if(D==="message")E=function(K,_){let L=new R("message",{data:_?K:K.toString()});L[W]=this,A(U,this,L)};else if(D==="close")E=function(K,_){let L=new N("close",{code:K,reason:_.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});L[W]=this,A(U,this,L)};else if(D==="error")E=function(K){let _=new j("error",{error:K,message:K.message});_[W]=this,A(U,this,_)};else if(D==="open")E=function(){let K=new M("open");K[W]=this,A(U,this,K)};else return;if(E[Z]=!!C[Z],E[J]=U,C.once)this.once(D,E);else this.on(D,E)},removeEventListener(D,U){for(let C of this.listeners(D))if(C[J]===U&&!C[Z]){this.removeListener(D,C);break}}};Q.exports={CloseEvent:N,ErrorEvent:j,Event:M,EventTarget:x,MessageEvent:R};function A(D,U,C){if(typeof D==="object"&&D.handleEvent)D.handleEvent.call(D,C);else D.call(U,C)}}),q8=e(($,Q)=>{var{tokenChars:Z}=t0();function J(G,H,V){if(G[H]===void 0)G[H]=[V];else G[H].push(V)}function Y(G){let H=Object.create(null),V=Object.create(null),W=!1,z=!1,B=!1,M,N,j=-1,R=-1,x=-1,A=0;for(;A<G.length;A++)if(R=G.charCodeAt(A),M===void 0)if(x===-1&&Z[R]===1){if(j===-1)j=A}else if(A!==0&&(R===32||R===9)){if(x===-1&&j!==-1)x=A}else if(R===59||R===44){if(j===-1)throw SyntaxError(`Unexpected character at index ${A}`);if(x===-1)x=A;let U=G.slice(j,x);if(R===44)J(H,U,V),V=Object.create(null);else M=U;j=x=-1}else throw SyntaxError(`Unexpected character at index ${A}`);else if(N===void 0)if(x===-1&&Z[R]===1){if(j===-1)j=A}else if(R===32||R===9){if(x===-1&&j!==-1)x=A}else if(R===59||R===44){if(j===-1)throw SyntaxError(`Unexpected character at index ${A}`);if(x===-1)x=A;if(J(V,G.slice(j,x),!0),R===44)J(H,M,V),V=Object.create(null),M=void 0;j=x=-1}else if(R===61&&j!==-1&&x===-1)N=G.slice(j,A),j=x=-1;else throw SyntaxError(`Unexpected character at index ${A}`);else if(z){if(Z[R]!==1)throw SyntaxError(`Unexpected character at index ${A}`);if(j===-1)j=A;else if(!W)W=!0;z=!1}else if(B)if(Z[R]===1){if(j===-1)j=A}else if(R===34&&j!==-1)B=!1,x=A;else if(R===92)z=!0;else throw SyntaxError(`Unexpected character at index ${A}`);else if(R===34&&G.charCodeAt(A-1)===61)B=!0;else if(x===-1&&Z[R]===1){if(j===-1)j=A}else if(j!==-1&&(R===32||R===9)){if(x===-1)x=A}else if(R===59||R===44){if(j===-1)throw SyntaxError(`Unexpected character at index ${A}`);if(x===-1)x=A;let U=G.slice(j,x);if(W)U=U.replace(/\\/g,""),W=!1;if(J(V,N,U),R===44)J(H,M,V),V=Object.create(null),M=void 0;N=void 0,j=x=-1}else throw SyntaxError(`Unexpected character at index ${A}`);if(j===-1||B||R===32||R===9)throw SyntaxError("Unexpected end of input");if(x===-1)x=A;let D=G.slice(j,x);if(M===void 0)J(H,D,V);else{if(N===void 0)J(V,D,!0);else if(W)J(V,N,D.replace(/\\/g,""));else J(V,N,D);J(H,M,V)}return H}function X(G){return Object.keys(G).map((H)=>{let V=G[H];if(!Array.isArray(V))V=[V];return V.map((W)=>{return[H].concat(Object.keys(W).map((z)=>{let B=W[z];if(!Array.isArray(B))B=[B];return B.map((M)=>M===!0?z:`${z}=${M}`).join("; ")})).join("; ")}).join(", ")}).join(", ")}Q.exports={format:X,parse:Y}}),w8=e(($,Q)=>{var Z=o("events"),J=o("https"),Y=o("http"),X=o("net"),G=o("tls"),{randomBytes:H,createHash:V}=o("crypto"),{Duplex:W,Readable:z}=o("stream"),{URL:B}=o("url"),M=r0(),N=p6(),j=c6(),{isBlob:R}=t0(),{BINARY_TYPES:x,CLOSE_TIMEOUT:A,EMPTY_BUFFER:D,GUID:U,kForOnEventAttribute:C,kListener:E,kStatusCode:F,kWebSocket:K,NOOP:_}=H0(),{EventTarget:{addEventListener:L,removeEventListener:P}}=YZ(),{format:T,parse:q}=q8(),{toBuffer:S}=j4(),y=Symbol("kAborted"),k=[8,13],h=["CONNECTING","OPEN","CLOSING","CLOSED"],c=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class I extends Z{constructor(O,w,b){super();if(this._binaryType=x[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=D,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=I.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,O!==null){if(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,w===void 0)w=[];else if(!Array.isArray(w))if(typeof w==="object"&&w!==null)b=w,w=[];else w=[w];u(this,O,w,b)}else this._autoPong=b.autoPong,this._closeTimeout=b.closeTimeout,this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(O){if(!x.includes(O))return;if(this._binaryType=O,this._receiver)this._receiver._binaryType=O}get bufferedAmount(){if(!this._socket)return this._bufferedAmount;return this._socket._writableState.length+this._sender._bufferedBytes}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(O,w,b){let g=new N({allowSynchronousEvents:b.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:b.maxPayload,skipUTF8Validation:b.skipUTF8Validation}),f=new j(O,this._extensions,b.generateMask);if(this._receiver=g,this._sender=f,this._socket=O,g[K]=this,f[K]=this,O[K]=this,g.on("conclude",q$),g.on("drain",w$),g.on("error",S$),g.on("message",y$),g.on("ping",k$),g.on("pong",f$),f.onerror=v$,O.setTimeout)O.setTimeout(0);if(O.setNoDelay)O.setNoDelay();if(w.length>0)O.unshift(w);O.on("close",n8),O.on("data",J4),O.on("end",o8),O.on("error",a8),this._readyState=I.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=I.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}if(this._extensions[M.extensionName])this._extensions[M.extensionName].cleanup();this._receiver.removeAllListeners(),this._readyState=I.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(O,w){if(this.readyState===I.CLOSED)return;if(this.readyState===I.CONNECTING){s(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===I.CLOSING){if(this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted))this._socket.end();return}this._readyState=I.CLOSING,this._sender.close(O,w,!this._isServer,(b)=>{if(b)return;if(this._closeFrameSent=!0,this._closeFrameReceived||this._receiver._writableState.errorEmitted)this._socket.end()}),i8(this)}pause(){if(this.readyState===I.CONNECTING||this.readyState===I.CLOSED)return;this._paused=!0,this._socket.pause()}ping(O,w,b){if(this.readyState===I.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof O==="function")b=O,O=w=void 0;else if(typeof w==="function")b=w,w=void 0;if(typeof O==="number")O=O.toString();if(this.readyState!==I.OPEN){I4(this,O,b);return}if(w===void 0)w=!this._isServer;this._sender.ping(O||D,w,b)}pong(O,w,b){if(this.readyState===I.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof O==="function")b=O,O=w=void 0;else if(typeof w==="function")b=w,w=void 0;if(typeof O==="number")O=O.toString();if(this.readyState!==I.OPEN){I4(this,O,b);return}if(w===void 0)w=!this._isServer;this._sender.pong(O||D,w,b)}resume(){if(this.readyState===I.CONNECTING||this.readyState===I.CLOSED)return;if(this._paused=!1,!this._receiver._writableState.needDrain)this._socket.resume()}send(O,w,b){if(this.readyState===I.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof w==="function")b=w,w={};if(typeof O==="number")O=O.toString();if(this.readyState!==I.OPEN){I4(this,O,b);return}let g={binary:typeof O!=="string",mask:!this._isServer,compress:!0,fin:!0,...w};if(!this._extensions[M.extensionName])g.compress=!1;this._sender.send(O||D,g,b)}terminate(){if(this.readyState===I.CLOSED)return;if(this.readyState===I.CONNECTING){s(this,this._req,"WebSocket was closed before the connection was established");return}if(this._socket)this._readyState=I.CLOSING,this._socket.destroy()}}Object.defineProperty(I,"CONNECTING",{enumerable:!0,value:h.indexOf("CONNECTING")}),Object.defineProperty(I.prototype,"CONNECTING",{enumerable:!0,value:h.indexOf("CONNECTING")}),Object.defineProperty(I,"OPEN",{enumerable:!0,value:h.indexOf("OPEN")}),Object.defineProperty(I.prototype,"OPEN",{enumerable:!0,value:h.indexOf("OPEN")}),Object.defineProperty(I,"CLOSING",{enumerable:!0,value:h.indexOf("CLOSING")}),Object.defineProperty(I.prototype,"CLOSING",{enumerable:!0,value:h.indexOf("CLOSING")}),Object.defineProperty(I,"CLOSED",{enumerable:!0,value:h.indexOf("CLOSED")}),Object.defineProperty(I.prototype,"CLOSED",{enumerable:!0,value:h.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((O)=>{Object.defineProperty(I.prototype,O,{enumerable:!0})}),["open","error","close","message"].forEach((O)=>{Object.defineProperty(I.prototype,`on${O}`,{enumerable:!0,get(){for(let w of this.listeners(O))if(w[C])return w[E];return null},set(w){for(let b of this.listeners(O))if(b[C]){this.removeListener(O,b);break}if(typeof w!=="function")return;this.addEventListener(O,w,{[C]:!0})}})}),I.prototype.addEventListener=L,I.prototype.removeEventListener=P,Q.exports=I;function u(O,w,b,g){let f={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:A,protocolVersion:k[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...g,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(O._autoPong=f.autoPong,O._closeTimeout=f.closeTimeout,!k.includes(f.protocolVersion))throw RangeError(`Unsupported protocol version: ${f.protocolVersion} (supported versions: ${k.join(", ")})`);let m;if(w instanceof B)m=w;else try{m=new B(w)}catch{throw SyntaxError(`Invalid URL: ${w}`)}if(m.protocol==="http:")m.protocol="ws:";else if(m.protocol==="https:")m.protocol="wss:";O._url=m.href;let D0=m.protocol==="wss:",P0=m.protocol==="ws+unix:",v0;if(m.protocol!=="ws:"&&!D0&&!P0)v0=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`;else if(P0&&!m.pathname)v0="The URL's pathname is empty";else if(m.hash)v0="The URL contains a fragment identifier";if(v0){let p=SyntaxError(v0);if(O._redirects===0)throw p;else{d(O,p);return}}let r8=D0?443:80,t8=H(16).toString("base64"),s8=D0?J.request:Y.request,b0=new Set,h0;if(f.createConnection=f.createConnection||(D0?C0:Z0),f.defaultPort=f.defaultPort||r8,f.port=m.port||r8,f.host=m.hostname.startsWith("[")?m.hostname.slice(1,-1):m.hostname,f.headers={...f.headers,"Sec-WebSocket-Version":f.protocolVersion,"Sec-WebSocket-Key":t8,Connection:"Upgrade",Upgrade:"websocket"},f.path=m.pathname+m.search,f.timeout=f.handshakeTimeout,f.perMessageDeflate)h0=new M({...f.perMessageDeflate,isServer:!1,maxPayload:f.maxPayload}),f.headers["Sec-WebSocket-Extensions"]=T({[M.extensionName]:h0.offer()});if(b.length){for(let p of b){if(typeof p!=="string"||!c.test(p)||b0.has(p))throw SyntaxError("An invalid or duplicated subprotocol was specified");b0.add(p)}f.headers["Sec-WebSocket-Protocol"]=b.join(",")}if(f.origin)if(f.protocolVersion<13)f.headers["Sec-WebSocket-Origin"]=f.origin;else f.headers.Origin=f.origin;if(m.username||m.password)f.auth=`${m.username}:${m.password}`;if(P0){let p=f.path.split(":");f.socketPath=p[0],f.path=p[1]}let n;if(f.followRedirects){if(O._redirects===0){O._originalIpc=P0,O._originalSecure=D0,O._originalHostOrSocketPath=P0?f.socketPath:m.host;let p=g&&g.headers;if(g={...g,headers:{}},p)for(let[r,T0]of Object.entries(p))g.headers[r.toLowerCase()]=T0}else if(O.listenerCount("redirect")===0){let p=P0?O._originalIpc?f.socketPath===O._originalHostOrSocketPath:!1:O._originalIpc?!1:m.host===O._originalHostOrSocketPath;if(!p||O._originalSecure&&!D0){if(delete f.headers.authorization,delete f.headers.cookie,!p)delete f.headers.host;f.auth=void 0}}if(f.auth&&!g.headers.authorization)g.headers.authorization="Basic "+Buffer.from(f.auth).toString("base64");if(n=O._req=s8(f),O._redirects)O.emit("redirect",O.url,n)}else n=O._req=s8(f);if(f.timeout)n.on("timeout",()=>{s(O,n,"Opening handshake has timed out")});if(n.on("error",(p)=>{if(n===null||n[y])return;n=O._req=null,d(O,p)}),n.on("response",(p)=>{let r=p.headers.location,T0=p.statusCode;if(r&&f.followRedirects&&T0>=300&&T0<400){if(++O._redirects>f.maxRedirects){s(O,n,"Maximum redirects exceeded");return}n.abort();let u0;try{u0=new B(r,w)}catch(e8){let E0=SyntaxError(`Invalid URL: ${r}`);d(O,E0);return}u(O,u0,b,g)}else if(!O.emit("unexpected-response",n,p))s(O,n,`Unexpected server response: ${p.statusCode}`)}),n.on("upgrade",(p,r,T0)=>{if(O.emit("upgrade",p),O.readyState!==I.CONNECTING)return;n=O._req=null;let u0=p.headers.upgrade;if(u0===void 0||u0.toLowerCase()!=="websocket"){s(O,r,"Invalid Upgrade header");return}let e8=V("sha1").update(t8+U).digest("base64");if(p.headers["sec-websocket-accept"]!==e8){s(O,r,"Invalid Sec-WebSocket-Accept header");return}let E0=p.headers["sec-websocket-protocol"],g0;if(E0!==void 0){if(!b0.size)g0="Server sent a subprotocol but none was requested";else if(!b0.has(E0))g0="Server sent an invalid subprotocol"}else if(b0.size)g0="Server sent no subprotocol";if(g0){s(O,r,g0);return}if(E0)O._protocol=E0;let $9=p.headers["sec-websocket-extensions"];if($9!==void 0){if(!h0){s(O,r,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let x4;try{x4=q($9)}catch(q4){s(O,r,"Invalid Sec-WebSocket-Extensions header");return}let Q9=Object.keys(x4);if(Q9.length!==1||Q9[0]!==M.extensionName){s(O,r,"Server indicated an extension that was not requested");return}try{h0.accept(x4[M.extensionName])}catch(q4){s(O,r,"Invalid Sec-WebSocket-Extensions header");return}O._extensions[M.extensionName]=h0}O.setSocket(r,T0,{allowSynchronousEvents:f.allowSynchronousEvents,generateMask:f.generateMask,maxPayload:f.maxPayload,skipUTF8Validation:f.skipUTF8Validation})}),f.finishRequest)f.finishRequest(n,O);else n.end()}function d(O,w){O._readyState=I.CLOSING,O._errorEmitted=!0,O.emit("error",w),O.emitClose()}function Z0(O){return O.path=O.socketPath,X.connect(O)}function C0(O){if(O.path=void 0,!O.servername&&O.servername!=="")O.servername=X.isIP(O.host)?"":O.host;return G.connect(O)}function s(O,w,b){O._readyState=I.CLOSING;let g=Error(b);if(Error.captureStackTrace(g,s),w.setHeader){if(w[y]=!0,w.abort(),w.socket&&!w.socket.destroyed)w.socket.destroy();process.nextTick(d,O,g)}else w.destroy(g),w.once("error",O.emit.bind(O,"error")),w.once("close",O.emitClose.bind(O))}function I4(O,w,b){if(w){let g=R(w)?w.size:S(w).length;if(O._socket)O._sender._bufferedBytes+=g;else O._bufferedAmount+=g}if(b){let g=Error(`WebSocket is not open: readyState ${O.readyState} (${h[O.readyState]})`);process.nextTick(b,g)}}function q$(O,w){let b=this[K];if(b._closeFrameReceived=!0,b._closeMessage=w,b._closeCode=O,b._socket[K]===void 0)return;if(b._socket.removeListener("data",J4),process.nextTick(d8,b._socket),O===1005)b.close();else b.close(O,w)}function w$(){let O=this[K];if(!O.isPaused)O._socket.resume()}function S$(O){let w=this[K];if(w._socket[K]!==void 0)w._socket.removeListener("data",J4),process.nextTick(d8,w._socket),w.close(O[F]);if(!w._errorEmitted)w._errorEmitted=!0,w.emit("error",O)}function m8(){this[K].emitClose()}function y$(O,w){this[K].emit("message",O,w)}function k$(O){let w=this[K];if(w._autoPong)w.pong(O,!this._isServer,_);w.emit("ping",O)}function f$(O){this[K].emit("pong",O)}function d8(O){O.resume()}function v$(O){let w=this[K];if(w.readyState===I.CLOSED)return;if(w.readyState===I.OPEN)w._readyState=I.CLOSING,i8(w);if(this._socket.end(),!w._errorEmitted)w._errorEmitted=!0,w.emit("error",O)}function i8(O){O._closeTimer=setTimeout(O._socket.destroy.bind(O._socket),O._closeTimeout)}function n8(){let O=this[K];if(this.removeListener("close",n8),this.removeListener("data",J4),this.removeListener("end",o8),O._readyState=I.CLOSING,!this._readableState.endEmitted&&!O._closeFrameReceived&&!O._receiver._writableState.errorEmitted&&this._readableState.length!==0){let w=this.read(this._readableState.length);O._receiver.write(w)}if(O._receiver.end(),this[K]=void 0,clearTimeout(O._closeTimer),O._receiver._writableState.finished||O._receiver._writableState.errorEmitted)O.emitClose();else O._receiver.on("error",m8),O._receiver.on("finish",m8)}function J4(O){if(!this[K]._receiver.write(O))this.pause()}function o8(){let O=this[K];O._readyState=I.CLOSING,O._receiver.end(),this.end()}function a8(){let O=this[K];if(this.removeListener("error",a8),this.on("error",_),O)O._readyState=I.CLOSING,this.destroy()}}),XZ=e(($,Q)=>{var Z=w8(),{Duplex:J}=o("stream");function Y(V){V.emit("close")}function X(){if(!this.destroyed&&this._writableState.finished)this.destroy()}function G(V){if(this.removeListener("error",G),this.destroy(),this.listenerCount("error")===0)this.emit("error",V)}function H(V,W){let z=!0,B=new J({...W,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return V.on("message",function(N,j){let R=!j&&B._readableState.objectMode?N.toString():N;if(!B.push(R))V.pause()}),V.once("error",function(N){if(B.destroyed)return;z=!1,B.destroy(N)}),V.once("close",function(){if(B.destroyed)return;B.push(null)}),B._destroy=function(M,N){if(V.readyState===V.CLOSED){N(M),process.nextTick(Y,B);return}let j=!1;if(V.once("error",function(x){j=!0,N(x)}),V.once("close",function(){if(!j)N(M);process.nextTick(Y,B)}),z)V.terminate()},B._final=function(M){if(V.readyState===V.CONNECTING){V.once("open",function(){B._final(M)});return}if(V._socket===null)return;if(V._socket._writableState.finished){if(M(),B._readableState.endEmitted)B.destroy()}else V._socket.once("finish",function(){M()}),V.close()},B._read=function(){if(V.isPaused)V.resume()},B._write=function(M,N,j){if(V.readyState===V.CONNECTING){V.once("open",function(){B._write(M,N,j)});return}V.send(M,j)},B.on("end",X),B.on("error",G),B}Q.exports=H}),l6=e(($,Q)=>{var{tokenChars:Z}=t0();function J(Y){let X=new Set,G=-1,H=-1,V=0;for(V;V<Y.length;V++){let z=Y.charCodeAt(V);if(H===-1&&Z[z]===1){if(G===-1)G=V}else if(V!==0&&(z===32||z===9)){if(H===-1&&G!==-1)H=V}else if(z===44){if(G===-1)throw SyntaxError(`Unexpected character at index ${V}`);if(H===-1)H=V;let B=Y.slice(G,H);if(X.has(B))throw SyntaxError(`The "${B}" subprotocol is duplicated`);X.add(B),G=H=-1}else throw SyntaxError(`Unexpected character at index ${V}`)}if(G===-1||H!==-1)throw SyntaxError("Unexpected end of input");let W=Y.slice(G,V);if(X.has(W))throw SyntaxError(`The "${W}" subprotocol is duplicated`);return X.add(W),X}Q.exports={parse:J}}),GZ=e(($,Q)=>{var Z=o("events"),J=o("http"),{Duplex:Y}=o("stream"),{createHash:X}=o("crypto"),G=q8(),H=r0(),V=l6(),W=w8(),{CLOSE_TIMEOUT:z,GUID:B,kWebSocket:M}=H0(),N=/^[+/0-9A-Za-z]{22}==$/,j=0,R=1,x=2;class A extends Z{constructor(K,_){super();if(K={allowSynchronousEvents:!0,autoPong:!0,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:z,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:W,...K},K.port==null&&!K.server&&!K.noServer||K.port!=null&&(K.server||K.noServer)||K.server&&K.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(K.port!=null)this._server=J.createServer((L,P)=>{let T=J.STATUS_CODES[426];P.writeHead(426,{"Content-Length":T.length,"Content-Type":"text/plain"}),P.end(T)}),this._server.listen(K.port,K.host,K.backlog,_);else if(K.server)this._server=K.server;if(this._server){let L=this.emit.bind(this,"connection");this._removeListeners=D(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(P,T,q)=>{this.handleUpgrade(P,T,q,L)}})}if(K.perMessageDeflate===!0)K.perMessageDeflate={};if(K.clientTracking)this.clients=new Set,this._shouldEmitClose=!1;this.options=K,this._state=j}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');if(!this._server)return null;return this._server.address()}close(K){if(this._state===x){if(K)this.once("close",()=>{K(Error("The server is not running"))});process.nextTick(U,this);return}if(K)this.once("close",K);if(this._state===R)return;if(this._state=R,this.options.noServer||this.options.server){if(this._server)this._removeListeners(),this._removeListeners=this._server=null;if(this.clients)if(!this.clients.size)process.nextTick(U,this);else this._shouldEmitClose=!0;else process.nextTick(U,this)}else{let _=this._server;this._removeListeners(),this._removeListeners=this._server=null,_.close(()=>{U(this)})}}shouldHandle(K){if(this.options.path){let _=K.url.indexOf("?");if((_!==-1?K.url.slice(0,_):K.url)!==this.options.path)return!1}return!0}handleUpgrade(K,_,L,P){_.on("error",C);let T=K.headers["sec-websocket-key"],q=K.headers.upgrade,S=+K.headers["sec-websocket-version"];if(K.method!=="GET"){F(this,K,_,405,"Invalid HTTP method");return}if(q===void 0||q.toLowerCase()!=="websocket"){F(this,K,_,400,"Invalid Upgrade header");return}if(T===void 0||!N.test(T)){F(this,K,_,400,"Missing or invalid Sec-WebSocket-Key header");return}if(S!==13&&S!==8){F(this,K,_,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(K)){E(_,400);return}let y=K.headers["sec-websocket-protocol"],k=new Set;if(y!==void 0)try{k=V.parse(y)}catch(I){F(this,K,_,400,"Invalid Sec-WebSocket-Protocol header");return}let h=K.headers["sec-websocket-extensions"],c={};if(this.options.perMessageDeflate&&h!==void 0){let I=new H({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let u=G.parse(h);if(u[H.extensionName])I.accept(u[H.extensionName]),c[H.extensionName]=I}catch(u){F(this,K,_,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let I={origin:K.headers[`${S===8?"sec-websocket-origin":"origin"}`],secure:!!(K.socket.authorized||K.socket.encrypted),req:K};if(this.options.verifyClient.length===2){this.options.verifyClient(I,(u,d,Z0,C0)=>{if(!u)return E(_,d||401,Z0,C0);this.completeUpgrade(c,T,k,K,_,L,P)});return}if(!this.options.verifyClient(I))return E(_,401)}this.completeUpgrade(c,T,k,K,_,L,P)}completeUpgrade(K,_,L,P,T,q,S){if(!T.readable||!T.writable)return T.destroy();if(T[M])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>j)return E(T,503);let k=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${X("sha1").update(_+B).digest("base64")}`],h=new this.options.WebSocket(null,void 0,this.options);if(L.size){let c=this.options.handleProtocols?this.options.handleProtocols(L,P):L.values().next().value;if(c)k.push(`Sec-WebSocket-Protocol: ${c}`),h._protocol=c}if(K[H.extensionName]){let c=K[H.extensionName].params,I=G.format({[H.extensionName]:[c]});k.push(`Sec-WebSocket-Extensions: ${I}`),h._extensions=K}if(this.emit("headers",k,P),T.write(k.concat(`\r
34
+ }`,K2=65536,z2,H2,F2,B2=1500;var z$=a$(()=>{r7=Object.create,t7=Object.getPrototypeOf,k6=Object.defineProperty,s7=Object.getOwnPropertyNames,e7=Object.prototype.hasOwnProperty;o=a7(import.meta.url),M0=e(($,Q)=>{var Z=["nodebuffer","arraybuffer","fragments"],J=typeof Blob<"u";if(J)Z.push("blob");Q.exports={BINARY_TYPES:Z,CLOSE_TIMEOUT:30000,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:J,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}}),R4=e(($,Q)=>{var{EMPTY_BUFFER:Z}=M0(),J=Buffer[Symbol.species];function Y(W,z){if(W.length===0)return Z;if(W.length===1)return W[0];let B=Buffer.allocUnsafe(z),M=0;for(let N=0;N<W.length;N++){let j=W[N];B.set(j,M),M+=j.length}if(M<z)return new J(B.buffer,B.byteOffset,M);return B}function X(W,z,B,M,N){for(let j=0;j<N;j++)B[M+j]=W[j]^z[j&3]}function G(W,z){for(let B=0;B<W.length;B++)W[B]^=z[B&3]}function H(W){if(W.length===W.buffer.byteLength)return W.buffer;return W.buffer.slice(W.byteOffset,W.byteOffset+W.length)}function V(W){if(V.readOnly=!0,Buffer.isBuffer(W))return W;let z;if(W instanceof ArrayBuffer)z=new J(W);else if(ArrayBuffer.isView(W))z=new J(W.buffer,W.byteOffset,W.byteLength);else z=Buffer.from(W),V.readOnly=!1;return z}if(Q.exports={concat:Y,mask:X,toArrayBuffer:H,toBuffer:V,unmask:G},!process.env.WS_NO_BUFFER_UTIL)try{let W=(()=>{throw Error("Cannot require module bufferutil")})();Q.exports.mask=function(z,B,M,N,j){if(j<48)X(z,B,M,N,j);else W.mask(z,B,M,N,j)},Q.exports.unmask=function(z,B){if(z.length<32)G(z,B);else W.unmask(z,B)}}catch(W){}}),JZ=e(($,Q)=>{var Z=Symbol("kDone"),J=Symbol("kRun");class Y{constructor(X){this[Z]=()=>{this.pending--,this[J]()},this.concurrency=X||1/0,this.jobs=[],this.pending=0}add(X){this.jobs.push(X),this[J]()}[J](){if(this.pending===this.concurrency)return;if(this.jobs.length){let X=this.jobs.shift();this.pending++,X(this[Z])}}}Q.exports=Y}),r0=e(($,Q)=>{var Z=o("zlib"),J=R4(),Y=JZ(),{kStatusCode:X}=M0(),G=Buffer[Symbol.species],H=Buffer.from([0,0,255,255]),V=Symbol("permessage-deflate"),W=Symbol("total-length"),z=Symbol("callback"),B=Symbol("buffers"),M=Symbol("error"),N;class j{constructor(D){if(this._options=D||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!N){let U=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;N=new Y(U)}}static get extensionName(){return"permessage-deflate"}offer(){let D={};if(this._options.serverNoContextTakeover)D.server_no_context_takeover=!0;if(this._options.clientNoContextTakeover)D.client_no_context_takeover=!0;if(this._options.serverMaxWindowBits)D.server_max_window_bits=this._options.serverMaxWindowBits;if(this._options.clientMaxWindowBits)D.client_max_window_bits=this._options.clientMaxWindowBits;else if(this._options.clientMaxWindowBits==null)D.client_max_window_bits=!0;return D}accept(D){return D=this.normalizeParams(D),this.params=this._isServer?this.acceptAsServer(D):this.acceptAsClient(D),this.params}cleanup(){if(this._inflate)this._inflate.close(),this._inflate=null;if(this._deflate){let D=this._deflate[z];if(this._deflate.close(),this._deflate=null,D)D(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(D){let U=this._options,C=D.find((E)=>{if(U.serverNoContextTakeover===!1&&E.server_no_context_takeover||E.server_max_window_bits&&(U.serverMaxWindowBits===!1||typeof U.serverMaxWindowBits==="number"&&U.serverMaxWindowBits>E.server_max_window_bits)||typeof U.clientMaxWindowBits==="number"&&!E.client_max_window_bits)return!1;return!0});if(!C)throw Error("None of the extension offers can be accepted");if(U.serverNoContextTakeover)C.server_no_context_takeover=!0;if(U.clientNoContextTakeover)C.client_no_context_takeover=!0;if(typeof U.serverMaxWindowBits==="number")C.server_max_window_bits=U.serverMaxWindowBits;if(typeof U.clientMaxWindowBits==="number")C.client_max_window_bits=U.clientMaxWindowBits;else if(C.client_max_window_bits===!0||U.clientMaxWindowBits===!1)delete C.client_max_window_bits;return C}acceptAsClient(D){let U=D[0];if(this._options.clientNoContextTakeover===!1&&U.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(!U.client_max_window_bits){if(typeof this._options.clientMaxWindowBits==="number")U.client_max_window_bits=this._options.clientMaxWindowBits}else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==="number"&&U.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"');return U}normalizeParams(D){return D.forEach((U)=>{Object.keys(U).forEach((C)=>{let E=U[C];if(E.length>1)throw Error(`Parameter "${C}" must have only a single value`);if(E=E[0],C==="client_max_window_bits"){if(E!==!0){let F=+E;if(!Number.isInteger(F)||F<8||F>15)throw TypeError(`Invalid value for parameter "${C}": ${E}`);E=F}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${C}": ${E}`)}else if(C==="server_max_window_bits"){let F=+E;if(!Number.isInteger(F)||F<8||F>15)throw TypeError(`Invalid value for parameter "${C}": ${E}`);E=F}else if(C==="client_no_context_takeover"||C==="server_no_context_takeover"){if(E!==!0)throw TypeError(`Invalid value for parameter "${C}": ${E}`)}else throw Error(`Unknown parameter "${C}"`);U[C]=E})}),D}decompress(D,U,C){N.add((E)=>{this._decompress(D,U,(F,K)=>{E(),C(F,K)})})}compress(D,U,C){N.add((E)=>{this._compress(D,U,(F,K)=>{E(),C(F,K)})})}_decompress(D,U,C){let E=this._isServer?"client":"server";if(!this._inflate){let F=`${E}_max_window_bits`,K=typeof this.params[F]!=="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[F];this._inflate=Z.createInflateRaw({...this._options.zlibInflateOptions,windowBits:K}),this._inflate[V]=this,this._inflate[W]=0,this._inflate[B]=[],this._inflate.on("error",A),this._inflate.on("data",x)}if(this._inflate[z]=C,this._inflate.write(D),U)this._inflate.write(H);this._inflate.flush(()=>{let F=this._inflate[M];if(F){this._inflate.close(),this._inflate=null,C(F);return}let K=J.concat(this._inflate[B],this._inflate[W]);if(this._inflate._readableState.endEmitted)this._inflate.close(),this._inflate=null;else if(this._inflate[W]=0,this._inflate[B]=[],U&&this.params[`${E}_no_context_takeover`])this._inflate.reset();C(null,K)})}_compress(D,U,C){let E=this._isServer?"server":"client";if(!this._deflate){let F=`${E}_max_window_bits`,K=typeof this.params[F]!=="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[F];this._deflate=Z.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:K}),this._deflate[W]=0,this._deflate[B]=[],this._deflate.on("data",R)}this._deflate[z]=C,this._deflate.write(D),this._deflate.flush(Z.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let F=J.concat(this._deflate[B],this._deflate[W]);if(U)F=new G(F.buffer,F.byteOffset,F.length-4);if(this._deflate[z]=null,this._deflate[W]=0,this._deflate[B]=[],U&&this.params[`${E}_no_context_takeover`])this._deflate.reset();C(null,F)})}}Q.exports=j;function R(D){this[B].push(D),this[W]+=D.length}function x(D){if(this[W]+=D.length,this[V]._maxPayload<1||this[W]<=this[V]._maxPayload){this[B].push(D);return}this[M]=RangeError("Max payload size exceeded"),this[M].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[M][X]=1009,this.removeListener("data",x),this.reset()}function A(D){if(this[V]._inflate=null,this[M]){this[z](this[M]);return}D[X]=1007,this[z](D)}}),t0=e(($,Q)=>{var{isUtf8:Z}=o("buffer"),{hasBlob:J}=M0(),Y=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function X(V){return V>=1000&&V<=1014&&V!==1004&&V!==1005&&V!==1006||V>=3000&&V<=4999}function G(V){let W=V.length,z=0;while(z<W)if((V[z]&128)===0)z++;else if((V[z]&224)===192){if(z+1===W||(V[z+1]&192)!==128||(V[z]&254)===192)return!1;z+=2}else if((V[z]&240)===224){if(z+2>=W||(V[z+1]&192)!==128||(V[z+2]&192)!==128||V[z]===224&&(V[z+1]&224)===128||V[z]===237&&(V[z+1]&224)===160)return!1;z+=3}else if((V[z]&248)===240){if(z+3>=W||(V[z+1]&192)!==128||(V[z+2]&192)!==128||(V[z+3]&192)!==128||V[z]===240&&(V[z+1]&240)===128||V[z]===244&&V[z+1]>143||V[z]>244)return!1;z+=4}else return!1;return!0}function H(V){return J&&typeof V==="object"&&typeof V.arrayBuffer==="function"&&typeof V.type==="string"&&typeof V.stream==="function"&&(V[Symbol.toStringTag]==="Blob"||V[Symbol.toStringTag]==="File")}if(Q.exports={isBlob:H,isValidStatusCode:X,isValidUTF8:G,tokenChars:Y},Z)Q.exports.isValidUTF8=function(V){return V.length<24?G(V):Z(V)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let V=(()=>{throw Error("Cannot require module utf-8-validate")})();Q.exports.isValidUTF8=function(W){return W.length<32?G(W):V(W)}}catch(V){}}),p6=e(($,Q)=>{var{Writable:Z}=o("stream"),J=r0(),{BINARY_TYPES:Y,EMPTY_BUFFER:X,kStatusCode:G,kWebSocket:H}=M0(),{concat:V,toArrayBuffer:W,unmask:z}=R4(),{isValidStatusCode:B,isValidUTF8:M}=t0(),N=Buffer[Symbol.species],j=0,R=1,x=2,A=3,D=4,U=5,C=6;class E extends Z{constructor(F={}){super();this._allowSynchronousEvents=F.allowSynchronousEvents!==void 0?F.allowSynchronousEvents:!0,this._binaryType=F.binaryType||Y[0],this._extensions=F.extensions||{},this._isServer=!!F.isServer,this._maxPayload=F.maxPayload|0,this._skipUTF8Validation=!!F.skipUTF8Validation,this[H]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=j}_write(F,K,_){if(this._opcode===8&&this._state==j)return _();this._bufferedBytes+=F.length,this._buffers.push(F),this.startLoop(_)}consume(F){if(this._bufferedBytes-=F,F===this._buffers[0].length)return this._buffers.shift();if(F<this._buffers[0].length){let _=this._buffers[0];return this._buffers[0]=new N(_.buffer,_.byteOffset+F,_.length-F),new N(_.buffer,_.byteOffset,F)}let K=Buffer.allocUnsafe(F);do{let _=this._buffers[0],L=K.length-F;if(F>=_.length)K.set(this._buffers.shift(),L);else K.set(new Uint8Array(_.buffer,_.byteOffset,F),L),this._buffers[0]=new N(_.buffer,_.byteOffset+F,_.length-F);F-=_.length}while(F>0);return K}startLoop(F){this._loop=!0;do switch(this._state){case j:this.getInfo(F);break;case R:this.getPayloadLength16(F);break;case x:this.getPayloadLength64(F);break;case A:this.getMask();break;case D:this.getData(F);break;case U:case C:this._loop=!1;return}while(this._loop);if(!this._errored)F()}getInfo(F){if(this._bufferedBytes<2){this._loop=!1;return}let K=this.consume(2);if((K[0]&48)!==0){let L=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");F(L);return}let _=(K[0]&64)===64;if(_&&!this._extensions[J.extensionName]){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");F(L);return}if(this._fin=(K[0]&128)===128,this._opcode=K[0]&15,this._payloadLength=K[1]&127,this._opcode===0){if(_){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");F(L);return}if(!this._fragmented){let L=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");F(L);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let L=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");F(L);return}this._compressed=_}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let L=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");F(L);return}if(_){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");F(L);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let L=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");F(L);return}}else{let L=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");F(L);return}if(!this._fin&&!this._fragmented)this._fragmented=this._opcode;if(this._masked=(K[1]&128)===128,this._isServer){if(!this._masked){let L=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");F(L);return}}else if(this._masked){let L=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");F(L);return}if(this._payloadLength===126)this._state=R;else if(this._payloadLength===127)this._state=x;else this.haveLength(F)}getPayloadLength16(F){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(F)}getPayloadLength64(F){if(this._bufferedBytes<8){this._loop=!1;return}let K=this.consume(8),_=K.readUInt32BE(0);if(_>Math.pow(2,21)-1){let L=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");F(L);return}this._payloadLength=_*Math.pow(2,32)+K.readUInt32BE(4),this.haveLength(F)}haveLength(F){if(this._payloadLength&&this._opcode<8){if(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0){let K=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");F(K);return}}if(this._masked)this._state=A;else this._state=D}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=D}getData(F){let K=X;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}if(K=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0)z(K,this._mask)}if(this._opcode>7){this.controlMessage(K,F);return}if(this._compressed){this._state=U,this.decompress(K,F);return}if(K.length)this._messageLength=this._totalPayloadLength,this._fragments.push(K);this.dataMessage(F)}decompress(F,K){this._extensions[J.extensionName].decompress(F,this._fin,(L,P)=>{if(L)return K(L);if(P.length){if(this._messageLength+=P.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let T=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");K(T);return}this._fragments.push(P)}if(this.dataMessage(K),this._state===j)this.startLoop(K)})}dataMessage(F){if(!this._fin){this._state=j;return}let K=this._messageLength,_=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let L;if(this._binaryType==="nodebuffer")L=V(_,K);else if(this._binaryType==="arraybuffer")L=W(V(_,K));else if(this._binaryType==="blob")L=new Blob(_);else L=_;if(this._allowSynchronousEvents)this.emit("message",L,!0),this._state=j;else this._state=C,setImmediate(()=>{this.emit("message",L,!0),this._state=j,this.startLoop(F)})}else{let L=V(_,K);if(!this._skipUTF8Validation&&!M(L)){let P=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");F(P);return}if(this._state===U||this._allowSynchronousEvents)this.emit("message",L,!1),this._state=j;else this._state=C,setImmediate(()=>{this.emit("message",L,!1),this._state=j,this.startLoop(F)})}}controlMessage(F,K){if(this._opcode===8){if(F.length===0)this._loop=!1,this.emit("conclude",1005,X),this.end();else{let _=F.readUInt16BE(0);if(!B(_)){let P=this.createError(RangeError,`invalid status code ${_}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");K(P);return}let L=new N(F.buffer,F.byteOffset+2,F.length-2);if(!this._skipUTF8Validation&&!M(L)){let P=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");K(P);return}this._loop=!1,this.emit("conclude",_,L),this.end()}this._state=j;return}if(this._allowSynchronousEvents)this.emit(this._opcode===9?"ping":"pong",F),this._state=j;else this._state=C,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",F),this._state=j,this.startLoop(K)})}createError(F,K,_,L,P){this._loop=!1,this._errored=!0;let T=new F(_?`Invalid WebSocket frame: ${K}`:K);return Error.captureStackTrace(T,this.createError),T.code=P,T[G]=L,T}}Q.exports=E}),c6=e(($,Q)=>{var{Duplex:Z}=o("stream"),{randomFillSync:J}=o("crypto"),Y=r0(),{EMPTY_BUFFER:X,kWebSocket:G,NOOP:H}=M0(),{isBlob:V,isValidStatusCode:W}=t0(),{mask:z,toBuffer:B}=R4(),M=Symbol("kByteLength"),N=Buffer.alloc(4),j=8192,R,x=j,A=0,D=1,U=2;class C{constructor(K,_,L){if(this._extensions=_||{},L)this._generateMask=L,this._maskBuffer=Buffer.alloc(4);this._socket=K,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=A,this.onerror=H,this[G]=void 0}static frame(K,_){let L,P=!1,T=2,q=!1;if(_.mask){if(L=_.maskBuffer||N,_.generateMask)_.generateMask(L);else{if(x===j){if(R===void 0)R=Buffer.alloc(j);J(R,0,j),x=0}L[0]=R[x++],L[1]=R[x++],L[2]=R[x++],L[3]=R[x++]}q=(L[0]|L[1]|L[2]|L[3])===0,T=6}let S;if(typeof K==="string")if((!_.mask||q)&&_[M]!==void 0)S=_[M];else K=Buffer.from(K),S=K.length;else S=K.length,P=_.mask&&_.readOnly&&!q;let y=S;if(S>=65536)T+=8,y=127;else if(S>125)T+=2,y=126;let k=Buffer.allocUnsafe(P?S+T:T);if(k[0]=_.fin?_.opcode|128:_.opcode,_.rsv1)k[0]|=64;if(k[1]=y,y===126)k.writeUInt16BE(S,2);else if(y===127)k[2]=k[3]=0,k.writeUIntBE(S,4,6);if(!_.mask)return[k,K];if(k[1]|=128,k[T-4]=L[0],k[T-3]=L[1],k[T-2]=L[2],k[T-1]=L[3],q)return[k,K];if(P)return z(K,L,k,T,S),[k];return z(K,L,K,0,S),[k,K]}close(K,_,L,P){let T;if(K===void 0)T=X;else if(typeof K!=="number"||!W(K))throw TypeError("First argument must be a valid error code number");else if(_===void 0||!_.length)T=Buffer.allocUnsafe(2),T.writeUInt16BE(K,0);else{let S=Buffer.byteLength(_);if(S>123)throw RangeError("The message must not be greater than 123 bytes");if(T=Buffer.allocUnsafe(2+S),T.writeUInt16BE(K,0),typeof _==="string")T.write(_,2);else T.set(_,2)}let q={[M]:T.length,fin:!0,generateMask:this._generateMask,mask:L,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};if(this._state!==A)this.enqueue([this.dispatch,T,!1,q,P]);else this.sendFrame(C.frame(T,q),P)}ping(K,_,L){let P,T;if(typeof K==="string")P=Buffer.byteLength(K),T=!1;else if(V(K))P=K.size,T=!1;else K=B(K),P=K.length,T=B.readOnly;if(P>125)throw RangeError("The data size must not be greater than 125 bytes");let q={[M]:P,fin:!0,generateMask:this._generateMask,mask:_,maskBuffer:this._maskBuffer,opcode:9,readOnly:T,rsv1:!1};if(V(K))if(this._state!==A)this.enqueue([this.getBlobData,K,!1,q,L]);else this.getBlobData(K,!1,q,L);else if(this._state!==A)this.enqueue([this.dispatch,K,!1,q,L]);else this.sendFrame(C.frame(K,q),L)}pong(K,_,L){let P,T;if(typeof K==="string")P=Buffer.byteLength(K),T=!1;else if(V(K))P=K.size,T=!1;else K=B(K),P=K.length,T=B.readOnly;if(P>125)throw RangeError("The data size must not be greater than 125 bytes");let q={[M]:P,fin:!0,generateMask:this._generateMask,mask:_,maskBuffer:this._maskBuffer,opcode:10,readOnly:T,rsv1:!1};if(V(K))if(this._state!==A)this.enqueue([this.getBlobData,K,!1,q,L]);else this.getBlobData(K,!1,q,L);else if(this._state!==A)this.enqueue([this.dispatch,K,!1,q,L]);else this.sendFrame(C.frame(K,q),L)}send(K,_,L){let P=this._extensions[Y.extensionName],T=_.binary?2:1,q=_.compress,S,y;if(typeof K==="string")S=Buffer.byteLength(K),y=!1;else if(V(K))S=K.size,y=!1;else K=B(K),S=K.length,y=B.readOnly;if(this._firstFragment){if(this._firstFragment=!1,q&&P&&P.params[P._isServer?"server_no_context_takeover":"client_no_context_takeover"])q=S>=P._threshold;this._compress=q}else q=!1,T=0;if(_.fin)this._firstFragment=!0;let k={[M]:S,fin:_.fin,generateMask:this._generateMask,mask:_.mask,maskBuffer:this._maskBuffer,opcode:T,readOnly:y,rsv1:q};if(V(K))if(this._state!==A)this.enqueue([this.getBlobData,K,this._compress,k,L]);else this.getBlobData(K,this._compress,k,L);else if(this._state!==A)this.enqueue([this.dispatch,K,this._compress,k,L]);else this.dispatch(K,this._compress,k,L)}getBlobData(K,_,L,P){this._bufferedBytes+=L[M],this._state=U,K.arrayBuffer().then((T)=>{if(this._socket.destroyed){let S=Error("The socket was closed while the blob was being read");process.nextTick(E,this,S,P);return}this._bufferedBytes-=L[M];let q=B(T);if(!_)this._state=A,this.sendFrame(C.frame(q,L),P),this.dequeue();else this.dispatch(q,_,L,P)}).catch((T)=>{process.nextTick(F,this,T,P)})}dispatch(K,_,L,P){if(!_){this.sendFrame(C.frame(K,L),P);return}let T=this._extensions[Y.extensionName];this._bufferedBytes+=L[M],this._state=D,T.compress(K,L.fin,(q,S)=>{if(this._socket.destroyed){let y=Error("The socket was closed while data was being compressed");E(this,y,P);return}this._bufferedBytes-=L[M],this._state=A,L.readOnly=!1,this.sendFrame(C.frame(S,L),P),this.dequeue()})}dequeue(){while(this._state===A&&this._queue.length){let K=this._queue.shift();this._bufferedBytes-=K[3][M],Reflect.apply(K[0],this,K.slice(1))}}enqueue(K){this._bufferedBytes+=K[3][M],this._queue.push(K)}sendFrame(K,_){if(K.length===2)this._socket.cork(),this._socket.write(K[0]),this._socket.write(K[1],_),this._socket.uncork();else this._socket.write(K[0],_)}}Q.exports=C;function E(K,_,L){if(typeof L==="function")L(_);for(let P=0;P<K._queue.length;P++){let T=K._queue[P],q=T[T.length-1];if(typeof q==="function")q(_)}}function F(K,_,L){E(K,_,L),K.onerror(_)}}),YZ=e(($,Q)=>{var{kForOnEventAttribute:Z,kListener:J}=M0(),Y=Symbol("kCode"),X=Symbol("kData"),G=Symbol("kError"),H=Symbol("kMessage"),V=Symbol("kReason"),W=Symbol("kTarget"),z=Symbol("kType"),B=Symbol("kWasClean");class M{constructor(D){this[W]=null,this[z]=D}get target(){return this[W]}get type(){return this[z]}}Object.defineProperty(M.prototype,"target",{enumerable:!0}),Object.defineProperty(M.prototype,"type",{enumerable:!0});class N extends M{constructor(D,U={}){super(D);this[Y]=U.code===void 0?0:U.code,this[V]=U.reason===void 0?"":U.reason,this[B]=U.wasClean===void 0?!1:U.wasClean}get code(){return this[Y]}get reason(){return this[V]}get wasClean(){return this[B]}}Object.defineProperty(N.prototype,"code",{enumerable:!0}),Object.defineProperty(N.prototype,"reason",{enumerable:!0}),Object.defineProperty(N.prototype,"wasClean",{enumerable:!0});class j extends M{constructor(D,U={}){super(D);this[G]=U.error===void 0?null:U.error,this[H]=U.message===void 0?"":U.message}get error(){return this[G]}get message(){return this[H]}}Object.defineProperty(j.prototype,"error",{enumerable:!0}),Object.defineProperty(j.prototype,"message",{enumerable:!0});class R extends M{constructor(D,U={}){super(D);this[X]=U.data===void 0?null:U.data}get data(){return this[X]}}Object.defineProperty(R.prototype,"data",{enumerable:!0});var x={addEventListener(D,U,C={}){for(let F of this.listeners(D))if(!C[Z]&&F[J]===U&&!F[Z])return;let E;if(D==="message")E=function(K,_){let L=new R("message",{data:_?K:K.toString()});L[W]=this,A(U,this,L)};else if(D==="close")E=function(K,_){let L=new N("close",{code:K,reason:_.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});L[W]=this,A(U,this,L)};else if(D==="error")E=function(K){let _=new j("error",{error:K,message:K.message});_[W]=this,A(U,this,_)};else if(D==="open")E=function(){let K=new M("open");K[W]=this,A(U,this,K)};else return;if(E[Z]=!!C[Z],E[J]=U,C.once)this.once(D,E);else this.on(D,E)},removeEventListener(D,U){for(let C of this.listeners(D))if(C[J]===U&&!C[Z]){this.removeListener(D,C);break}}};Q.exports={CloseEvent:N,ErrorEvent:j,Event:M,EventTarget:x,MessageEvent:R};function A(D,U,C){if(typeof D==="object"&&D.handleEvent)D.handleEvent.call(D,C);else D.call(U,C)}}),q8=e(($,Q)=>{var{tokenChars:Z}=t0();function J(G,H,V){if(G[H]===void 0)G[H]=[V];else G[H].push(V)}function Y(G){let H=Object.create(null),V=Object.create(null),W=!1,z=!1,B=!1,M,N,j=-1,R=-1,x=-1,A=0;for(;A<G.length;A++)if(R=G.charCodeAt(A),M===void 0)if(x===-1&&Z[R]===1){if(j===-1)j=A}else if(A!==0&&(R===32||R===9)){if(x===-1&&j!==-1)x=A}else if(R===59||R===44){if(j===-1)throw SyntaxError(`Unexpected character at index ${A}`);if(x===-1)x=A;let U=G.slice(j,x);if(R===44)J(H,U,V),V=Object.create(null);else M=U;j=x=-1}else throw SyntaxError(`Unexpected character at index ${A}`);else if(N===void 0)if(x===-1&&Z[R]===1){if(j===-1)j=A}else if(R===32||R===9){if(x===-1&&j!==-1)x=A}else if(R===59||R===44){if(j===-1)throw SyntaxError(`Unexpected character at index ${A}`);if(x===-1)x=A;if(J(V,G.slice(j,x),!0),R===44)J(H,M,V),V=Object.create(null),M=void 0;j=x=-1}else if(R===61&&j!==-1&&x===-1)N=G.slice(j,A),j=x=-1;else throw SyntaxError(`Unexpected character at index ${A}`);else if(z){if(Z[R]!==1)throw SyntaxError(`Unexpected character at index ${A}`);if(j===-1)j=A;else if(!W)W=!0;z=!1}else if(B)if(Z[R]===1){if(j===-1)j=A}else if(R===34&&j!==-1)B=!1,x=A;else if(R===92)z=!0;else throw SyntaxError(`Unexpected character at index ${A}`);else if(R===34&&G.charCodeAt(A-1)===61)B=!0;else if(x===-1&&Z[R]===1){if(j===-1)j=A}else if(j!==-1&&(R===32||R===9)){if(x===-1)x=A}else if(R===59||R===44){if(j===-1)throw SyntaxError(`Unexpected character at index ${A}`);if(x===-1)x=A;let U=G.slice(j,x);if(W)U=U.replace(/\\/g,""),W=!1;if(J(V,N,U),R===44)J(H,M,V),V=Object.create(null),M=void 0;N=void 0,j=x=-1}else throw SyntaxError(`Unexpected character at index ${A}`);if(j===-1||B||R===32||R===9)throw SyntaxError("Unexpected end of input");if(x===-1)x=A;let D=G.slice(j,x);if(M===void 0)J(H,D,V);else{if(N===void 0)J(V,D,!0);else if(W)J(V,N,D.replace(/\\/g,""));else J(V,N,D);J(H,M,V)}return H}function X(G){return Object.keys(G).map((H)=>{let V=G[H];if(!Array.isArray(V))V=[V];return V.map((W)=>{return[H].concat(Object.keys(W).map((z)=>{let B=W[z];if(!Array.isArray(B))B=[B];return B.map((M)=>M===!0?z:`${z}=${M}`).join("; ")})).join("; ")}).join(", ")}).join(", ")}Q.exports={format:X,parse:Y}}),w8=e(($,Q)=>{var Z=o("events"),J=o("https"),Y=o("http"),X=o("net"),G=o("tls"),{randomBytes:H,createHash:V}=o("crypto"),{Duplex:W,Readable:z}=o("stream"),{URL:B}=o("url"),M=r0(),N=p6(),j=c6(),{isBlob:R}=t0(),{BINARY_TYPES:x,CLOSE_TIMEOUT:A,EMPTY_BUFFER:D,GUID:U,kForOnEventAttribute:C,kListener:E,kStatusCode:F,kWebSocket:K,NOOP:_}=M0(),{EventTarget:{addEventListener:L,removeEventListener:P}}=YZ(),{format:T,parse:q}=q8(),{toBuffer:S}=R4(),y=Symbol("kAborted"),k=[8,13],h=["CONNECTING","OPEN","CLOSING","CLOSED"],c=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class I extends Z{constructor(O,w,b){super();if(this._binaryType=x[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=D,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=I.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,O!==null){if(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,w===void 0)w=[];else if(!Array.isArray(w))if(typeof w==="object"&&w!==null)b=w,w=[];else w=[w];u(this,O,w,b)}else this._autoPong=b.autoPong,this._closeTimeout=b.closeTimeout,this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(O){if(!x.includes(O))return;if(this._binaryType=O,this._receiver)this._receiver._binaryType=O}get bufferedAmount(){if(!this._socket)return this._bufferedAmount;return this._socket._writableState.length+this._sender._bufferedBytes}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(O,w,b){let g=new N({allowSynchronousEvents:b.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:b.maxPayload,skipUTF8Validation:b.skipUTF8Validation}),f=new j(O,this._extensions,b.generateMask);if(this._receiver=g,this._sender=f,this._socket=O,g[K]=this,f[K]=this,O[K]=this,g.on("conclude",q$),g.on("drain",w$),g.on("error",S$),g.on("message",y$),g.on("ping",k$),g.on("pong",f$),f.onerror=v$,O.setTimeout)O.setTimeout(0);if(O.setNoDelay)O.setNoDelay();if(w.length>0)O.unshift(w);O.on("close",n8),O.on("data",J4),O.on("end",o8),O.on("error",a8),this._readyState=I.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=I.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}if(this._extensions[M.extensionName])this._extensions[M.extensionName].cleanup();this._receiver.removeAllListeners(),this._readyState=I.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(O,w){if(this.readyState===I.CLOSED)return;if(this.readyState===I.CONNECTING){s(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===I.CLOSING){if(this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted))this._socket.end();return}this._readyState=I.CLOSING,this._sender.close(O,w,!this._isServer,(b)=>{if(b)return;if(this._closeFrameSent=!0,this._closeFrameReceived||this._receiver._writableState.errorEmitted)this._socket.end()}),i8(this)}pause(){if(this.readyState===I.CONNECTING||this.readyState===I.CLOSED)return;this._paused=!0,this._socket.pause()}ping(O,w,b){if(this.readyState===I.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof O==="function")b=O,O=w=void 0;else if(typeof w==="function")b=w,w=void 0;if(typeof O==="number")O=O.toString();if(this.readyState!==I.OPEN){x4(this,O,b);return}if(w===void 0)w=!this._isServer;this._sender.ping(O||D,w,b)}pong(O,w,b){if(this.readyState===I.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof O==="function")b=O,O=w=void 0;else if(typeof w==="function")b=w,w=void 0;if(typeof O==="number")O=O.toString();if(this.readyState!==I.OPEN){x4(this,O,b);return}if(w===void 0)w=!this._isServer;this._sender.pong(O||D,w,b)}resume(){if(this.readyState===I.CONNECTING||this.readyState===I.CLOSED)return;if(this._paused=!1,!this._receiver._writableState.needDrain)this._socket.resume()}send(O,w,b){if(this.readyState===I.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof w==="function")b=w,w={};if(typeof O==="number")O=O.toString();if(this.readyState!==I.OPEN){x4(this,O,b);return}let g={binary:typeof O!=="string",mask:!this._isServer,compress:!0,fin:!0,...w};if(!this._extensions[M.extensionName])g.compress=!1;this._sender.send(O||D,g,b)}terminate(){if(this.readyState===I.CLOSED)return;if(this.readyState===I.CONNECTING){s(this,this._req,"WebSocket was closed before the connection was established");return}if(this._socket)this._readyState=I.CLOSING,this._socket.destroy()}}Object.defineProperty(I,"CONNECTING",{enumerable:!0,value:h.indexOf("CONNECTING")}),Object.defineProperty(I.prototype,"CONNECTING",{enumerable:!0,value:h.indexOf("CONNECTING")}),Object.defineProperty(I,"OPEN",{enumerable:!0,value:h.indexOf("OPEN")}),Object.defineProperty(I.prototype,"OPEN",{enumerable:!0,value:h.indexOf("OPEN")}),Object.defineProperty(I,"CLOSING",{enumerable:!0,value:h.indexOf("CLOSING")}),Object.defineProperty(I.prototype,"CLOSING",{enumerable:!0,value:h.indexOf("CLOSING")}),Object.defineProperty(I,"CLOSED",{enumerable:!0,value:h.indexOf("CLOSED")}),Object.defineProperty(I.prototype,"CLOSED",{enumerable:!0,value:h.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((O)=>{Object.defineProperty(I.prototype,O,{enumerable:!0})}),["open","error","close","message"].forEach((O)=>{Object.defineProperty(I.prototype,`on${O}`,{enumerable:!0,get(){for(let w of this.listeners(O))if(w[C])return w[E];return null},set(w){for(let b of this.listeners(O))if(b[C]){this.removeListener(O,b);break}if(typeof w!=="function")return;this.addEventListener(O,w,{[C]:!0})}})}),I.prototype.addEventListener=L,I.prototype.removeEventListener=P,Q.exports=I;function u(O,w,b,g){let f={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:A,protocolVersion:k[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...g,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(O._autoPong=f.autoPong,O._closeTimeout=f.closeTimeout,!k.includes(f.protocolVersion))throw RangeError(`Unsupported protocol version: ${f.protocolVersion} (supported versions: ${k.join(", ")})`);let m;if(w instanceof B)m=w;else try{m=new B(w)}catch{throw SyntaxError(`Invalid URL: ${w}`)}if(m.protocol==="http:")m.protocol="ws:";else if(m.protocol==="https:")m.protocol="wss:";O._url=m.href;let D0=m.protocol==="wss:",P0=m.protocol==="ws+unix:",v0;if(m.protocol!=="ws:"&&!D0&&!P0)v0=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`;else if(P0&&!m.pathname)v0="The URL's pathname is empty";else if(m.hash)v0="The URL contains a fragment identifier";if(v0){let p=SyntaxError(v0);if(O._redirects===0)throw p;else{d(O,p);return}}let r8=D0?443:80,t8=H(16).toString("base64"),s8=D0?J.request:Y.request,b0=new Set,h0;if(f.createConnection=f.createConnection||(D0?C0:Z0),f.defaultPort=f.defaultPort||r8,f.port=m.port||r8,f.host=m.hostname.startsWith("[")?m.hostname.slice(1,-1):m.hostname,f.headers={...f.headers,"Sec-WebSocket-Version":f.protocolVersion,"Sec-WebSocket-Key":t8,Connection:"Upgrade",Upgrade:"websocket"},f.path=m.pathname+m.search,f.timeout=f.handshakeTimeout,f.perMessageDeflate)h0=new M({...f.perMessageDeflate,isServer:!1,maxPayload:f.maxPayload}),f.headers["Sec-WebSocket-Extensions"]=T({[M.extensionName]:h0.offer()});if(b.length){for(let p of b){if(typeof p!=="string"||!c.test(p)||b0.has(p))throw SyntaxError("An invalid or duplicated subprotocol was specified");b0.add(p)}f.headers["Sec-WebSocket-Protocol"]=b.join(",")}if(f.origin)if(f.protocolVersion<13)f.headers["Sec-WebSocket-Origin"]=f.origin;else f.headers.Origin=f.origin;if(m.username||m.password)f.auth=`${m.username}:${m.password}`;if(P0){let p=f.path.split(":");f.socketPath=p[0],f.path=p[1]}let n;if(f.followRedirects){if(O._redirects===0){O._originalIpc=P0,O._originalSecure=D0,O._originalHostOrSocketPath=P0?f.socketPath:m.host;let p=g&&g.headers;if(g={...g,headers:{}},p)for(let[r,T0]of Object.entries(p))g.headers[r.toLowerCase()]=T0}else if(O.listenerCount("redirect")===0){let p=P0?O._originalIpc?f.socketPath===O._originalHostOrSocketPath:!1:O._originalIpc?!1:m.host===O._originalHostOrSocketPath;if(!p||O._originalSecure&&!D0){if(delete f.headers.authorization,delete f.headers.cookie,!p)delete f.headers.host;f.auth=void 0}}if(f.auth&&!g.headers.authorization)g.headers.authorization="Basic "+Buffer.from(f.auth).toString("base64");if(n=O._req=s8(f),O._redirects)O.emit("redirect",O.url,n)}else n=O._req=s8(f);if(f.timeout)n.on("timeout",()=>{s(O,n,"Opening handshake has timed out")});if(n.on("error",(p)=>{if(n===null||n[y])return;n=O._req=null,d(O,p)}),n.on("response",(p)=>{let r=p.headers.location,T0=p.statusCode;if(r&&f.followRedirects&&T0>=300&&T0<400){if(++O._redirects>f.maxRedirects){s(O,n,"Maximum redirects exceeded");return}n.abort();let u0;try{u0=new B(r,w)}catch(e8){let E0=SyntaxError(`Invalid URL: ${r}`);d(O,E0);return}u(O,u0,b,g)}else if(!O.emit("unexpected-response",n,p))s(O,n,`Unexpected server response: ${p.statusCode}`)}),n.on("upgrade",(p,r,T0)=>{if(O.emit("upgrade",p),O.readyState!==I.CONNECTING)return;n=O._req=null;let u0=p.headers.upgrade;if(u0===void 0||u0.toLowerCase()!=="websocket"){s(O,r,"Invalid Upgrade header");return}let e8=V("sha1").update(t8+U).digest("base64");if(p.headers["sec-websocket-accept"]!==e8){s(O,r,"Invalid Sec-WebSocket-Accept header");return}let E0=p.headers["sec-websocket-protocol"],g0;if(E0!==void 0){if(!b0.size)g0="Server sent a subprotocol but none was requested";else if(!b0.has(E0))g0="Server sent an invalid subprotocol"}else if(b0.size)g0="Server sent no subprotocol";if(g0){s(O,r,g0);return}if(E0)O._protocol=E0;let $9=p.headers["sec-websocket-extensions"];if($9!==void 0){if(!h0){s(O,r,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let q4;try{q4=q($9)}catch(w4){s(O,r,"Invalid Sec-WebSocket-Extensions header");return}let Q9=Object.keys(q4);if(Q9.length!==1||Q9[0]!==M.extensionName){s(O,r,"Server indicated an extension that was not requested");return}try{h0.accept(q4[M.extensionName])}catch(w4){s(O,r,"Invalid Sec-WebSocket-Extensions header");return}O._extensions[M.extensionName]=h0}O.setSocket(r,T0,{allowSynchronousEvents:f.allowSynchronousEvents,generateMask:f.generateMask,maxPayload:f.maxPayload,skipUTF8Validation:f.skipUTF8Validation})}),f.finishRequest)f.finishRequest(n,O);else n.end()}function d(O,w){O._readyState=I.CLOSING,O._errorEmitted=!0,O.emit("error",w),O.emitClose()}function Z0(O){return O.path=O.socketPath,X.connect(O)}function C0(O){if(O.path=void 0,!O.servername&&O.servername!=="")O.servername=X.isIP(O.host)?"":O.host;return G.connect(O)}function s(O,w,b){O._readyState=I.CLOSING;let g=Error(b);if(Error.captureStackTrace(g,s),w.setHeader){if(w[y]=!0,w.abort(),w.socket&&!w.socket.destroyed)w.socket.destroy();process.nextTick(d,O,g)}else w.destroy(g),w.once("error",O.emit.bind(O,"error")),w.once("close",O.emitClose.bind(O))}function x4(O,w,b){if(w){let g=R(w)?w.size:S(w).length;if(O._socket)O._sender._bufferedBytes+=g;else O._bufferedAmount+=g}if(b){let g=Error(`WebSocket is not open: readyState ${O.readyState} (${h[O.readyState]})`);process.nextTick(b,g)}}function q$(O,w){let b=this[K];if(b._closeFrameReceived=!0,b._closeMessage=w,b._closeCode=O,b._socket[K]===void 0)return;if(b._socket.removeListener("data",J4),process.nextTick(d8,b._socket),O===1005)b.close();else b.close(O,w)}function w$(){let O=this[K];if(!O.isPaused)O._socket.resume()}function S$(O){let w=this[K];if(w._socket[K]!==void 0)w._socket.removeListener("data",J4),process.nextTick(d8,w._socket),w.close(O[F]);if(!w._errorEmitted)w._errorEmitted=!0,w.emit("error",O)}function m8(){this[K].emitClose()}function y$(O,w){this[K].emit("message",O,w)}function k$(O){let w=this[K];if(w._autoPong)w.pong(O,!this._isServer,_);w.emit("ping",O)}function f$(O){this[K].emit("pong",O)}function d8(O){O.resume()}function v$(O){let w=this[K];if(w.readyState===I.CLOSED)return;if(w.readyState===I.OPEN)w._readyState=I.CLOSING,i8(w);if(this._socket.end(),!w._errorEmitted)w._errorEmitted=!0,w.emit("error",O)}function i8(O){O._closeTimer=setTimeout(O._socket.destroy.bind(O._socket),O._closeTimeout)}function n8(){let O=this[K];if(this.removeListener("close",n8),this.removeListener("data",J4),this.removeListener("end",o8),O._readyState=I.CLOSING,!this._readableState.endEmitted&&!O._closeFrameReceived&&!O._receiver._writableState.errorEmitted&&this._readableState.length!==0){let w=this.read(this._readableState.length);O._receiver.write(w)}if(O._receiver.end(),this[K]=void 0,clearTimeout(O._closeTimer),O._receiver._writableState.finished||O._receiver._writableState.errorEmitted)O.emitClose();else O._receiver.on("error",m8),O._receiver.on("finish",m8)}function J4(O){if(!this[K]._receiver.write(O))this.pause()}function o8(){let O=this[K];O._readyState=I.CLOSING,O._receiver.end(),this.end()}function a8(){let O=this[K];if(this.removeListener("error",a8),this.on("error",_),O)O._readyState=I.CLOSING,this.destroy()}}),XZ=e(($,Q)=>{var Z=w8(),{Duplex:J}=o("stream");function Y(V){V.emit("close")}function X(){if(!this.destroyed&&this._writableState.finished)this.destroy()}function G(V){if(this.removeListener("error",G),this.destroy(),this.listenerCount("error")===0)this.emit("error",V)}function H(V,W){let z=!0,B=new J({...W,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return V.on("message",function(N,j){let R=!j&&B._readableState.objectMode?N.toString():N;if(!B.push(R))V.pause()}),V.once("error",function(N){if(B.destroyed)return;z=!1,B.destroy(N)}),V.once("close",function(){if(B.destroyed)return;B.push(null)}),B._destroy=function(M,N){if(V.readyState===V.CLOSED){N(M),process.nextTick(Y,B);return}let j=!1;if(V.once("error",function(x){j=!0,N(x)}),V.once("close",function(){if(!j)N(M);process.nextTick(Y,B)}),z)V.terminate()},B._final=function(M){if(V.readyState===V.CONNECTING){V.once("open",function(){B._final(M)});return}if(V._socket===null)return;if(V._socket._writableState.finished){if(M(),B._readableState.endEmitted)B.destroy()}else V._socket.once("finish",function(){M()}),V.close()},B._read=function(){if(V.isPaused)V.resume()},B._write=function(M,N,j){if(V.readyState===V.CONNECTING){V.once("open",function(){B._write(M,N,j)});return}V.send(M,j)},B.on("end",X),B.on("error",G),B}Q.exports=H}),l6=e(($,Q)=>{var{tokenChars:Z}=t0();function J(Y){let X=new Set,G=-1,H=-1,V=0;for(V;V<Y.length;V++){let z=Y.charCodeAt(V);if(H===-1&&Z[z]===1){if(G===-1)G=V}else if(V!==0&&(z===32||z===9)){if(H===-1&&G!==-1)H=V}else if(z===44){if(G===-1)throw SyntaxError(`Unexpected character at index ${V}`);if(H===-1)H=V;let B=Y.slice(G,H);if(X.has(B))throw SyntaxError(`The "${B}" subprotocol is duplicated`);X.add(B),G=H=-1}else throw SyntaxError(`Unexpected character at index ${V}`)}if(G===-1||H!==-1)throw SyntaxError("Unexpected end of input");let W=Y.slice(G,V);if(X.has(W))throw SyntaxError(`The "${W}" subprotocol is duplicated`);return X.add(W),X}Q.exports={parse:J}}),GZ=e(($,Q)=>{var Z=o("events"),J=o("http"),{Duplex:Y}=o("stream"),{createHash:X}=o("crypto"),G=q8(),H=r0(),V=l6(),W=w8(),{CLOSE_TIMEOUT:z,GUID:B,kWebSocket:M}=M0(),N=/^[+/0-9A-Za-z]{22}==$/,j=0,R=1,x=2;class A extends Z{constructor(K,_){super();if(K={allowSynchronousEvents:!0,autoPong:!0,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:z,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:W,...K},K.port==null&&!K.server&&!K.noServer||K.port!=null&&(K.server||K.noServer)||K.server&&K.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(K.port!=null)this._server=J.createServer((L,P)=>{let T=J.STATUS_CODES[426];P.writeHead(426,{"Content-Length":T.length,"Content-Type":"text/plain"}),P.end(T)}),this._server.listen(K.port,K.host,K.backlog,_);else if(K.server)this._server=K.server;if(this._server){let L=this.emit.bind(this,"connection");this._removeListeners=D(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(P,T,q)=>{this.handleUpgrade(P,T,q,L)}})}if(K.perMessageDeflate===!0)K.perMessageDeflate={};if(K.clientTracking)this.clients=new Set,this._shouldEmitClose=!1;this.options=K,this._state=j}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');if(!this._server)return null;return this._server.address()}close(K){if(this._state===x){if(K)this.once("close",()=>{K(Error("The server is not running"))});process.nextTick(U,this);return}if(K)this.once("close",K);if(this._state===R)return;if(this._state=R,this.options.noServer||this.options.server){if(this._server)this._removeListeners(),this._removeListeners=this._server=null;if(this.clients)if(!this.clients.size)process.nextTick(U,this);else this._shouldEmitClose=!0;else process.nextTick(U,this)}else{let _=this._server;this._removeListeners(),this._removeListeners=this._server=null,_.close(()=>{U(this)})}}shouldHandle(K){if(this.options.path){let _=K.url.indexOf("?");if((_!==-1?K.url.slice(0,_):K.url)!==this.options.path)return!1}return!0}handleUpgrade(K,_,L,P){_.on("error",C);let T=K.headers["sec-websocket-key"],q=K.headers.upgrade,S=+K.headers["sec-websocket-version"];if(K.method!=="GET"){F(this,K,_,405,"Invalid HTTP method");return}if(q===void 0||q.toLowerCase()!=="websocket"){F(this,K,_,400,"Invalid Upgrade header");return}if(T===void 0||!N.test(T)){F(this,K,_,400,"Missing or invalid Sec-WebSocket-Key header");return}if(S!==13&&S!==8){F(this,K,_,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(K)){E(_,400);return}let y=K.headers["sec-websocket-protocol"],k=new Set;if(y!==void 0)try{k=V.parse(y)}catch(I){F(this,K,_,400,"Invalid Sec-WebSocket-Protocol header");return}let h=K.headers["sec-websocket-extensions"],c={};if(this.options.perMessageDeflate&&h!==void 0){let I=new H({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let u=G.parse(h);if(u[H.extensionName])I.accept(u[H.extensionName]),c[H.extensionName]=I}catch(u){F(this,K,_,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let I={origin:K.headers[`${S===8?"sec-websocket-origin":"origin"}`],secure:!!(K.socket.authorized||K.socket.encrypted),req:K};if(this.options.verifyClient.length===2){this.options.verifyClient(I,(u,d,Z0,C0)=>{if(!u)return E(_,d||401,Z0,C0);this.completeUpgrade(c,T,k,K,_,L,P)});return}if(!this.options.verifyClient(I))return E(_,401)}this.completeUpgrade(c,T,k,K,_,L,P)}completeUpgrade(K,_,L,P,T,q,S){if(!T.readable||!T.writable)return T.destroy();if(T[M])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>j)return E(T,503);let k=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${X("sha1").update(_+B).digest("base64")}`],h=new this.options.WebSocket(null,void 0,this.options);if(L.size){let c=this.options.handleProtocols?this.options.handleProtocols(L,P):L.values().next().value;if(c)k.push(`Sec-WebSocket-Protocol: ${c}`),h._protocol=c}if(K[H.extensionName]){let c=K[H.extensionName].params,I=G.format({[H.extensionName]:[c]});k.push(`Sec-WebSocket-Extensions: ${I}`),h._extensions=K}if(this.emit("headers",k,P),T.write(k.concat(`\r
35
35
  `).join(`\r
36
36
  `)),T.removeListener("error",C),h.setSocket(T,q,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients)this.clients.add(h),h.on("close",()=>{if(this.clients.delete(h),this._shouldEmitClose&&!this.clients.size)process.nextTick(U,this)});S(h,P)}}Q.exports=A;function D(K,_){for(let L of Object.keys(_))K.on(L,_[L]);return function(){for(let P of Object.keys(_))K.removeListener(P,_[P])}}function U(K){K._state=x,K.emit("close")}function C(){this.destroy()}function E(K,_,L,P){L=L||J.STATUS_CODES[_],P={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(L),...P},K.once("finish",K.destroy),K.end(`HTTP/1.1 ${_} ${J.STATUS_CODES[_]}\r
37
37
  `+Object.keys(P).map((T)=>`${T}: ${P[T]}`).join(`\r
38
38
  `)+`\r
39
39
  \r
40
- `+L)}function F(K,_,L,P,T,q){if(K.listenerCount("wsClientError")){let S=Error(T);Error.captureStackTrace(S,F),K.emit("wsClientError",S,L,_)}else E(L,P,T,q)}});sJ=z0(XZ(),1),eJ=z0(q8(),1),$3=z0(r0(),1),Q3=z0(p6(),1),Z3=z0(c6(),1),J3=z0(l6(),1),RZ=z0(w8(),1),s6=z0(GZ(),1),u6=RZ.default;kZ={"Network.setUserAgentOverride":"Page.overrideUserAgent","Network.setCacheDisabled":"Network.setResourceCachingDisabled"},fZ={"Network.requestWillBeSent":{walltime:"wallTime"}},vZ={hasUserGesture:!1,redirectHasExtraInfo:!1},bZ={hasExtraInfo:!1},hZ={encodedDataLength:0,shouldReportCorbBlocking:!1},uZ={initialPriority:"Medium",referrerPolicy:"origin"},gZ={connectionReused:!1,connectionId:0,fromDiskCache:!1,fromServiceWorker:!1,encodedDataLength:0};tZ={"media-rule":"mediaRule","media-import-rule":"importRule","media-style-node":"inlineSheet","media-link-node":"linkedSheet"};Z2={protocolVersion:"1.3",product:"Safari/inspect-webkit",revision:"605.1.15",userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit",jsVersion:""};z2=["Animation","Autofill","Audits","ServiceWorker","Profiler","HeapProfiler","Storage","Tethering","Tracing","BackgroundService","FedCm","DeviceAccess","WebAuthn","Cast","Database","ApplicationCache","BackgroundFetch","DeviceOrientation","EventBreakpoints","FileSystem","HeadlessExperimental","IndexedDB","Memory","PerformanceTimeline","Performance","Preload","Schema","Security","SystemInfo","WebAudio"],H2={"Network.setAttachDebugStack":{},"Network.emulateNetworkConditionsByRule":{ruleIds:[]},"Network.overrideNetworkState":{},"Network.clearAcceptedEncodingsOverride":{},"Network.setAcceptedEncodings":{},"Network.enableReportingApi":{},"Overlay.setShowHinge":{},"Overlay.setShowViewportSizeOnResize":{},"Overlay.setShowGridOverlays":{},"Overlay.setShowFlexOverlays":{},"Overlay.setShowScrollSnapOverlays":{},"Overlay.setShowContainerQueryOverlays":{},"Overlay.setShowIsolatedElements":{},"Overlay.setPausedInDebuggerMessage":{},"Overlay.setShowAdHighlights":{},"Overlay.setShowDebugBorders":{},"Overlay.setShowFPSCounter":{},"Overlay.setShowLayoutShiftRegions":{},"Overlay.setShowScrollBottleneckRects":{},"Overlay.setShowHitTestBorders":{},"Overlay.setShowWebVitals":{},"CSS.trackComputedStyleUpdates":{},"CSS.takeComputedStyleUpdates":{nodeIds:[]},"CSS.startRuleUsageTracking":{},"CSS.stopRuleUsageTracking":{ruleUsage:[]},"CSS.takeCoverageDelta":{coverage:[],timestamp:0},"Page.setAdBlockingEnabled":{},"Page.removeScriptToEvaluateOnNewDocument":{},"Page.setBypassCSP":{},"Page.setInterceptFileChooserDialog":{},"Page.setPrerenderingAllowed":{},"Page.setRPHRegistrationMode":{},"Page.setSPCTransactionMode":{},"Emulation.setEmulatedVisionDeficiency":{},"Emulation.setFocusEmulationEnabled":{},"Emulation.setAutoDarkModeOverride":{},"Emulation.setAutomationOverride":{},"Emulation.setLocaleOverride":{},"Emulation.setTimezoneOverride":{},"Emulation.setVisibleSize":{},"Emulation.setIdleOverride":{},"Emulation.clearIdleOverride":{},"Emulation.setGeolocationOverride":{},"Emulation.clearGeolocationOverride":{},"Emulation.setSensorOverrideEnabled":{},"Emulation.setSensorOverrideReadings":{},"Emulation.setHardwareConcurrencyOverride":{},"Emulation.setNavigatorOverrides":{},"Emulation.setPageScaleFactor":{},"Emulation.setScrollbarsHidden":{},"Emulation.setDocumentCookieDisabled":{},"DOMDebugger.setBreakOnCSPViolation":{},"Runtime.addBinding":{},"Runtime.removeBinding":{},"Debugger.setReturnValue":{},"Debugger.setBlackboxExecutionContexts":{},"Debugger.setInstrumentationBreakpoint":{},"DOM.markUndoableState":{},"DOM.undo":{},"DOM.redo":{},"DOM.copyTo":{nodeId:0},"DOM.collectClassNamesFromSubtree":{classNames:[]},"Accessibility.enable":{},"Accessibility.disable":{},"Accessibility.getFullAXTree":{nodes:[]},"Accessibility.getRootAXNode":{node:null},"Accessibility.getPartialAXTree":{nodes:[]},"Accessibility.queryAXTree":{nodes:[]},"Accessibility.getAXNodeAndAncestors":{nodes:[]},"Accessibility.getChildAXNodes":{nodes:[]}};F2={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}});import{readdirSync as q2,readFileSync as w2,existsSync as C$,unlinkSync as H$,watch as S2}from"fs";import{execSync as Q4,spawn as y2,exec as k2,execFile as R0}from"child_process";import{tmpdir as f2}from"os";import{join as c8}from"path";import{createServer as v2}from"net";import{createHash as b2,randomBytes as h2,timingSafeEqual as u2}from"crypto";import{WebSocket as M$}from"ws";var S4="Accessibility unavailable on this simulator.";import{createRequire as $5}from"module";import{dirname as k4,join as f4}from"path";import{existsSync as Q5}from"fs";import{fileURLToPath as V9}from"url";var G4={mjpegFps:60,mjpegQuality:0.7,maxDimension:0,h264Bitrate:6000000,h264Fps:60},t$={transport:"http",httpCodec:"auto",webRtcCodec:"h264",...G4};function J9($){return typeof $==="number"&&Number.isFinite($)?$:null}function Y9($,Q,Z,J){let Y=J9($);return Y==null?Q:Math.min(J,Math.max(Z,Y))}function X4($,Q,Z,J){return Math.round(Y9($,Q,Z,J))}function s$($){if(!Array.isArray($)||$.length>16)return null;let Q=[];for(let Z of $){if(!Z||typeof Z!=="object")return null;let J=Z.urls;if(!Array.isArray(J)||J.length===0||J.length>16||!J.every((G)=>typeof G==="string"&&G.length<=2048&&/^(stun|stuns|turn|turns):/i.test(G)))return null;let{username:Y,credential:X}=Z;if(Y!==void 0&&typeof Y!=="string")return null;if(X!==void 0&&typeof X!=="string")return null;Q.push({urls:J,...typeof Y==="string"?{username:Y}:{},...typeof X==="string"?{credential:X}:{}})}return Q}var e$=new Set(["mjpegFps","mjpegQuality","maxDimension","h264Bitrate","h264Fps"]);function X9($){if(!$||typeof $!=="object"||Array.isArray($))return null;let Q=$,Z=Object.keys(Q);if(Z.length===0||Z.some((J)=>!e$.has(J)))return null;for(let J of["mjpegFps","mjpegQuality","maxDimension","h264Bitrate","h264Fps"])if(J in Q&&J9(Q[J])==null)return null;return Q}function Z9($={},Q=t$){let J=Object.prototype.hasOwnProperty.call($,"iceServers")?s$($.iceServers):Q.iceServers,Y=J===null?Q.iceServers:J&&J.length>0?J:void 0;return{transport:$.transport==="http"||$.transport==="webrtc"?$.transport:Q.transport,httpCodec:$.httpCodec==="auto"||$.httpCodec==="mjpeg"||$.httpCodec==="h264"?$.httpCodec:Q.httpCodec,webRtcCodec:$.webRtcCodec==="vp8"||$.webRtcCodec==="vp9"||$.webRtcCodec==="h264"?$.webRtcCodec:Q.webRtcCodec,...Y?{iceServers:Y}:{},...y4($,Q)}}function y4($={},Q=G4){return{mjpegFps:X4($.mjpegFps,Q.mjpegFps,1,120),mjpegQuality:Y9($.mjpegQuality,Q.mjpegQuality,0.05,1),maxDimension:X4($.maxDimension,Q.maxDimension,0,4096),h264Bitrate:X4($.h264Bitrate,Q.h264Bitrate,1e5,50000000),h264Fps:X4($.h264Fps,Q.h264Fps,1,120)}}function G9($){return{mjpegFps:$.mjpegFps,mjpegQuality:$.mjpegQuality,maxDimension:$.maxDimension,h264Bitrate:$.h264Bitrate,h264Fps:$.h264Fps}}function K9($){if($?.transport==="webrtc")return Z9({transport:"webrtc",webRtcCodec:$.codec,iceServers:$.iceServers});return Z9({transport:"http",httpCodec:$?.codec??"auto"})}var Z5=$5(import.meta.url),J5=0,Y5=1,X5=1,G5=2,c0={portrait:1,portraitUpsideDown:2,landscapeRight:3,landscapeLeft:4};function K5(){let $=[f4(k4(process.execPath),"native","serve-sim-native.node"),f4(k4(V9(import.meta.url)),"native","serve-sim-native.node"),f4(k4(V9(import.meta.url)),"..","dist","native","serve-sim-native.node")];for(let Q of $)if(Q5(Q))return Q;throw Error(`serve-sim-native.node not found. Looked in:
40
+ `+L)}function F(K,_,L,P,T,q){if(K.listenerCount("wsClientError")){let S=Error(T);Error.captureStackTrace(S,F),K.emit("wsClientError",S,L,_)}else E(L,P,T,q)}});sJ=H0(XZ(),1),eJ=H0(q8(),1),$3=H0(r0(),1),Q3=H0(p6(),1),Z3=H0(c6(),1),J3=H0(l6(),1),RZ=H0(w8(),1),s6=H0(GZ(),1),u6=RZ.default;kZ={"Network.setUserAgentOverride":"Page.overrideUserAgent","Network.setCacheDisabled":"Network.setResourceCachingDisabled"},fZ={"Network.requestWillBeSent":{walltime:"wallTime"}},vZ={hasUserGesture:!1,redirectHasExtraInfo:!1},bZ={hasExtraInfo:!1},hZ={encodedDataLength:0,shouldReportCorbBlocking:!1},uZ={initialPriority:"Medium",referrerPolicy:"origin"},gZ={connectionReused:!1,connectionId:0,fromDiskCache:!1,fromServiceWorker:!1,encodedDataLength:0};tZ={"media-rule":"mediaRule","media-import-rule":"importRule","media-style-node":"inlineSheet","media-link-node":"linkedSheet"};Z2={protocolVersion:"1.3",product:"Safari/inspect-webkit",revision:"605.1.15",userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit",jsVersion:""};z2=["Animation","Autofill","Audits","ServiceWorker","Profiler","HeapProfiler","Storage","Tethering","Tracing","BackgroundService","FedCm","DeviceAccess","WebAuthn","Cast","Database","ApplicationCache","BackgroundFetch","DeviceOrientation","EventBreakpoints","FileSystem","HeadlessExperimental","IndexedDB","Memory","PerformanceTimeline","Performance","Preload","Schema","Security","SystemInfo","WebAudio"],H2={"Network.setAttachDebugStack":{},"Network.emulateNetworkConditionsByRule":{ruleIds:[]},"Network.overrideNetworkState":{},"Network.clearAcceptedEncodingsOverride":{},"Network.setAcceptedEncodings":{},"Network.enableReportingApi":{},"Overlay.setShowHinge":{},"Overlay.setShowViewportSizeOnResize":{},"Overlay.setShowGridOverlays":{},"Overlay.setShowFlexOverlays":{},"Overlay.setShowScrollSnapOverlays":{},"Overlay.setShowContainerQueryOverlays":{},"Overlay.setShowIsolatedElements":{},"Overlay.setPausedInDebuggerMessage":{},"Overlay.setShowAdHighlights":{},"Overlay.setShowDebugBorders":{},"Overlay.setShowFPSCounter":{},"Overlay.setShowLayoutShiftRegions":{},"Overlay.setShowScrollBottleneckRects":{},"Overlay.setShowHitTestBorders":{},"Overlay.setShowWebVitals":{},"CSS.trackComputedStyleUpdates":{},"CSS.takeComputedStyleUpdates":{nodeIds:[]},"CSS.startRuleUsageTracking":{},"CSS.stopRuleUsageTracking":{ruleUsage:[]},"CSS.takeCoverageDelta":{coverage:[],timestamp:0},"Page.setAdBlockingEnabled":{},"Page.removeScriptToEvaluateOnNewDocument":{},"Page.setBypassCSP":{},"Page.setInterceptFileChooserDialog":{},"Page.setPrerenderingAllowed":{},"Page.setRPHRegistrationMode":{},"Page.setSPCTransactionMode":{},"Emulation.setEmulatedVisionDeficiency":{},"Emulation.setFocusEmulationEnabled":{},"Emulation.setAutoDarkModeOverride":{},"Emulation.setAutomationOverride":{},"Emulation.setLocaleOverride":{},"Emulation.setTimezoneOverride":{},"Emulation.setVisibleSize":{},"Emulation.setIdleOverride":{},"Emulation.clearIdleOverride":{},"Emulation.setGeolocationOverride":{},"Emulation.clearGeolocationOverride":{},"Emulation.setSensorOverrideEnabled":{},"Emulation.setSensorOverrideReadings":{},"Emulation.setHardwareConcurrencyOverride":{},"Emulation.setNavigatorOverrides":{},"Emulation.setPageScaleFactor":{},"Emulation.setScrollbarsHidden":{},"Emulation.setDocumentCookieDisabled":{},"DOMDebugger.setBreakOnCSPViolation":{},"Runtime.addBinding":{},"Runtime.removeBinding":{},"Debugger.setReturnValue":{},"Debugger.setBlackboxExecutionContexts":{},"Debugger.setInstrumentationBreakpoint":{},"DOM.markUndoableState":{},"DOM.undo":{},"DOM.redo":{},"DOM.copyTo":{nodeId:0},"DOM.collectClassNamesFromSubtree":{classNames:[]},"Accessibility.enable":{},"Accessibility.disable":{},"Accessibility.getFullAXTree":{nodes:[]},"Accessibility.getRootAXNode":{node:null},"Accessibility.getPartialAXTree":{nodes:[]},"Accessibility.queryAXTree":{nodes:[]},"Accessibility.getAXNodeAndAncestors":{nodes:[]},"Accessibility.getChildAXNodes":{nodes:[]}};F2={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}});import{readdirSync as q2,readFileSync as w2,existsSync as C$,unlinkSync as H$,watch as S2}from"fs";import{execSync as Q4,spawn as y2,exec as k2,execFile as R0}from"child_process";import{tmpdir as f2}from"os";import{join as c8}from"path";import{createServer as v2}from"net";import{createHash as b2,randomBytes as h2,timingSafeEqual as u2}from"crypto";import{WebSocket as M$}from"ws";var y4="Accessibility unavailable on this simulator.";import{createRequire as $5}from"module";import{dirname as f4,join as v4}from"path";import{existsSync as Q5}from"fs";import{fileURLToPath as V9}from"url";var G4={mjpegFps:60,mjpegQuality:0.7,maxDimension:0,h264Bitrate:6000000,h264Fps:60},t$={transport:"http",httpCodec:"auto",webRtcCodec:"h264",...G4};function J9($){return typeof $==="number"&&Number.isFinite($)?$:null}function Y9($,Q,Z,J){let Y=J9($);return Y==null?Q:Math.min(J,Math.max(Z,Y))}function X4($,Q,Z,J){return Math.round(Y9($,Q,Z,J))}function s$($){if(!Array.isArray($)||$.length>16)return null;let Q=[];for(let Z of $){if(!Z||typeof Z!=="object")return null;let J=Z.urls;if(!Array.isArray(J)||J.length===0||J.length>16||!J.every((G)=>typeof G==="string"&&G.length<=2048&&/^(stun|stuns|turn|turns):/i.test(G)))return null;let{username:Y,credential:X}=Z;if(Y!==void 0&&typeof Y!=="string")return null;if(X!==void 0&&typeof X!=="string")return null;Q.push({urls:J,...typeof Y==="string"?{username:Y}:{},...typeof X==="string"?{credential:X}:{}})}return Q}var e$=new Set(["mjpegFps","mjpegQuality","maxDimension","h264Bitrate","h264Fps"]);function X9($){if(!$||typeof $!=="object"||Array.isArray($))return null;let Q=$,Z=Object.keys(Q);if(Z.length===0||Z.some((J)=>!e$.has(J)))return null;for(let J of["mjpegFps","mjpegQuality","maxDimension","h264Bitrate","h264Fps"])if(J in Q&&J9(Q[J])==null)return null;return Q}function Z9($={},Q=t$){let J=Object.prototype.hasOwnProperty.call($,"iceServers")?s$($.iceServers):Q.iceServers,Y=J===null?Q.iceServers:J&&J.length>0?J:void 0;return{transport:$.transport==="http"||$.transport==="webrtc"?$.transport:Q.transport,httpCodec:$.httpCodec==="auto"||$.httpCodec==="mjpeg"||$.httpCodec==="h264"?$.httpCodec:Q.httpCodec,webRtcCodec:$.webRtcCodec==="vp8"||$.webRtcCodec==="vp9"||$.webRtcCodec==="h264"?$.webRtcCodec:Q.webRtcCodec,...Y?{iceServers:Y}:{},...k4($,Q)}}function k4($={},Q=G4){return{mjpegFps:X4($.mjpegFps,Q.mjpegFps,1,120),mjpegQuality:Y9($.mjpegQuality,Q.mjpegQuality,0.05,1),maxDimension:X4($.maxDimension,Q.maxDimension,0,4096),h264Bitrate:X4($.h264Bitrate,Q.h264Bitrate,1e5,50000000),h264Fps:X4($.h264Fps,Q.h264Fps,1,120)}}function G9($){return{mjpegFps:$.mjpegFps,mjpegQuality:$.mjpegQuality,maxDimension:$.maxDimension,h264Bitrate:$.h264Bitrate,h264Fps:$.h264Fps}}function K9($){let Q=$?{mjpegFps:$.mjpegFps,mjpegQuality:$.mjpegQuality,maxDimension:$.maxDimension,h264Bitrate:$.h264Bitrate,h264Fps:$.h264Fps}:{};if($?.transport==="webrtc")return Z9({transport:"webrtc",webRtcCodec:$.codec,iceServers:$.iceServers,...Q});return Z9({transport:"http",httpCodec:$?.codec??"auto",...Q})}var Z5=$5(import.meta.url),J5=0,Y5=1,X5=1,G5=2,c0={portrait:1,portraitUpsideDown:2,landscapeRight:3,landscapeLeft:4};function K5(){let $=[v4(f4(process.execPath),"native","serve-sim-native.node"),v4(f4(V9(import.meta.url)),"native","serve-sim-native.node"),v4(f4(V9(import.meta.url)),"..","dist","native","serve-sim-native.node")];for(let Q of $)if(Q5(Q))return Q;throw Error(`serve-sim-native.node not found. Looked in:
41
41
  ${$.join(`
42
42
  `)}
43
- Run \`bun run build.ts\` to build the native addon.`)}var v4;function K4(){if(!v4)v4=Z5(K5());return v4}class b4{handle;constructor($){this.handle=new(K4()).SimHID($)}async guard($,Q,Z){try{return await Q()}catch(J){return console.error(`[hid] ${$} ignored bad input:`,J instanceof Error?J.message:J),Z}}touch($,Q,Z,J,Y,X=0){return this.guard("touch",()=>this.handle.touch($,Q,Z,J,Y,X),void 0)}multiTouch($,Q,Z,J,Y,X,G){return this.guard("multiTouch",()=>this.handle.multiTouch($,Q,Z,J,Y,X,G),void 0)}button($){return this.guard("button",()=>this.handle.button($),void 0)}buttonHid($,Q,Z="press"){return this.guard("buttonHid",()=>this.handle.buttonHid($,Q,Z),void 0)}key($,Q){return this.guard("key",()=>this.handle.key($,Q),void 0)}scroll($,Q,Z,J,Y,X){return this.guard("scroll",()=>this.handle.scroll($,Q,Y??NaN,X??NaN,Z,J),void 0)}digitalCrown($){return this.guard("digitalCrown",()=>this.handle.digitalCrown($),void 0)}orientation($){return this.guard("orientation",()=>this.handle.orientation($),!1)}memoryWarning(){return this.guard("memoryWarning",()=>this.handle.memoryWarning(),void 0)}softwareKeyboard(){return this.guard("softwareKeyboard",()=>this.handle.softwareKeyboard(),void 0)}caDebug($,Q){return this.guard("caDebug",()=>this.handle.caDebug($,Q),!1)}}class h4{handle;constructor($,Q=G4){this.handle=new(K4()).SimCapture($,Q.mjpegFps,Q.mjpegQuality,Q.maxDimension,Q.h264Fps,Q.h264Bitrate)}start(){return this.handle.start()}updateStreamSettings($){return this.handle.updateStreamSettings($.mjpegFps,$.mjpegQuality,$.maxDimension,$.h264Fps,$.h264Bitrate)}subscribeMjpeg($){return this.handle.subscribe(J5,(Q,Z,J,Y)=>{return $({data:Q,width:Z,height:J})})}subscribeAvcc($){return this.handle.subscribe(Y5,(Q,Z,J,Y)=>{return $({data:Q,width:Z,height:J,isDescription:(Y&X5)!==0,isKeyframe:(Y&G5)!==0})})}async handleWebRTCOffer($){return JSON.parse(await this.handle.handleWebRTCOffer(JSON.stringify($)))}closeWebRTCSession($){return this.handle.closeWebRTCSession($)}screenSize(){return this.handle.screenSize()}stop(){return this.handle.stop()}}function V4($){return K4().axDescribe($)}function W4($){return K4().axFrontmost($)}var u4=500,W9=500,V5=2000,W5=15000;function z5($){return $[0]?.frame??{x:0,y:0,width:1,height:1}}function H5($,Q){return Math.abs($.x-Q.x)<0.5&&Math.abs($.y-Q.y)<0.5&&Math.abs($.width-Q.width)<0.5&&Math.abs($.height-Q.height)<0.5}function M5($){let Q=z5($),Z=[],J=(Y,X)=>{if(Z.length>=u4)return;let G=Y.frame;if(!H5(G,Q))Z.push({id:Y.AXUniqueId??X,path:X,label:Y.AXLabel??"",value:Y.AXValue??"",role:Y.role_description,type:Y.type,enabled:Y.enabled!==!1,frame:G});for(let V=0;V<Y.children.length&&Z.length<u4;V++)J(Y.children[V],`${X}.${V}`)};for(let Y=0;Y<$.length&&Z.length<u4;Y++)J($[Y],String(Y));return{screen:{width:Q.width,height:Q.height},elements:Z}}async function F5($){let Q;try{Q=JSON.parse(await V4($))}catch{return{screen:{width:1,height:1},elements:[],errors:[S4]}}return M5(Q)}function N5($){return $?.errors?.includes(S4)??!1}function _5($){return $.elements.length>0&&$.screen.width>1&&$.screen.height>1}async function B5($){let Q=[];try{let Z=await F5($);if(Z.errors?.length)return Z;if(!_5(Z))throw Error(`native AX returned ${Z.elements.length} elements in ${Z.screen.width}x${Z.screen.height} AX space`);return{...Z,errors:Q}}catch(Z){Q.push(Z.message||String(Z))}return{screen:{width:1,height:1},elements:[],errors:Q}}function L5($){return`data: ${JSON.stringify($)}
43
+ Run \`bun run build.ts\` to build the native addon.`)}var b4;function K4(){if(!b4)b4=Z5(K5());return b4}class h4{handle;constructor($){this.handle=new(K4()).SimHID($)}async guard($,Q,Z){try{return await Q()}catch(J){return console.error(`[hid] ${$} ignored bad input:`,J instanceof Error?J.message:J),Z}}touch($,Q,Z,J,Y,X=0){return this.guard("touch",()=>this.handle.touch($,Q,Z,J,Y,X),void 0)}multiTouch($,Q,Z,J,Y,X,G){return this.guard("multiTouch",()=>this.handle.multiTouch($,Q,Z,J,Y,X,G),void 0)}button($){return this.guard("button",()=>this.handle.button($),void 0)}buttonHid($,Q,Z="press"){return this.guard("buttonHid",()=>this.handle.buttonHid($,Q,Z),void 0)}key($,Q){return this.guard("key",()=>this.handle.key($,Q),void 0)}scroll($,Q,Z,J,Y,X){return this.guard("scroll",()=>this.handle.scroll($,Q,Y??NaN,X??NaN,Z,J),void 0)}digitalCrown($){return this.guard("digitalCrown",()=>this.handle.digitalCrown($),void 0)}orientation($){return this.guard("orientation",()=>this.handle.orientation($),!1)}memoryWarning(){return this.guard("memoryWarning",()=>this.handle.memoryWarning(),void 0)}softwareKeyboard(){return this.guard("softwareKeyboard",()=>this.handle.softwareKeyboard(),void 0)}caDebug($,Q){return this.guard("caDebug",()=>this.handle.caDebug($,Q),!1)}}class u4{handle;constructor($,Q=G4){this.handle=new(K4()).SimCapture($,Q.mjpegFps,Q.mjpegQuality,Q.maxDimension,Q.h264Fps,Q.h264Bitrate)}start(){return this.handle.start()}updateStreamSettings($){return this.handle.updateStreamSettings($.mjpegFps,$.mjpegQuality,$.maxDimension,$.h264Fps,$.h264Bitrate)}subscribeMjpeg($){return this.handle.subscribe(J5,(Q,Z,J,Y)=>{return $({data:Q,width:Z,height:J})})}subscribeAvcc($){return this.handle.subscribe(Y5,(Q,Z,J,Y)=>{return $({data:Q,width:Z,height:J,isDescription:(Y&X5)!==0,isKeyframe:(Y&G5)!==0})})}async handleWebRTCOffer($){return JSON.parse(await this.handle.handleWebRTCOffer(JSON.stringify($)))}closeWebRTCSession($){return this.handle.closeWebRTCSession($)}screenSize(){return this.handle.screenSize()}stop(){return this.handle.stop()}}function V4($){return K4().axDescribe($)}function W4($){return K4().axFrontmost($)}var g4=500,W9=500,V5=2000,W5=15000;function z5($){return $[0]?.frame??{x:0,y:0,width:1,height:1}}function H5($,Q){return Math.abs($.x-Q.x)<0.5&&Math.abs($.y-Q.y)<0.5&&Math.abs($.width-Q.width)<0.5&&Math.abs($.height-Q.height)<0.5}function M5($){let Q=z5($),Z=[],J=(Y,X)=>{if(Z.length>=g4)return;let G=Y.frame;if(!H5(G,Q))Z.push({id:Y.AXUniqueId??X,path:X,label:Y.AXLabel??"",value:Y.AXValue??"",role:Y.role_description,type:Y.type,enabled:Y.enabled!==!1,frame:G});for(let V=0;V<Y.children.length&&Z.length<g4;V++)J(Y.children[V],`${X}.${V}`)};for(let Y=0;Y<$.length&&Z.length<g4;Y++)J($[Y],String(Y));return{screen:{width:Q.width,height:Q.height},elements:Z}}async function F5($){let Q;try{Q=JSON.parse(await V4($))}catch{return{screen:{width:1,height:1},elements:[],errors:[y4]}}return M5(Q)}function N5($){return $?.errors?.includes(y4)??!1}function _5($){return $.elements.length>0&&$.screen.width>1&&$.screen.height>1}async function B5($){let Q=[];try{let Z=await F5($);if(Z.errors?.length)return Z;if(!_5(Z))throw Error(`native AX returned ${Z.elements.length} elements in ${Z.screen.width}x${Z.screen.height} AX space`);return{...Z,errors:Q}}catch(Z){Q.push(Z.message||String(Z))}return{screen:{width:1,height:1},elements:[],errors:Q}}function L5($){return`data: ${JSON.stringify($)}
44
44
 
45
- `}function U5({udid:$}){let Q=new Set,Z=null,J=null,Y=W9,X=!1,G=!1,H=()=>{if(G||Q.size===0||Z)return;Z=setTimeout(V,Y)},V=async()=>{if(Z=null,G||X||Q.size===0){H();return}X=!0;try{let W=await B5($),z=L5(W);if(z!==J){for(let B of Q)B.write(z);Y=W9}else Y=Math.min(Y*2,V5);if(J=z,N5(W))Y=W5}finally{X=!1,H()}};return{addClient(W){if(G)return()=>{};if(Q.add(W),J)W.write(J);return V(),()=>{if(Q.delete(W),Q.size===0&&Z)clearTimeout(Z),Z=null}},dispose(){if(G)return;if(G=!0,Z)clearTimeout(Z),Z=null;Q.clear(),J=null}}}function z9(){let $=new Map;return{get(Q){let Z=$.get(Q);if(Z)return Z;let J=U5({udid:Q});return $.set(Q,J),J},prune(Q){let Z=Q instanceof Set?Q:new Set(Q);for(let[J,Y]of $)if(!Z.has(J))Y.dispose(),$.delete(J)},size(){return $.size}}}import{createHash as D5}from"crypto";import{existsSync as F9,readFileSync as N9}from"fs";import{join as p4}from"path";import{tmpdir as O5}from"os";import{join as g4}from"path";import{readdirSync as v1,mkdirSync as A5,writeFileSync as j5,renameSync as R5}from"fs";var l0=g4(O5(),"serve-sim"),b1=g4(l0,"server.json");function C5($){return g4(l0,`server-${$}.json`)}function H9($,Q,Z="/",J="127.0.0.1",Y){let X=J==="0.0.0.0"||J==="::"?"127.0.0.1":J,G=Z.replace(/^\/+/,"").replace(/\/+$/,""),H=G===""?"":`/${G}`;return{pid:process.pid,port:Q,device:$,url:`http://${X}:${Q}`,streamUrl:`http://${X}:${Q}${H}/helper/${$}/stream.mjpeg`,wsUrl:`ws://${X}:${Q}${H}/helper/${$}/ws`,...Y?{streamSettings:Y}:{}}}function M9($){A5(l0,{recursive:!0});let Q=C5($.device),Z=`${Q}.${process.pid}.tmp`;j5(Z,JSON.stringify($,null,2),{mode:384}),R5(Z,Q)}var _9=p4(l0,"simcam"),P5=3000;function T5($){return p4(_9,`${$}.pid`)}function E5($){return p4(_9,`${$}.bundles.json`)}function B9($){return`/tmp/serve-sim-cam-${D5("sha1").update($).digest("hex").slice(0,12)}.sock`}function I5($){try{return process.kill($,0),!0}catch{return!1}}function c4($){try{let Q=Number(N9(T5($),"utf-8").trim());return Number.isInteger(Q)&&Q>0?Q:null}catch{return null}}function x5($){if(!$||typeof $!=="object"||Array.isArray($))throw Error("invalid camera helper reply");return $}async function q5($,Q){let Z=B9($);if(!F9(Z))throw Error("camera helper socket not found");let J=await import("net");return new Promise((Y,X)=>{let G=J.createConnection(Z);G.setEncoding("utf8");let H="",V=!1,W,z=(B,M)=>{if(V)return;if(V=!0,W)clearTimeout(W);if(B)X(B);else Y(M??{})};G.on("data",(B)=>{H+=B;let M=H.indexOf(`
45
+ `}function U5({udid:$}){let Q=new Set,Z=null,J=null,Y=W9,X=!1,G=!1,H=()=>{if(G||Q.size===0||Z)return;Z=setTimeout(V,Y)},V=async()=>{if(Z=null,G||X||Q.size===0){H();return}X=!0;try{let W=await B5($),z=L5(W);if(z!==J){for(let B of Q)B.write(z);Y=W9}else Y=Math.min(Y*2,V5);if(J=z,N5(W))Y=W5}finally{X=!1,H()}};return{addClient(W){if(G)return()=>{};if(Q.add(W),J)W.write(J);return V(),()=>{if(Q.delete(W),Q.size===0&&Z)clearTimeout(Z),Z=null}},dispose(){if(G)return;if(G=!0,Z)clearTimeout(Z),Z=null;Q.clear(),J=null}}}function z9(){let $=new Map;return{get(Q){let Z=$.get(Q);if(Z)return Z;let J=U5({udid:Q});return $.set(Q,J),J},prune(Q){let Z=Q instanceof Set?Q:new Set(Q);for(let[J,Y]of $)if(!Z.has(J))Y.dispose(),$.delete(J)},size(){return $.size}}}import{createHash as D5}from"crypto";import{existsSync as F9,readFileSync as N9}from"fs";import{join as c4}from"path";import{tmpdir as O5}from"os";import{join as p4}from"path";import{readdirSync as v1,mkdirSync as A5,writeFileSync as j5,renameSync as R5}from"fs";var l0=p4(O5(),"serve-sim"),b1=p4(l0,"server.json");function C5($){return p4(l0,`server-${$}.json`)}function H9($,Q,Z="/",J="127.0.0.1",Y){let X=J==="0.0.0.0"||J==="::"?"127.0.0.1":J,G=Z.replace(/^\/+/,"").replace(/\/+$/,""),H=G===""?"":`/${G}`;return{pid:process.pid,port:Q,device:$,url:`http://${X}:${Q}`,streamUrl:`http://${X}:${Q}${H}/helper/${$}/stream.mjpeg`,wsUrl:`ws://${X}:${Q}${H}/helper/${$}/ws`,...Y?{streamSettings:Y}:{}}}function M9($){A5(l0,{recursive:!0});let Q=C5($.device),Z=`${Q}.${process.pid}.tmp`;j5(Z,JSON.stringify($,null,2),{mode:384}),R5(Z,Q)}var _9=c4(l0,"simcam"),P5=3000;function T5($){return c4(_9,`${$}.pid`)}function E5($){return c4(_9,`${$}.bundles.json`)}function B9($){return`/tmp/serve-sim-cam-${D5("sha1").update($).digest("hex").slice(0,12)}.sock`}function I5($){try{return process.kill($,0),!0}catch{return!1}}function l4($){try{let Q=Number(N9(T5($),"utf-8").trim());return Number.isInteger(Q)&&Q>0?Q:null}catch{return null}}function x5($){if(!$||typeof $!=="object"||Array.isArray($))throw Error("invalid camera helper reply");return $}async function q5($,Q){let Z=B9($);if(!F9(Z))throw Error("camera helper socket not found");let J=await import("net");return new Promise((Y,X)=>{let G=J.createConnection(Z);G.setEncoding("utf8");let H="",V=!1,W,z=(B,M)=>{if(V)return;if(V=!0,W)clearTimeout(W);if(B)X(B);else Y(M??{})};G.on("data",(B)=>{H+=B;let M=H.indexOf(`
46
46
  `);if(M<0)return;try{z(void 0,x5(JSON.parse(H.slice(0,M))))}catch(N){z(N)}G.end()}),G.on("error",z),G.on("close",()=>z(Error("socket closed"))),W=setTimeout(()=>{G.destroy(),z(Error("helper timeout"))},P5),G.write(JSON.stringify(Q)+`
47
- `)})}function w5($){let Q=c4($);return Q!==null&&I5(Q)&&F9(B9($))}function S5($){let Q;try{let J=JSON.parse(N9(E5($),"utf-8"));if(!J||typeof J!=="object"||Array.isArray(J))return[];let Y=J;if(typeof Y.helperPid!=="number"||!Array.isArray(Y.bundleIds))return[];Q={helperPid:Y.helperPid,bundleIds:Y.bundleIds}}catch{return[]}let Z=c4($);if(Z===null||Q.helperPid!==Z)return[];return Q.bundleIds.filter((J)=>typeof J==="string")}async function L9($){if(!w5($))return{udid:$,alive:!1};let Q=c4($),Z=S5($);try{return{...await q5($,{action:"status"}),udid:$,alive:!0,helperPid:Q,bundleIds:Z}}catch(J){return{udid:$,alive:!0,helperPid:Q,bundleIds:Z,error:J instanceof Error?J.message:String(J)}}}import{execFile as p5}from"node:child_process";import{cpus as c5}from"node:os";import{promisify as l5}from"node:util";import{spawn as y5}from"node:child_process";var k5=/(^|\.)(WidgetRenderer|ExtensionHost|Service|PlaceholderApp|InCallService|CallUI|InCallUI)(\.|$)|\.extension(\.|$)|com\.apple\.(Preferences\.Cellular|purplebuddy|chrono|shuttle|usernotificationsui)/i;function f5($){return!k5.test($)}function v5($){let Q=/\[app<([^>]+)>:(\d+)\] Setting process visibility to: Foreground/.exec($);if(!Q)return null;return{bundleId:Q[1],pid:parseInt(Q[2],10)}}var b5=1048576,h5=1000;function u5($){return y5("xcrun",["simctl","spawn",$,"log","stream","--style","ndjson","--level","info","--predicate",'process == "SpringBoard" AND eventMessage CONTAINS "Setting process visibility to: Foreground"'],{stdio:["ignore","pipe","ignore"]})}async function l4($){try{let{pid:Q,bundleId:Z}=JSON.parse(await W4($));return Q!=null&&Z?{pid:Q,bundleId:Z}:null}catch{return null}}class U9{udid;deps;child=null;buf="";latest=null;stopped=!1;restartTimer=null;listeners=new Set;constructor($,Q){this.udid=$;this.deps=Q}get current(){return this.latest}get listenerCount(){return this.listeners.size}add($){this.listeners.add($)}remove($){this.listeners.delete($)}start(){if(this.child)return;this.stopped=!1,this.deps.frontmostApp(this.udid).then(($)=>{if($&&this.latest===null)this.set($)}).catch(()=>{}),this.spawn()}spawn(){let $=this.deps.spawnLogStream(this.udid);this.child=$,$.stdout?.on("data",(Q)=>this.consume(Q.toString())),$.on("error",()=>this.onChildGone()),$.on("exit",()=>this.onChildGone())}onChildGone(){if(this.stopped||this.restartTimer)return;if(this.child=null,this.listeners.size===0)return;this.restartTimer=setTimeout(()=>{if(this.restartTimer=null,!this.stopped&&!this.child&&this.listeners.size>0)this.spawn()},this.deps.restartDelayMs)}stop(){if(this.stopped=!0,this.restartTimer)clearTimeout(this.restartTimer),this.restartTimer=null;this.child?.stdout?.destroy(),this.child?.kill(),this.child=null,this.buf=""}consume($){this.buf+=$;let Q;while((Q=this.buf.indexOf(`
48
- `))!==-1){let Z=this.buf.slice(0,Q).trim();if(this.buf=this.buf.slice(Q+1),!Z)continue;let J;try{J=JSON.parse(Z).eventMessage??""}catch{continue}let Y=v5(J);if(Y)this.set(Y)}if(this.buf.length>b5)this.buf=""}set($){if(!f5($.bundleId))return;if($.bundleId===this.latest?.bundleId&&$.pid===this.latest.pid)return;this.latest=$;for(let Q of this.listeners)try{Q($)}catch{}}}function g5($={}){let Q={spawnLogStream:$.spawnLogStream??u5,frontmostApp:$.frontmostApp??l4,restartDelayMs:$.restartDelayMs??h5},Z=new Map;return{peek(J){return Z.get(J)?.current??null},subscribe(J,Y){let X=Z.get(J);if(!X)X=new U9(J,Q),Z.set(J,X),X.start();let G=(H)=>Y?.(H);return X.add(G),{unsubscribe:()=>{if(X.remove(G),X.listenerCount===0&&Z.get(J)===X)X.stop(),Z.delete(J)}}}}}var I0=g5();var m5=l5(p5),d5=1;function i5($){return $.split(":").reduce((Q,Z)=>Q*60+Number(Z),0)}function n5($,Q){let Z=`/Devices/${Q}/`.toUpperCase(),J=[];for(let Y of $.split(`
49
- `)){let X=/^\s*(\d+)\s+([\d:.]+)\s+(\d+)\s+(.*)$/.exec(Y);if(!X)continue;let G=X[4],H=G.toUpperCase();if(!H.includes(Z)||!H.includes("/CONTAINERS/BUNDLE/APPLICATION/"))continue;let V=/^(.*?\.app)\//.exec(G);J.push({pid:+X[1],cpuSeconds:i5(X[2]),rssKb:+X[3],appPath:V?V[1]:G})}return J}function o5($,Q,Z){let J=n5($,Q);if(!J.length)return null;let Y=Z!=null?J.find((G)=>G.pid===Z):void 0,X=Y?J.filter((G)=>G.appPath===Y.appPath):J;return{pids:X.map((G)=>G.pid),cpuSeconds:X.reduce((G,H)=>G+H.cpuSeconds,0),rssKb:X.reduce((G,H)=>G+H.rssKb,0)}}function a5($){let Q=0,Z=!1;for(let J of $.matchAll(/^\s*phys_footprint:\s+(\d+) B$/gm))Q+=+J[1],Z=!0;return Z?Q:null}var r5=($,Q)=>m5($,Q,{timeout:3000,maxBuffer:8388608}).then((Z)=>Z.stdout);function t5($){let Q=I0.peek($);return Q?Promise.resolve(Q):l4($)}async function s5($,Q){let[Z,J]=await Promise.all([Q.exec("ps",["-axo","pid=,cputime=,rss=,comm="]).catch(()=>null),Q.frontmostApp($)]);if(Z==null)return null;let Y=o5(Z,$,J?.pid);if(!Y)return null;let X=J&&Y.pids.includes(J.pid)?J.bundleId:null;return{procs:Y,bundleId:X}}async function e5($,Q){try{let Z=await Q.exec("footprint",["--noCategories","--format","bytes",...$.pids.map(String)]);return a5(Z)??$.rssKb*1024}catch{return $.rssKb*1024}}async function $Q($,Q={}){let Z={exec:Q.exec??r5,frontmostApp:Q.frontmostApp??t5},J=await s5($,Z);if(!J)return null;return{bundleId:J.bundleId,processKey:[...J.procs.pids].sort((Y,X)=>Y-X).join(","),cpuSeconds:J.procs.cpuSeconds,memBytes:await e5(J.procs,Z)}}class O9{meta;intervalMs;sample;now;listeners=new Set;timer=null;startedAt=null;prev=null;constructor($){this.intervalMs=$.intervalMs??1000,this.sample=$.sample??$Q,this.now=$.now??(()=>performance.now()),this.meta={schemaVersion:d5,udid:$.udid,hostCores:$.hostCores??c5().length,sampleIntervalMs:this.intervalMs}}get listenerCount(){return this.listeners.size}onSample($){return this.listeners.add($),()=>this.listeners.delete($)}async tickOnce(){this.startedAt??=this.now();let $=this.now()-this.startedAt,Q=await this.sample(this.meta.udid);if(!Q)return null;let Z=this.cpuPctSince(Q,$);this.prev={t:$,bundleId:Q.bundleId,processKey:Q.processKey,cpuSeconds:Q.cpuSeconds};let J={t:$,bundleId:Q.bundleId,cpuPct:Z,memBytes:Q.memBytes};for(let Y of this.listeners)try{Y(J)}catch{}return J}cpuPctSince($,Q){let Z=this.prev;if(!Z||Z.bundleId!==$.bundleId||Z.processKey!==$.processKey||Q<=Z.t)return 0;let J=($.cpuSeconds-Z.cpuSeconds)/((Q-Z.t)/1000)*100;return J>0?+J.toFixed(1):0}start(){if(this.timer)return;this.startedAt??=this.now();let $,Q=async()=>{if(await this.tickOnce().catch(()=>{}),this.timer===$)$=setTimeout(Q,this.intervalMs),this.timer=$};$=setTimeout(Q,this.intervalMs),this.timer=$}stop(){if(this.timer)clearTimeout(this.timer),this.timer=null}}function A9($=(Q)=>new O9({udid:Q})){let Q=new Map;return{subscribe(Z,J){let Y=Q.get(Z);if(!Y)Y=$(Z),Q.set(Z,Y),Y.start();let X=Y.onSample(J);return{meta:Y.meta,unsubscribe:()=>{if(X(),Y.listenerCount===0&&Q.get(Z)===Y)Y.stop(),Q.delete(Z)}}}}}function j9($,Q){if(!$)return{};let Z;try{Z=new URL($)}catch{return{}}let J=Z.hostname.replace(/^\[|\]$/g,""),Y=J==="localhost"||J==="127.0.0.1"||J==="::1",X=Q.some((G)=>{try{return new URL(G).origin===Z.origin}catch{return!1}});if(Y||X)return{"Access-Control-Allow-Origin":$,Vary:"Origin"};return{}}var QQ={40:"Enter",41:"Escape",42:"Backspace",43:"Tab",44:"Space",45:"-",46:"=",47:"[",48:"]",49:"\\",50:"#",51:";",52:"'",53:"`",54:",",55:".",56:"/",57:"CapsLock",58:"F1",59:"F2",60:"F3",61:"F4",62:"F5",63:"F6",64:"F7",65:"F8",66:"F9",67:"F10",68:"F11",69:"F12",70:"PrintScreen",71:"ScrollLock",72:"Pause",73:"Insert",74:"Home",75:"PageUp",76:"Delete",77:"End",78:"PageDown",79:"ArrowRight",80:"ArrowLeft",81:"ArrowDown",82:"ArrowUp",83:"NumLock",84:"NumpadDivide",85:"NumpadMultiply",86:"NumpadSubtract",87:"NumpadAdd",88:"NumpadEnter",89:"Numpad1",90:"Numpad2",91:"Numpad3",92:"Numpad4",93:"Numpad5",94:"Numpad6",95:"Numpad7",96:"Numpad8",97:"Numpad9",98:"Numpad0",99:"NumpadDecimal",224:"ControlLeft",225:"ShiftLeft",226:"AltLeft",227:"MetaLeft",228:"ControlRight",229:"ShiftRight",230:"AltRight",231:"MetaRight"},ZQ=1,J0=[],d4=new Set;function C9($){for(let Q of d4)try{Q($)}catch{}}function K0($){let Q={...$,id:ZQ++,timestamp:$.timestamp??new Date().toISOString(),msg:$.msg??$.summary};if(J0.push(Q),J0.length>500)J0=J0.slice(J0.length-500);return C9(Q),Q}function n4($,Q,Z={}){let J=J0.findIndex((X)=>X.id===$);if(J<0)return null;let Y={...J0[J],...Q,id:$,...Q.summary!=null&&Q.msg==null?{msg:Q.summary}:{}};if(J0[J]=Y,Z.notify!==!1)C9(Y);return Y}function o4($={}){let{device:Q,sinceId:Z}=$,J=JQ($.limit),Y=J0.filter((X)=>{if(Q&&X.device!==Q)return!1;if(Z!=null&&X.id<=Z)return!1;return!0});return Y.slice(Math.max(0,Y.length-J))}function D9($){return d4.add($),()=>d4.delete($)}function P9($,Q,Z,J){let Y=YQ(Z);if(!Y)return null;switch(Q){case 3:{let X=F0(Y.type),G=x0(Y.x),H=x0(Y.y);if(!X||G==null||H==null)return null;return{device:$,source:"hid",kind:"touch",action:X,summary:`Touch ${X} ${q0(G,H)}`,details:m4({...Y,x:G,y:H},J)}}case 4:{let X=F0(Y.button);if(!X)return null;let G=F0(Y.phase)??"press";return{device:$,source:"hid",kind:"button",action:X,summary:G==="press"?`Button ${X}`:`Button ${X} ${G}`,details:{...Y,phase:G}}}case 5:{let X=F0(Y.type);if(!X)return null;return{device:$,source:"hid",kind:"multi-touch",action:X,summary:`Multi-touch ${X}`,details:m4(Y,J)}}case 6:{let X=F0(Y.type),G=x0(Y.usage);if(!X||G==null)return null;let H=GQ(G),V=KQ(G),W={...Y};if(V)delete W.usage,W.key="character",W.redacted=!0;else W.usage=G,W.key=H;return{device:$,source:"hid",kind:"key",action:X,summary:V?`Key ${X} character`:`Key ${X} ${H}`,details:W}}case 7:{let X=F0(Y.orientation);if(!X)return null;return{device:$,source:"hid",kind:"rotate",action:X,summary:`Rotate ${X}`,details:Y}}case 8:{let X=F0(Y.option),G=XQ(Y.enabled);if(!X||G==null)return null;return{device:$,source:"hid",kind:"ca-debug",action:X,summary:`CoreAnimation ${X} ${G?"on":"off"}`,details:{...Y,enabled:G}}}case 9:return{device:$,source:"hid",kind:"memory-warning",action:"trigger",summary:"Memory warning"};case 10:{let X=x0(Y.delta);if(X==null)return null;return{device:$,source:"hid",kind:"digital-crown",action:"rotate",summary:`Digital Crown ${X>0?"up":"down"}`,details:{...Y,delta:X}}}case 11:{let X=x0(Y.dx),G=x0(Y.dy);if(X==null||G==null)return null;return{device:$,source:"hid",kind:"scroll",action:"wheel",summary:`Scroll ${VQ(X,G)}`,details:m4({...Y,dx:X,dy:G},J)}}case 12:return{device:$,source:"hid",kind:"software-keyboard",action:"toggle",summary:"Software keyboard"};default:return null}}function T9($,Q){let Z=zQ($);if(Z.length===0)return null;if(HQ(Z))return null;let J=E9(Q?.exitCode),Y=WQ(Q),X=MQ(Z);if(X){let{verb:H,args:V}=X;if(H==="install"&&V.length>=2){let[W]=V;return{device:W,source:"exec",kind:"app",action:"install",status:J,summary:"Install app",details:Y}}if(H==="addmedia"&&V.length>=2){let[W]=V;return{device:W,source:"exec",kind:"media",action:"addmedia",status:J,summary:"Add media",details:Y}}if(H==="launch"&&V.length>=2){let[W,z]=V,B=z==="com.apple.springboard";return{device:W,source:"exec",kind:B?"button":"app",action:B?"home":"launch",status:J,summary:B?"Home":`Launch ${z}`,details:{...Y,bundleId:z}}}if(H==="terminate"&&V.length>=2){let[W,z]=V;return{device:W,source:"exec",kind:"app",action:"terminate",status:J,summary:`Terminate ${z}`,details:{...Y,bundleId:z}}}if(H==="io"&&V.length>=2&&V[1]==="screenshot")return{device:V[0],source:"exec",kind:"screenshot",action:"capture",status:J,summary:"Screenshot",details:Y}}let G=FQ(Z);if(G){let{verb:H,args:V}=G,W=NQ(V);if(H==="button"){let z=m0(V)??"home";return{device:W,source:"exec",kind:"button",action:z,status:J,summary:`Button ${z}`,details:Y}}if(H==="tap"){let[z,B]=V;return{device:W,source:"exec",kind:"tap",action:"tap",status:J,summary:`Tap ${q0(Number(z),Number(B))}`,details:Y}}if(H==="gesture")return{device:W,source:"exec",kind:"gesture",action:"send",status:J,summary:"Gesture",details:Y};if(H==="rotate"){let z=m0(V);return{device:W,source:"exec",kind:"rotate",action:z,status:J,summary:z?`Rotate ${z}`:"Rotate",details:Y}}if(H==="memory-warning")return{device:W,source:"exec",kind:"memory-warning",action:"trigger",status:J,summary:"Memory warning",details:Y};if(H==="ca-debug"){let z=m0(V),B=V.find((M)=>M==="on"||M==="off");return{device:W,source:"exec",kind:"ca-debug",action:z,status:J,summary:`CoreAnimation ${z??"debug"}${B?` ${B}`:""}`,details:Y}}if(H==="camera"){let z=BQ(V);if(z==="status"||z==="list-webcams")return null;return{device:W,source:"exec",kind:"camera",action:z??"start",status:J,summary:z?`Camera ${z}`:"Camera",details:Y}}if(H==="ui"){let z=m0(V);return{device:W,source:"exec",kind:"ui-setting",action:z,status:J,summary:z?`UI ${z}`:"UI setting",details:Y}}}if(Z[0]==="osascript"&&$.includes('menu item "Home"'))return{source:"exec",kind:"button",action:"home",status:J,summary:"Home",details:Y};return null}function JQ($){if(!Number.isFinite($??NaN))return 500;return Math.min(500,Math.max(1,Math.floor($)))}function YQ($){if(!$||typeof $!=="object"||Array.isArray($))return null;return $}function F0($){return typeof $==="string"&&$.length>0?$:null}function x0($){return typeof $==="number"&&Number.isFinite($)?$:null}function XQ($){return typeof $==="boolean"?$:null}function GQ($){if($>=4&&$<=29)return String.fromCharCode(97+$-4);if($>=30&&$<=38)return String($-29);if($===39)return"0";return QQ[$]??`usage ${$}`}function KQ($){return $>=4&&$<=39||$>=44&&$<=56||$>=84&&$<=87||$>=89&&$<=99}function m4($,Q){if(!Q||Q.width<=0||Q.height<=0)return $;return{...$,screen:Q}}function q0($,Q){if(!Number.isFinite($)||!Number.isFinite(Q))return"";return`${i4($)},${i4(Q)}`}function VQ($,Q){return`${R9($)},${R9(Q)}`}function i4($){return $.toFixed(3).replace(/0+$/,"").replace(/\.$/,"")}function R9($){let Q=i4($);return $>0?`+${Q}`:Q}function E9($){if($==null)return;return $===0?"ok":"error"}function WQ($){return E9($?.exitCode)?{exitCode:$?.exitCode}:{}}function zQ($){let Q=[],Z="",J=null,Y=!1;for(let X of $){if(Y){Z+=X,Y=!1;continue}if(X==="\\"&&J!=="'"){Y=!0;continue}if((X==="'"||X==='"')&&J===null){J=X;continue}if(X===J){J=null;continue}if(/\s/.test(X)&&J===null){if(Z)Q.push(Z),Z="";continue}Z+=X}if(Z)Q.push(Z);return Q}function HQ($){if($[0]==="bash"&&$[1]==="-c"&&$[2]?.startsWith("echo "))return!0;if($[0]==="bash"&&$[1]==="-c"&&$[2]?.startsWith("rm -f "))return!0;if($[0]==="rm"&&$[1]==="-f")return!0;return!1}function MQ($){let Q=$.findIndex((J)=>J==="simctl");if(Q<0||$[Q-1]!=="xcrun")return null;let Z=$[Q+1];if(!Z)return null;return{verb:Z,args:$.slice(Q+2)}}function FQ($){let Q=$.findIndex((J)=>J==="serve-sim"||/(?:^|\/)serve-sim(?:\.js)?$/.test(J));if(Q<0)return null;let Z=$[Q+1];if(!Z)return null;return{verb:Z,args:$.slice(Q+2)}}function NQ($){for(let Q=0;Q<$.length;Q++){let Z=$[Q];if((Z==="-d"||Z==="--device")&&$[Q+1])return $[Q+1]}return}function m0($){for(let Q=0;Q<$.length;Q++){let Z=$[Q];if(Z==="-d"||Z==="--device"){Q++;continue}if(Z.startsWith("-"))continue;return Z}return}function _Q($){if($.includes("--list-webcams"))return"list-webcams";if($.includes("--stop-webcam"))return"stop-webcam";return m0($)}function BQ($){let Q=_Q($);if(Q==="status"||Q==="list-webcams"||Q==="stop-webcam")return Q;return"start"}var x9=262144;class l extends Error{status;code;constructor($,Q,Z){super($);this.status=Q;this.code=Z;this.name="WebRtcSignalingError"}}function a4($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function q9($){if(typeof $!=="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test($))throw new l("Invalid WebRTC session ID",400,"invalid_session_id");return $}function I9($,Q,Z){if($===void 0)return;if(typeof $!=="string"||$.length>Z)throw new l(`Invalid ${Q}`,400,"invalid_offer");return $}function LQ($){if($===void 0)return;if(!Array.isArray($)||$.length>16)throw new l("Invalid ICE servers",400,"invalid_offer");return $.map((Q)=>{if(!a4(Q)||!Array.isArray(Q.urls)||Q.urls.length===0||Q.urls.length>16)throw new l("Invalid ICE server",400,"invalid_offer");let Z=Q.urls.map((X)=>{if(typeof X!=="string"||X.length===0||X.length>2048||!/^(stun|stuns|turn|turns):/i.test(X))throw new l("Invalid ICE server URL",400,"invalid_offer");return X}),J=I9(Q.username,"ICE username",1024),Y=I9(Q.credential,"ICE credential",1024);return{urls:Z,...J!==void 0?{username:J}:{},...Y!==void 0?{credential:Y}:{}}})}function w9($){if(!a4($)||$.type!=="offer")throw new l("Expected a WebRTC offer",400,"invalid_offer");if(typeof $.sdp!=="string"||$.sdp.length===0||$.sdp.length>245760)throw new l("Invalid WebRTC offer SDP",400,"invalid_offer");let Q=$.codec;if(Q!==void 0&&Q!=="vp8"&&Q!=="vp9"&&Q!=="h264")throw new l("Invalid WebRTC codec",400,"invalid_offer");return{type:"offer",sdp:$.sdp,sessionId:q9($.sessionId),...Q!==void 0?{codec:Q}:{},...$.iceServers!==void 0?{iceServers:LQ($.iceServers)}:{}}}function S9($){if(!a4($))throw new l("Invalid WebRTC close request",400,"invalid_close_request");return{sessionId:q9($.sessionId)}}var d0={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PATCH, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function s4($){$.writeHead(204,d0),$.end()}var UQ=4,OQ=130,AQ=Buffer.from(`\r
47
+ `)})}function w5($){let Q=l4($);return Q!==null&&I5(Q)&&F9(B9($))}function S5($){let Q;try{let J=JSON.parse(N9(E5($),"utf-8"));if(!J||typeof J!=="object"||Array.isArray(J))return[];let Y=J;if(typeof Y.helperPid!=="number"||!Array.isArray(Y.bundleIds))return[];Q={helperPid:Y.helperPid,bundleIds:Y.bundleIds}}catch{return[]}let Z=l4($);if(Z===null||Q.helperPid!==Z)return[];return Q.bundleIds.filter((J)=>typeof J==="string")}async function L9($){if(!w5($))return{udid:$,alive:!1};let Q=l4($),Z=S5($);try{return{...await q5($,{action:"status"}),udid:$,alive:!0,helperPid:Q,bundleIds:Z}}catch(J){return{udid:$,alive:!0,helperPid:Q,bundleIds:Z,error:J instanceof Error?J.message:String(J)}}}import{execFile as p5}from"node:child_process";import{cpus as c5}from"node:os";import{promisify as l5}from"node:util";import{spawn as y5}from"node:child_process";var k5=/(^|\.)(WidgetRenderer|ExtensionHost|Service|PlaceholderApp|InCallService|CallUI|InCallUI)(\.|$)|\.extension(\.|$)|com\.apple\.(Preferences\.Cellular|purplebuddy|chrono|shuttle|usernotificationsui)/i;function f5($){return!k5.test($)}function v5($){let Q=/\[app<([^>]+)>:(\d+)\] Setting process visibility to: Foreground/.exec($);if(!Q)return null;return{bundleId:Q[1],pid:parseInt(Q[2],10)}}var b5=1048576,h5=1000;function u5($){return y5("xcrun",["simctl","spawn",$,"log","stream","--style","ndjson","--level","info","--predicate",'process == "SpringBoard" AND eventMessage CONTAINS "Setting process visibility to: Foreground"'],{stdio:["ignore","pipe","ignore"]})}async function m4($){try{let{pid:Q,bundleId:Z}=JSON.parse(await W4($));return Q!=null&&Z?{pid:Q,bundleId:Z}:null}catch{return null}}class U9{udid;deps;child=null;buf="";latest=null;stopped=!1;restartTimer=null;listeners=new Set;constructor($,Q){this.udid=$;this.deps=Q}get current(){return this.latest}get listenerCount(){return this.listeners.size}add($){this.listeners.add($)}remove($){this.listeners.delete($)}start(){if(this.child)return;this.stopped=!1,this.deps.frontmostApp(this.udid).then(($)=>{if($&&this.latest===null)this.set($)}).catch(()=>{}),this.spawn()}spawn(){let $=this.deps.spawnLogStream(this.udid);this.child=$,$.stdout?.on("data",(Q)=>this.consume(Q.toString())),$.on("error",()=>this.onChildGone()),$.on("exit",()=>this.onChildGone())}onChildGone(){if(this.stopped||this.restartTimer)return;if(this.child=null,this.listeners.size===0)return;this.restartTimer=setTimeout(()=>{if(this.restartTimer=null,!this.stopped&&!this.child&&this.listeners.size>0)this.spawn()},this.deps.restartDelayMs)}stop(){if(this.stopped=!0,this.restartTimer)clearTimeout(this.restartTimer),this.restartTimer=null;this.child?.stdout?.destroy(),this.child?.kill(),this.child=null,this.buf=""}consume($){this.buf+=$;let Q;while((Q=this.buf.indexOf(`
48
+ `))!==-1){let Z=this.buf.slice(0,Q).trim();if(this.buf=this.buf.slice(Q+1),!Z)continue;let J;try{J=JSON.parse(Z).eventMessage??""}catch{continue}let Y=v5(J);if(Y)this.set(Y)}if(this.buf.length>b5)this.buf=""}set($){if(!f5($.bundleId))return;if($.bundleId===this.latest?.bundleId&&$.pid===this.latest.pid)return;this.latest=$;for(let Q of this.listeners)try{Q($)}catch{}}}function g5($={}){let Q={spawnLogStream:$.spawnLogStream??u5,frontmostApp:$.frontmostApp??m4,restartDelayMs:$.restartDelayMs??h5},Z=new Map;return{peek(J){return Z.get(J)?.current??null},subscribe(J,Y){let X=Z.get(J);if(!X)X=new U9(J,Q),Z.set(J,X),X.start();let G=(H)=>Y?.(H);return X.add(G),{unsubscribe:()=>{if(X.remove(G),X.listenerCount===0&&Z.get(J)===X)X.stop(),Z.delete(J)}}}}}var I0=g5();var m5=l5(p5),d5=1;function i5($){return $.split(":").reduce((Q,Z)=>Q*60+Number(Z),0)}function n5($,Q){let Z=`/Devices/${Q}/`.toUpperCase(),J=[];for(let Y of $.split(`
49
+ `)){let X=/^\s*(\d+)\s+([\d:.]+)\s+(\d+)\s+(.*)$/.exec(Y);if(!X)continue;let G=X[4],H=G.toUpperCase();if(!H.includes(Z)||!H.includes("/CONTAINERS/BUNDLE/APPLICATION/"))continue;let V=/^(.*?\.app)\//.exec(G);J.push({pid:+X[1],cpuSeconds:i5(X[2]),rssKb:+X[3],appPath:V?V[1]:G})}return J}function o5($,Q,Z){let J=n5($,Q);if(!J.length)return null;let Y=Z!=null?J.find((G)=>G.pid===Z):void 0,X=Y?J.filter((G)=>G.appPath===Y.appPath):J;return{pids:X.map((G)=>G.pid),cpuSeconds:X.reduce((G,H)=>G+H.cpuSeconds,0),rssKb:X.reduce((G,H)=>G+H.rssKb,0)}}function a5($){let Q=0,Z=!1;for(let J of $.matchAll(/^\s*phys_footprint:\s+(\d+) B$/gm))Q+=+J[1],Z=!0;return Z?Q:null}var r5=($,Q)=>m5($,Q,{timeout:3000,maxBuffer:8388608}).then((Z)=>Z.stdout);function t5($){let Q=I0.peek($);return Q?Promise.resolve(Q):m4($)}async function s5($,Q){let[Z,J]=await Promise.all([Q.exec("ps",["-axo","pid=,cputime=,rss=,comm="]).catch(()=>null),Q.frontmostApp($)]);if(Z==null)return null;let Y=o5(Z,$,J?.pid);if(!Y)return null;let X=J&&Y.pids.includes(J.pid)?J.bundleId:null;return{procs:Y,bundleId:X}}async function e5($,Q){try{let Z=await Q.exec("footprint",["--noCategories","--format","bytes",...$.pids.map(String)]);return a5(Z)??$.rssKb*1024}catch{return $.rssKb*1024}}async function $Q($,Q={}){let Z={exec:Q.exec??r5,frontmostApp:Q.frontmostApp??t5},J=await s5($,Z);if(!J)return null;return{bundleId:J.bundleId,processKey:[...J.procs.pids].sort((Y,X)=>Y-X).join(","),cpuSeconds:J.procs.cpuSeconds,memBytes:await e5(J.procs,Z)}}class O9{meta;intervalMs;sample;now;listeners=new Set;timer=null;startedAt=null;prev=null;constructor($){this.intervalMs=$.intervalMs??1000,this.sample=$.sample??$Q,this.now=$.now??(()=>performance.now()),this.meta={schemaVersion:d5,udid:$.udid,hostCores:$.hostCores??c5().length,sampleIntervalMs:this.intervalMs}}get listenerCount(){return this.listeners.size}onSample($){return this.listeners.add($),()=>this.listeners.delete($)}async tickOnce(){this.startedAt??=this.now();let $=this.now()-this.startedAt,Q=await this.sample(this.meta.udid);if(!Q)return null;let Z=this.cpuPctSince(Q,$);this.prev={t:$,bundleId:Q.bundleId,processKey:Q.processKey,cpuSeconds:Q.cpuSeconds};let J={t:$,bundleId:Q.bundleId,cpuPct:Z,memBytes:Q.memBytes};for(let Y of this.listeners)try{Y(J)}catch{}return J}cpuPctSince($,Q){let Z=this.prev;if(!Z||Z.bundleId!==$.bundleId||Z.processKey!==$.processKey||Q<=Z.t)return 0;let J=($.cpuSeconds-Z.cpuSeconds)/((Q-Z.t)/1000)*100;return J>0?+J.toFixed(1):0}start(){if(this.timer)return;this.startedAt??=this.now();let $,Q=async()=>{if(await this.tickOnce().catch(()=>{}),this.timer===$)$=setTimeout(Q,this.intervalMs),this.timer=$};$=setTimeout(Q,this.intervalMs),this.timer=$}stop(){if(this.timer)clearTimeout(this.timer),this.timer=null}}function A9($=(Q)=>new O9({udid:Q})){let Q=new Map;return{subscribe(Z,J){let Y=Q.get(Z);if(!Y)Y=$(Z),Q.set(Z,Y),Y.start();let X=Y.onSample(J);return{meta:Y.meta,unsubscribe:()=>{if(X(),Y.listenerCount===0&&Q.get(Z)===Y)Y.stop(),Q.delete(Z)}}}}}function j9($,Q){if(!$)return{};let Z;try{Z=new URL($)}catch{return{}}let J=Z.hostname.replace(/^\[|\]$/g,""),Y=J==="localhost"||J==="127.0.0.1"||J==="::1",X=Q.some((G)=>{try{return new URL(G).origin===Z.origin}catch{return!1}});if(Y||X)return{"Access-Control-Allow-Origin":$,Vary:"Origin"};return{}}var QQ={40:"Enter",41:"Escape",42:"Backspace",43:"Tab",44:"Space",45:"-",46:"=",47:"[",48:"]",49:"\\",50:"#",51:";",52:"'",53:"`",54:",",55:".",56:"/",57:"CapsLock",58:"F1",59:"F2",60:"F3",61:"F4",62:"F5",63:"F6",64:"F7",65:"F8",66:"F9",67:"F10",68:"F11",69:"F12",70:"PrintScreen",71:"ScrollLock",72:"Pause",73:"Insert",74:"Home",75:"PageUp",76:"Delete",77:"End",78:"PageDown",79:"ArrowRight",80:"ArrowLeft",81:"ArrowDown",82:"ArrowUp",83:"NumLock",84:"NumpadDivide",85:"NumpadMultiply",86:"NumpadSubtract",87:"NumpadAdd",88:"NumpadEnter",89:"Numpad1",90:"Numpad2",91:"Numpad3",92:"Numpad4",93:"Numpad5",94:"Numpad6",95:"Numpad7",96:"Numpad8",97:"Numpad9",98:"Numpad0",99:"NumpadDecimal",224:"ControlLeft",225:"ShiftLeft",226:"AltLeft",227:"MetaLeft",228:"ControlRight",229:"ShiftRight",230:"AltRight",231:"MetaRight"},ZQ=1,Y0=[],i4=new Set;function C9($){for(let Q of i4)try{Q($)}catch{}}function V0($){let Q={...$,id:ZQ++,timestamp:$.timestamp??new Date().toISOString(),msg:$.msg??$.summary};if(Y0.push(Q),Y0.length>500)Y0=Y0.slice(Y0.length-500);return C9(Q),Q}function o4($,Q,Z={}){let J=Y0.findIndex((X)=>X.id===$);if(J<0)return null;let Y={...Y0[J],...Q,id:$,...Q.summary!=null&&Q.msg==null?{msg:Q.summary}:{}};if(Y0[J]=Y,Z.notify!==!1)C9(Y);return Y}function a4($={}){let{device:Q,sinceId:Z}=$,J=JQ($.limit),Y=Y0.filter((X)=>{if(Q&&X.device!==Q)return!1;if(Z!=null&&X.id<=Z)return!1;return!0});return Y.slice(Math.max(0,Y.length-J))}function D9($){return i4.add($),()=>i4.delete($)}function P9($,Q,Z,J){let Y=YQ(Z);if(!Y)return null;switch(Q){case 3:{let X=F0(Y.type),G=x0(Y.x),H=x0(Y.y);if(!X||G==null||H==null)return null;return{device:$,source:"hid",kind:"touch",action:X,summary:`Touch ${X} ${q0(G,H)}`,details:d4({...Y,x:G,y:H},J)}}case 4:{let X=F0(Y.button);if(!X)return null;let G=F0(Y.phase)??"press";return{device:$,source:"hid",kind:"button",action:X,summary:G==="press"?`Button ${X}`:`Button ${X} ${G}`,details:{...Y,phase:G}}}case 5:{let X=F0(Y.type);if(!X)return null;return{device:$,source:"hid",kind:"multi-touch",action:X,summary:`Multi-touch ${X}`,details:d4(Y,J)}}case 6:{let X=F0(Y.type),G=x0(Y.usage);if(!X||G==null)return null;let H=GQ(G),V=KQ(G),W={...Y};if(V)delete W.usage,W.key="character",W.redacted=!0;else W.usage=G,W.key=H;return{device:$,source:"hid",kind:"key",action:X,summary:V?`Key ${X} character`:`Key ${X} ${H}`,details:W}}case 7:{let X=F0(Y.orientation);if(!X)return null;return{device:$,source:"hid",kind:"rotate",action:X,summary:`Rotate ${X}`,details:Y}}case 8:{let X=F0(Y.option),G=XQ(Y.enabled);if(!X||G==null)return null;return{device:$,source:"hid",kind:"ca-debug",action:X,summary:`CoreAnimation ${X} ${G?"on":"off"}`,details:{...Y,enabled:G}}}case 9:return{device:$,source:"hid",kind:"memory-warning",action:"trigger",summary:"Memory warning"};case 10:{let X=x0(Y.delta);if(X==null)return null;return{device:$,source:"hid",kind:"digital-crown",action:"rotate",summary:`Digital Crown ${X>0?"up":"down"}`,details:{...Y,delta:X}}}case 11:{let X=x0(Y.dx),G=x0(Y.dy);if(X==null||G==null)return null;return{device:$,source:"hid",kind:"scroll",action:"wheel",summary:`Scroll ${VQ(X,G)}`,details:d4({...Y,dx:X,dy:G},J)}}case 12:return{device:$,source:"hid",kind:"software-keyboard",action:"toggle",summary:"Software keyboard"};default:return null}}function T9($,Q){let Z=zQ($);if(Z.length===0)return null;if(HQ(Z))return null;let J=E9(Q?.exitCode),Y=WQ(Q),X=MQ(Z);if(X){let{verb:H,args:V}=X;if(H==="install"&&V.length>=2){let[W]=V;return{device:W,source:"exec",kind:"app",action:"install",status:J,summary:"Install app",details:Y}}if(H==="addmedia"&&V.length>=2){let[W]=V;return{device:W,source:"exec",kind:"media",action:"addmedia",status:J,summary:"Add media",details:Y}}if(H==="launch"&&V.length>=2){let[W,z]=V,B=z==="com.apple.springboard";return{device:W,source:"exec",kind:B?"button":"app",action:B?"home":"launch",status:J,summary:B?"Home":`Launch ${z}`,details:{...Y,bundleId:z}}}if(H==="terminate"&&V.length>=2){let[W,z]=V;return{device:W,source:"exec",kind:"app",action:"terminate",status:J,summary:`Terminate ${z}`,details:{...Y,bundleId:z}}}if(H==="io"&&V.length>=2&&V[1]==="screenshot")return{device:V[0],source:"exec",kind:"screenshot",action:"capture",status:J,summary:"Screenshot",details:Y}}let G=FQ(Z);if(G){let{verb:H,args:V}=G,W=NQ(V);if(H==="button"){let z=m0(V)??"home";return{device:W,source:"exec",kind:"button",action:z,status:J,summary:`Button ${z}`,details:Y}}if(H==="tap"){let[z,B]=V;return{device:W,source:"exec",kind:"tap",action:"tap",status:J,summary:`Tap ${q0(Number(z),Number(B))}`,details:Y}}if(H==="gesture")return{device:W,source:"exec",kind:"gesture",action:"send",status:J,summary:"Gesture",details:Y};if(H==="rotate"){let z=m0(V);return{device:W,source:"exec",kind:"rotate",action:z,status:J,summary:z?`Rotate ${z}`:"Rotate",details:Y}}if(H==="memory-warning")return{device:W,source:"exec",kind:"memory-warning",action:"trigger",status:J,summary:"Memory warning",details:Y};if(H==="ca-debug"){let z=m0(V),B=V.find((M)=>M==="on"||M==="off");return{device:W,source:"exec",kind:"ca-debug",action:z,status:J,summary:`CoreAnimation ${z??"debug"}${B?` ${B}`:""}`,details:Y}}if(H==="camera"){let z=BQ(V);if(z==="status"||z==="list-webcams")return null;return{device:W,source:"exec",kind:"camera",action:z??"start",status:J,summary:z?`Camera ${z}`:"Camera",details:Y}}if(H==="ui"){let z=m0(V);return{device:W,source:"exec",kind:"ui-setting",action:z,status:J,summary:z?`UI ${z}`:"UI setting",details:Y}}}if(Z[0]==="osascript"&&$.includes('menu item "Home"'))return{source:"exec",kind:"button",action:"home",status:J,summary:"Home",details:Y};return null}function JQ($){if(!Number.isFinite($??NaN))return 500;return Math.min(500,Math.max(1,Math.floor($)))}function YQ($){if(!$||typeof $!=="object"||Array.isArray($))return null;return $}function F0($){return typeof $==="string"&&$.length>0?$:null}function x0($){return typeof $==="number"&&Number.isFinite($)?$:null}function XQ($){return typeof $==="boolean"?$:null}function GQ($){if($>=4&&$<=29)return String.fromCharCode(97+$-4);if($>=30&&$<=38)return String($-29);if($===39)return"0";return QQ[$]??`usage ${$}`}function KQ($){return $>=4&&$<=39||$>=44&&$<=56||$>=84&&$<=87||$>=89&&$<=99}function d4($,Q){if(!Q||Q.width<=0||Q.height<=0)return $;return{...$,screen:Q}}function q0($,Q){if(!Number.isFinite($)||!Number.isFinite(Q))return"";return`${n4($)},${n4(Q)}`}function VQ($,Q){return`${R9($)},${R9(Q)}`}function n4($){return $.toFixed(3).replace(/0+$/,"").replace(/\.$/,"")}function R9($){let Q=n4($);return $>0?`+${Q}`:Q}function E9($){if($==null)return;return $===0?"ok":"error"}function WQ($){return E9($?.exitCode)?{exitCode:$?.exitCode}:{}}function zQ($){let Q=[],Z="",J=null,Y=!1;for(let X of $){if(Y){Z+=X,Y=!1;continue}if(X==="\\"&&J!=="'"){Y=!0;continue}if((X==="'"||X==='"')&&J===null){J=X;continue}if(X===J){J=null;continue}if(/\s/.test(X)&&J===null){if(Z)Q.push(Z),Z="";continue}Z+=X}if(Z)Q.push(Z);return Q}function HQ($){if($[0]==="bash"&&$[1]==="-c"&&$[2]?.startsWith("echo "))return!0;if($[0]==="bash"&&$[1]==="-c"&&$[2]?.startsWith("rm -f "))return!0;if($[0]==="rm"&&$[1]==="-f")return!0;return!1}function MQ($){let Q=$.findIndex((J)=>J==="simctl");if(Q<0||$[Q-1]!=="xcrun")return null;let Z=$[Q+1];if(!Z)return null;return{verb:Z,args:$.slice(Q+2)}}function FQ($){let Q=$.findIndex((J)=>J==="serve-sim"||/(?:^|\/)serve-sim(?:\.js)?$/.test(J));if(Q<0)return null;let Z=$[Q+1];if(!Z)return null;return{verb:Z,args:$.slice(Q+2)}}function NQ($){for(let Q=0;Q<$.length;Q++){let Z=$[Q];if((Z==="-d"||Z==="--device")&&$[Q+1])return $[Q+1]}return}function m0($){for(let Q=0;Q<$.length;Q++){let Z=$[Q];if(Z==="-d"||Z==="--device"){Q++;continue}if(Z.startsWith("-"))continue;return Z}return}function _Q($){if($.includes("--list-webcams"))return"list-webcams";if($.includes("--stop-webcam"))return"stop-webcam";return m0($)}function BQ($){let Q=_Q($);if(Q==="status"||Q==="list-webcams"||Q==="stop-webcam")return Q;return"start"}var x9=262144;class l extends Error{status;code;constructor($,Q,Z){super($);this.status=Q;this.code=Z;this.name="WebRtcSignalingError"}}function r4($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function q9($){if(typeof $!=="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test($))throw new l("Invalid WebRTC session ID",400,"invalid_session_id");return $}function I9($,Q,Z){if($===void 0)return;if(typeof $!=="string"||$.length>Z)throw new l(`Invalid ${Q}`,400,"invalid_offer");return $}function LQ($){if($===void 0)return;if(!Array.isArray($)||$.length>16)throw new l("Invalid ICE servers",400,"invalid_offer");return $.map((Q)=>{if(!r4(Q)||!Array.isArray(Q.urls)||Q.urls.length===0||Q.urls.length>16)throw new l("Invalid ICE server",400,"invalid_offer");let Z=Q.urls.map((X)=>{if(typeof X!=="string"||X.length===0||X.length>2048||!/^(stun|stuns|turn|turns):/i.test(X))throw new l("Invalid ICE server URL",400,"invalid_offer");return X}),J=I9(Q.username,"ICE username",1024),Y=I9(Q.credential,"ICE credential",1024);return{urls:Z,...J!==void 0?{username:J}:{},...Y!==void 0?{credential:Y}:{}}})}function w9($){if(!r4($)||$.type!=="offer")throw new l("Expected a WebRTC offer",400,"invalid_offer");if(typeof $.sdp!=="string"||$.sdp.length===0||$.sdp.length>245760)throw new l("Invalid WebRTC offer SDP",400,"invalid_offer");let Q=$.codec;if(Q!==void 0&&Q!=="vp8"&&Q!=="vp9"&&Q!=="h264")throw new l("Invalid WebRTC codec",400,"invalid_offer");return{type:"offer",sdp:$.sdp,sessionId:q9($.sessionId),...Q!==void 0?{codec:Q}:{},...$.iceServers!==void 0?{iceServers:LQ($.iceServers)}:{}}}function S9($){if(!r4($))throw new l("Invalid WebRTC close request",400,"invalid_close_request");return{sessionId:q9($.sessionId)}}var d0={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PATCH, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function e4($){$.writeHead(204,d0),$.end()}var UQ=4,OQ=130,AQ=Buffer.from(`\r
50
50
  `,"ascii"),jQ=0.004;function z4($){return`Drag ${q0($.startX,$.startY)} -> ${q0($.lastX,$.lastY)}`}function y9($){let Q=$.lastX-$.startX,Z=$.lastY-$.startY;return Math.hypot(Q,Z)>jQ}function k9($){return{startX:$.x,startY:$.y,lastX:$.x,lastY:$.y,moveCount:0,edge:$.edge}}function RQ($){return Buffer.from(`--frame\r
51
51
  Content-Type: image/jpeg\r
52
52
  Content-Length: ${$}\r
53
53
  \r
54
- `,"ascii")}function f9($){let Q=Buffer.allocUnsafe(5+$.length);return Q.writeUInt32BE($.length+1,0),Q[4]=UQ,Q.set($,5),Q}var CQ={portrait:c0.portrait,portrait_upside_down:c0.portraitUpsideDown,landscape_left:c0.landscapeLeft,landscape_right:c0.landscapeRight};function v9($){if($.writableEnded||$.destroyed||!$.writableNeedDrain)return Promise.resolve();return new Promise((Q)=>{let Z=()=>{J(),Q()},J=()=>{$.off("drain",Z),$.off("close",Z),$.off("error",Z)};$.once("drain",Z),$.once("close",Z),$.once("error",Z)})}function b9($,Q){if($.writableEnded||$.destroyed)return Promise.resolve();return new Promise((Z)=>{let J=!1,Y=()=>{if(J)return;J=!0,$.off("close",Y),$.off("error",Y),Z()};$.once("close",Y),$.once("error",Y);try{$.write(Q,Y)}catch{Y()}})}function r4($,Q,Z=new l("WebRTC signaling body is too large",413,"body_too_large")){return new Promise((J,Y)=>{let X=[],G=0,H=!1,V=(W)=>{if(H)return;H=!0,Y(W)};$.on("data",(W)=>{if(H)return;let z=Buffer.isBuffer(W)?W:Buffer.from(W);if(G+=z.length,G>Q){V(Z);return}X.push(z)}),$.on("end",()=>{if(H)return;H=!0,J(Buffer.concat(X))}),$.on("aborted",()=>V(new l("Request aborted",400,"request_aborted"))),$.on("error",V)})}function h9($){let Q=$.headers["content-type"];return(Array.isArray(Q)?Q[0]:Q)?.split(";",1)[0]?.trim().toLowerCase()==="application/json"}function t4($,Q){try{return JSON.parse($.toString("utf8"))}catch{throw new l("Malformed JSON request body",400,Q)}}class u9{udid;capture;hid;captureStart;phase="unstarted";width=0;height=0;orientation="portrait";latestJpegBuffer=null;latestJpegLength=0;hidSockets=new Set;touchGestureLog;encoderSettings;streamSettingsUpdate=Promise.resolve();constructor($,Q){this.udid=$;let Z=K9(Q);this.encoderSettings=G9(Z),this.hid=new b4($),this.capture=new h4($,this.encoderSettings)}start(){if(this.phase==="running")return this.captureStart??Promise.resolve();if(this.phase==="stopped")return Promise.reject(Error("Capture session is stopped"));return this.phase="running",this.captureStart=this.capture.start(),this.captureStart}close(){if(this.phase!=="running")return;for(let $ of this.hidSockets)$.close();this.hidSockets.clear(),this.capture.stop().catch(()=>{}),this.phase="stopped"}onSharedMjpegFrame($){let{width:Q,height:Z,data:J}=$;if(this.updateScreenSize(Q,Z),!this.latestJpegBuffer||this.latestJpegBuffer.length<J.length){let Y=this.latestJpegBuffer?.length??0;this.latestJpegBuffer=Buffer.allocUnsafe(Math.max(J.length,Y*2))}this.latestJpegBuffer.set(J,0),this.latestJpegLength=J.length}async waitForCapture(){if(await this.captureStart,this.phase!=="running")throw Error("Capture session is stopped")}latestJpeg(){if(!this.latestJpegBuffer)return null;return this.latestJpegBuffer.subarray(0,this.latestJpegLength)}async writeMjpegFrame($,Q){if($.write(RQ(Q.length)),await b9($,Q),!$.writableEnded&&!$.destroyed)$.write(AQ)}handleMjpeg($,Q){let Z=new URL($.url??"","http://x").searchParams.get("raw")==="1";Q.writeHead(200,{"Content-Type":Z?"application/octet-stream":"multipart/x-mixed-replace; boundary=frame","Cache-Control":"no-cache, no-store",Connection:"keep-alive",...d0}),(async()=>{let J=()=>{},Y=!1,X=()=>{Y=!0,J()};$.once("aborted",X),Q.once("close",X),Q.once("error",X);try{if(await this.waitForCapture(),Y||Q.writableEnded||Q.destroyed)return;let G=this.latestJpeg();if(G)await this.writeMjpegFrame(Q,Buffer.from(G));let H=await this.capture.subscribeMjpeg(async(W)=>{if(this.onSharedMjpegFrame(W),await v9(Q),!Q.writableEnded&&!Q.destroyed)await this.writeMjpegFrame(Q,W.data)}),V=!1;if(J=()=>{if(V)return;V=!0,H().catch(()=>{})},Y||Q.writableEnded||Q.destroyed)J()}catch{J(),Q.destroy()}})()}handleAvcc($,Q){Q.writeHead(200,{"Content-Type":"application/octet-stream","Cache-Control":"no-cache, no-store",Connection:"keep-alive",...d0}),(async()=>{let Z=()=>{},J=!1,Y=()=>{J=!0,Z()};$.once("aborted",Y),Q.once("close",Y),Q.once("error",Y);try{if(await this.waitForCapture(),J||Q.writableEnded||Q.destroyed)return;let X=!1,G=!1,H,V=()=>{G=!0;let M=H;if(H=void 0,M)M().catch(()=>{})};Z=V;let W=this.latestJpeg();if(W)X=!0,Q.write(f9(W));else if(H=await this.capture.subscribeMjpeg(async(M)=>{if(X||Q.writableEnded||Q.destroyed){V();return}this.onSharedMjpegFrame(M),X=!0,Q.write(f9(M.data)),V()}),G)V();if(J||Q.writableEnded||Q.destroyed){V();return}let z=await this.capture.subscribeAvcc(async(M)=>{if(this.updateScreenSize(M.width,M.height),!X)X=!0,V();if(await v9(Q),!Q.writableEnded&&!Q.destroyed)await b9(Q,M.data)}),B=!1;if(Z=()=>{if(B)return;B=!0,V(),z().catch(()=>{})},J||Q.writableEnded||Q.destroyed)Z()}catch{Z(),Q.destroy()}})()}handleConfig($,Q){this.sendJson(Q,200,this.screenConfig())}handleHealth($,Q){this.sendJson(Q,200,{status:"ok"})}async handleStreamSettings($,Q){if($.method==="GET"){if(await this.streamSettingsUpdate,!Q.writableEnded&&!Q.destroyed)this.sendJson(Q,200,this.encoderSettings);return}if($.method!=="PATCH"){this.sendJson(Q,405,{error:"method_not_allowed"});return}if(!h9($)){this.sendJson(Q,415,{error:"unsupported_media_type"});return}try{let Z=await r4($,16384,new l("Stream settings body is too large",413,"body_too_large")),J=X9(t4(Z,"invalid_stream_settings"));if(!J)throw new l("Invalid stream settings",400,"invalid_stream_settings");let Y=await this.updateStreamSettings(J);if(!Q.writableEnded&&!Q.destroyed)this.sendJson(Q,200,Y)}catch(Z){if(Q.writableEnded||Q.destroyed)return;let J=Z instanceof l?Z.status:500,Y=Z instanceof l?Z.code:"stream_settings_failed";this.sendJson(Q,J,{error:Y})}}updateStreamSettings($){let Q=this.streamSettingsUpdate.then(async()=>{let Z=y4({...this.encoderSettings,...$},this.encoderSettings);return await this.capture.updateStreamSettings(Z),this.encoderSettings=Z,Z});return this.streamSettingsUpdate=Q.then(()=>{},()=>{}),Q}async handleWebRTCOffer($,Q){let Z,J=!1,Y,X=()=>{if(!Z)return Promise.resolve();return Y??=this.capture.closeWebRTCSession(Z),Y},G=()=>{if(!Q.writableFinished)X()};Q.once("close",G);try{if($.method!=="POST")throw new l("WebRTC offers require POST",405,"method_not_allowed");if(!h9($))throw new l("WebRTC offers require application/json",415,"unsupported_media_type");let H=await r4($,x9),V=w9(t4(H,"invalid_offer"));if(Z=V.sessionId,await this.waitForCapture(),await this.refreshScreenSizeFromNative())this.broadcastConfig();let W=await this.capture.handleWebRTCOffer(V);if(J=!0,Q.writableEnded||Q.destroyed){await X();return}this.sendJson(Q,200,W)}catch(H){if(J)await X();if(Q.writableEnded||Q.destroyed)return;let V=H instanceof Error&&H.message.includes("WebRTC signaling already in progress"),W=H instanceof l?H.status:V?409:500,z=H instanceof l?H.code:V?"webrtc_session_busy":"webrtc_offer_failed";this.sendJson(Q,W,{error:z,message:H instanceof Error?H.message:String(H)})}finally{if(Q.writableFinished)Q.off("close",G)}}async handleWebRTCClose($,Q){try{if($.method!=="POST")throw new l("WebRTC close requires POST",405,"method_not_allowed");let Z=await r4($,4096),J=S9(t4(Z,"invalid_close_request"));if(await this.capture.closeWebRTCSession(J.sessionId),Q.writableEnded||Q.destroyed)return;Q.writeHead(204,d0),Q.end()}catch(Z){if(Q.writableEnded||Q.destroyed)return;let J=Z instanceof l?Z.status:400,Y=Z instanceof l?Z.code:"invalid_close_request";this.sendJson(Q,J,{error:Y,message:Z instanceof Error?Z.message:String(Z)})}}handleOptions($,Q){s4(Q)}handleAx($,Q){return this.serveAxJson(Q,()=>V4(this.udid),"ax_unavailable")}handleForeground($,Q){return this.serveAxJson(Q,()=>W4(this.udid),"foreground_unavailable")}async serveAxJson($,Q,Z){try{let J=await Q();if($.writableEnded)return;this.sendJsonString($,200,J)}catch(J){if($.writableEnded)return;this.sendJson($,503,{error:Z,message:J instanceof Error?J.message:String(J)})}}attachHidSocket($){this.hidSockets.add($);let Q=this.configFrame();if(Q)$.send(Q);$.on("message",(Z)=>this.handleHidMessage(Buffer.isBuffer(Z)?Z:Buffer.from(Z))),$.on("close",()=>this.hidSockets.delete($)),$.on("error",()=>this.hidSockets.delete($))}async handleHidMessage($){if($.length<1)return;let Q=$[0],Z=$.length>1?$.subarray(1):null,J=()=>{if(!Z)return null;try{return JSON.parse(Z.toString("utf8"))}catch{return null}},Y=this.width,X=this.height;switch(Q){case 3:{let G=J();if(G)this.recordTouchEvent(G),this.hid.touch(G.type,G.x,G.y,Y,X,G.edge??0);break}case 4:{let G=J();if(!G)break;if(this.recordHidEvent(Q,G),G.page!=null&&G.usage!=null)this.hid.buttonHid(G.page,G.usage,G.phase??"press");else this.hid.button(G.button);break}case 5:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.multiTouch(G.type,G.x1,G.y1,G.x2,G.y2,Y,X);break}case 6:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.key(G.type,G.usage);break}case 7:{let G=J();if(!G)break;let H=CQ[G.orientation];if(H!=null&&await this.hid.orientation(H)){if(this.recordHidEvent(Q,G),G.orientation!==this.orientation)this.orientation=G.orientation,this.broadcastConfig()}break}case 8:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.caDebug(G.option,G.enabled);break}case 9:this.recordHidEvent(Q,{}),this.hid.memoryWarning();break;case 10:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.digitalCrown(G.delta);break}case 11:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.scroll(G.dx*Y,G.dy*X,Y,X,G.x,G.y);break}case 12:this.recordHidEvent(Q,{}),this.hid.softwareKeyboard();break}}recordTouchEvent($){if($.type==="begin"){this.touchGestureLog=k9($);return}if($.type==="move"){let Q=this.touchGestureLog;if(!Q)Q=k9($),this.touchGestureLog=Q;if(Q.lastX=$.x,Q.lastY=$.y,Q.moveCount++,$.edge!=null)Q.edge=$.edge;if(y9(Q))if(Q.eventId==null){let Z=K0({device:this.udid,source:"hid",kind:"drag",action:"drag",summary:z4(Q),details:this.touchGestureDetails(Q,"drag","move")});Q.eventId=Z.id}else n4(Q.eventId,{kind:"drag",action:"drag",summary:z4(Q),details:this.touchGestureDetails(Q,"drag","move")},{notify:!1});return}if($.type==="end"){let Q=this.touchGestureLog;if(Q){if(Q.lastX=$.x,Q.lastY=$.y,$.edge!=null)Q.edge=$.edge;if(Q.moveCount>0&&y9(Q))if(Q.eventId==null)K0({device:this.udid,source:"hid",kind:"drag",action:"drag",summary:z4(Q),details:this.touchGestureDetails(Q,"drag","end")});else n4(Q.eventId,{kind:"drag",action:"drag",summary:z4(Q),details:this.touchGestureDetails(Q,"drag","end")});else K0({device:this.udid,source:"hid",kind:"tap",action:"tap",summary:`Tap ${q0($.x,$.y)}`,details:this.touchGestureDetails(Q,"tap")});this.touchGestureLog=void 0;return}}this.recordHidEvent(3,$)}eventLogScreen(){return this.width>0&&this.height>0?{width:this.width,height:this.height}:void 0}touchGestureDetails($,Q,Z){return{type:Q,...Z?{phase:Z}:{},start:{x:$.startX,y:$.startY},current:{x:$.lastX,y:$.lastY},moveCount:$.moveCount,...$.edge!=null?{edge:$.edge}:{},...this.eventLogScreen()?{screen:this.eventLogScreen()}:{}}}recordHidEvent($,Q){let Z=P9(this.udid,$,Q,this.eventLogScreen());if(Z)K0(Z)}screenConfig(){return{width:this.width,height:this.height,orientation:this.orientation}}configFrame(){if(this.width===0&&this.height===0)return null;return Buffer.concat([Buffer.from([OQ]),Buffer.from(JSON.stringify(this.screenConfig()))])}async refreshScreenSizeFromNative(){let{width:$,height:Q}=await this.capture.screenSize();if(!$||!Q||$===this.width&&Q===this.height)return!1;return this.width=$,this.height=Q,!0}updateScreenSize($,Q){if(!$||!Q||$===this.width&&Q===this.height)return;this.width=$,this.height=Q,this.broadcastConfig()}broadcastConfig(){let $=this.configFrame();if(!$)return;for(let Q of this.hidSockets)Q.send($)}sendJson($,Q,Z){this.sendJsonString($,Q,JSON.stringify(Z))}sendJsonString($,Q,Z){let J=Buffer.from(Z,"utf8");$.writeHead(Q,{"Content-Type":"application/json","Cache-Control":"no-cache, no-store","Content-Length":String(J.length),...d0}),$.end(J)}}var N0=new Map;function e4($,Q){let Z=N0.get($);if(!Z){let J=new u9($,Q);Z=J,N0.set($,J);try{J.start().catch(()=>{if(N0.get($)!==J)return;J.close(),N0.delete($)})}catch(Y){throw J.close(),N0.delete($),Y}}return Z}function $8($){let Q=N0.get($);if(Q)Q.close(),N0.delete($)}var n0=d$(a9(),1),HJ=n0.default("serve-sim:cli"),MJ=n0.default("serve-sim:helper"),FJ=n0.default("serve-sim:state"),o0=n0.default("serve-sim:mw");import{execFileSync as _4}from"child_process";import{createHash as Z6}from"crypto";import{existsSync as t,mkdirSync as J6,readdirSync as Y7,readFileSync as X0,renameSync as Y6,statSync as X6,unlinkSync as r9}from"fs";import{tmpdir as G6}from"os";import{basename as K6,dirname as z8,join as i}from"path";import{inflateSync as X7}from"zlib";var H8="/Library/Developer/CoreSimulator/Profiles/DeviceTypes",V6="/Library/Developer/DeviceKit/Chrome",t9="com.apple.dt.devicekit.chrome.",s9=i(G6(),"serve-sim-devicekit-chrome"),e9=i(G6(),"serve-sim-device-placeholder-assets"),V0="/System/Library/CoreServices/CoreTypes.bundle/Contents/Library/MobileDevices.bundle/Contents/Resources",G7="/System/Library/CoreServices/CoreTypes.bundle/Contents/Library/CoreTypes-0006.bundle/Contents/Resources",$6={"vision-pro":{paths:[i(V0,"com.apple.vision-pro.icns"),i(G7,"com.apple.visionpro.icns")]},"iphone-17e":{paths:[i(V0,"com.apple.iphone-16-e-1.icns")]},"ipad-air-11-inch-m4":{paths:[i(V0,"com.apple.ipad-air-m3-1.icns")]},"ipad-air-13-inch-m4":{paths:[i(V0,"com.apple.ipad-air-m3-1.icns")]}},J8=null,Y8=new Map,X8=new Map,G8=new Map,K8=null,V8=new Map;function U4($){return $.startsWith(t9)?$.slice(t9.length):$}function M8($){let Q=typeof $==="string"?$:$.toString("latin1"),Z=/\/CropBox\s*\[\s*(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s*\]/.exec(Q)??/\/MediaBox\s*\[\s*(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s*\]/.exec(Q);if(!Z)return null;let J=Number(Z[1]),Y=Number(Z[2]),X=Number(Z[3]),G=Number(Z[4]),H=Math.abs(X-J),V=Math.abs(G-Y);return H>0&&V>0?{width:H,height:V}:null}function K7($,Q){let Z=R7($);if(Z)return Z;let J=typeof $.framebufferMask==="string"?$.framebufferMask:null;if(!J)return null;let Y=typeof $.__profileDir==="string"?$.__profileDir:null;if(!Y)return null;let X=i(Y,`${J}.pdf`);if(!t(X))return null;let G=M8(X0(X));if(!G)return null;let H=C7(Q);return{width:G.width/H,height:G.height/H}}function W6($){let Q=F8($),Z=Q;if(X8.has(Z))return X8.get(Z)??null;let J=H7(Q);return X8.set(Z,J),J}function z6($){let Q=F8($);if(G8.has(Q))return G8.get(Q)??null;let Z=V7($);return G8.set(Q,Z),Z}function V7($){let Q=F7($),Z=Q?N6(Q):null,J=N7(Z)??_7($.name);if(!J)return null;let Y=F6(J);return Y?{name:J,width:Y.width,height:Y.height}:null}function H6($,Q){let Z=U4($.searchParams.get("chrome")??""),J=$.searchParams.get("image")??"";if(!/^[A-Za-z0-9_-]+$/.test(Z)||!J){k0(Q,400,"Invalid chrome asset request");return}let Y=L6(Z);if(!Y||!Y.allowedImages.has(J)||J.includes("/")){k0(Q,404,"Chrome asset not found");return}let X=N8(Z,J);if(!t(X)){k0(Q,404,"Chrome asset not found");return}try{let G=U6(Z,J,X),H=X0(G);Q.writeHead(200,{"Content-Type":"image/png","Cache-Control":"public, max-age=604800, immutable","Content-Length":String(H.byteLength)}),Q.end(H)}catch(G){k0(Q,500,G instanceof Error?G.message:"Failed to render chrome asset")}}function M6($,Q){let Z=$.searchParams.get("name")??"";try{let J=F6(Z);if(!J){k0(Q,404,"Placeholder asset not found");return}let Y=X0(J.pngPath);Q.writeHead(200,{"Content-Type":"image/png","Cache-Control":"public, max-age=604800, immutable","Content-Length":String(Y.byteLength)}),Q.end(Y)}catch(J){k0(Q,500,J instanceof Error?J.message:"Failed to render placeholder asset")}}function F6($){if(!/^[A-Za-z0-9._-]+$/.test($))return null;if(V8.has($))return V8.get($)??null;let Q=W7($),Z=Q?D7($,Q):null;return V8.set($,Z),Z}function W7($){let Z=z7($)?.paths.find((Y)=>t(Y));if(Z)return Z;if(!B6().some((Y)=>Y.iconName===$))return null;let J=i(V0,`${$}.icns`);return t(J)?J:null}function z7($){return Object.prototype.hasOwnProperty.call($6,$)?$6[$]:null}function H7($){let Q=_6($);if(!t(Q))return null;let Z=N6(Q);if(!Z?.chromeIdentifier)return null;let J=L6(Z.chromeIdentifier);if(!J)return null;let Y=null;if(J.compositeImage)Y=W8(J.identifier,J.compositeImage);let X=J.compositeImage?E7(J.identifier,J.compositeImage):null,G=(X&&Z.framebufferMaskSize?T7(Z.framebufferMaskSize,X):null)??Z.screenSize??(Y?{width:Y.width-J.insets.left-J.insets.right,height:Y.height-J.insets.top-J.insets.bottom}:null);if(!G||G.width<=0||G.height<=0)return null;let H=Y??{width:G.width+J.insets.left+J.insets.right,height:G.height+J.insets.top+J.insets.bottom},V={x:J.devicePadding.left,y:J.devicePadding.top,width:H.width,height:H.height},W={width:H.width+J.devicePadding.left+J.devicePadding.right,height:H.height+J.devicePadding.top+J.devicePadding.bottom},z={x:V.x+(H.width-G.width)/2,y:V.y+(H.height-G.height)/2,width:G.width,height:G.height},B=X?Math.max(0,X.radius-(X.width-G.width)/2):J.innerCornerRadius,M=J.slice?W8(J.identifier,J.slice.topLeft):null,N=J.identifier.startsWith("watch"),j=J.buttons.flatMap((R)=>{let x=W8(J.identifier,R.image);if(!x)return[];let A=O7(R,x,H,J.devicePadding),D={x:x.width>0?(R.rolloverOffset.x-R.normalOffset.x)/x.width:0,y:x.height>0?(R.rolloverOffset.y-R.normalOffset.y)/x.height:0};return[{name:R.name,image:R.image,imageDown:R.imageDown,onTop:R.onTop||N,frame:{...A,...x},hover:D,usagePage:R.usagePage,usage:R.usage}]});return{identifier:J.identifier,frame:W,body:V,screen:z,insets:J.insets,outerCornerRadius:J.outerCornerRadius,innerCornerRadius:J.innerCornerRadius,screenRadius:B,compositeImage:J.compositeImage,slice:J.slice,corner:M,buttons:j}}function N6($){let Q=B4($);if(!Q)return null;let Z=typeof Q.chromeIdentifier==="string"?Q.chromeIdentifier:null,J=Z?U4(Z):null;return{chromeIdentifier:J,modelIdentifier:typeof Q.modelIdentifier==="string"?Q.modelIdentifier:null,productClass:typeof Q.productClass==="string"?Q.productClass:null,screenSize:J?K7({...Q,__profileDir:z8($)},J):null,framebufferMaskSize:M7({...Q,__profileDir:z8($)})}}function M7($){let Q=typeof $.framebufferMask==="string"?$.framebufferMask:null,Z=typeof $.__profileDir==="string"?$.__profileDir:null;if(!Q||!Z)return null;let J=i(Z,`${Q}.pdf`);if(!t(J))return null;return M8(X0(J))}function F8($){return A7($.deviceTypeIdentifier)??$.name}function F7($){let Q=_6(F8($));return t(Q)?Q:null}function _6($){return i(H8,`${$}.simdevicetype`,"Contents","Resources","profile.plist")}function N7($){if(!$)return null;let Q=new Set;if($.modelIdentifier)Q.add($.modelIdentifier);if($.productClass)Q.add($.productClass),Q.add(`${$.productClass}AP`);if(Q.size===0)return null;for(let Z of B6())if(Z.modelCodes.some((J)=>Q.has(J)))return Z.iconName;return null}function _7($){let Q=$.toLowerCase();if(Q.includes("vision"))return"vision-pro";if(/iphone\s+17e\b/.test(Q))return"iphone-17e";if(/ipad\s+air\s+11-inch\s+\(m4\)/.test(Q))return"ipad-air-11-inch-m4";if(/ipad\s+air\s+13-inch\s+\(m4\)/.test(Q))return"ipad-air-13-inch-m4";return null}function B6(){if(K8)return K8;let $=B4(i(V0,"MobileDevices-Info.plist"))??B4(i(z8(V0),"Info.plist")),Q=Array.isArray($?.UTExportedTypeDeclarations)?$.UTExportedTypeDeclarations:[],Z=[];for(let J of Q){let Y=$0(J),X=a(Y.UTTypeIconFile);if(!X||!X.endsWith(".icns"))continue;let G=i(V0,X);if(!t(G))continue;let V=$0(Y.UTTypeTagSpecification)["com.apple.device-model-code"],W=Array.isArray(V)?V.filter((z)=>typeof z==="string"&&z.length>0):[];if(W.length===0)continue;Z.push({description:a(Y.UTTypeDescription)??"",iconFile:X,iconName:K6(X,".icns"),modelCodes:W})}return K8=Z,Z}function L6($){let Q=U4($);if(!/^[A-Za-z0-9_-]+$/.test(Q))return null;if(Y8.has(Q))return Y8.get(Q)??null;let Z=i(V6,`${Q}.devicechrome`,"Contents","Resources","chrome.json"),J=null;try{let Y=JSON.parse(X0(Z,"utf-8"));J=B7(Y)}catch{J=null}return Y8.set(Q,J),J}function B7($){let Q=typeof $.identifier==="string"?$.identifier:null;if(!Q)return null;let Z=U4(Q),J=$0($.images),Y=$0(J.sizing),X=$0($.paths),G=Y0($0(X.simpleOutsideBorder).cornerRadiusX),H={top:Y0(Y.topHeight),left:Y0(Y.leftWidth),bottom:Y0(Y.bottomHeight),right:Y0(Y.rightWidth)},V=$0(J.devicePadding),W={top:Y0(V.top),left:Y0(V.left),bottom:Y0(V.bottom),right:Y0(V.right)},z=typeof J.composite==="string"?J.composite:null,B=L7(J),M=Array.isArray($.inputs)?$.inputs.flatMap((j)=>{let R=U7($0(j));return R?[R]:[]}):[],N=new Set;for(let j of Object.values(J))if(typeof j==="string")N.add(j);for(let j of M)N.add(j.image);if(Array.isArray($.inputs))for(let j of $.inputs){let R=$0(j);if(typeof R.imageDown==="string")N.add(R.imageDown)}return{identifier:Z,insets:H,devicePadding:W,outerCornerRadius:G,innerCornerRadius:Math.max(G-Math.max(H.left,H.top),0),compositeImage:z,slice:B,buttons:M,allowedImages:N}}function L7($){let Q=a($.topLeft),Z=a($.top),J=a($.topRight),Y=a($.right),X=a($.bottomRight),G=a($.bottom),H=a($.bottomLeft),V=a($.left);if(!Q||!Z||!J||!Y||!X||!G||!H||!V)return null;return{topLeft:Q,top:Z,topRight:J,right:Y,bottomRight:X,bottom:G,bottomLeft:H,left:V}}function U7($){let Q=a($.name),Z=a($.image);if(!Q||!Z)return null;let J=a($.anchor),Y=a($.align),X=$0($.offsets),G=Q6($0(X.normal)),H=Q6($0(X.rollover));return{name:Q,image:Z,imageDown:a($.imageDown),onTop:$.onTop===!0,anchor:J==="right"||J==="top"||J==="bottom"?J:"left",align:Y==="trailing"?"trailing":"leading",normalOffset:G??H??{x:0,y:0},rolloverOffset:H??G??{x:0,y:0},usagePage:W0($.usagePage),usage:W0($.usage)}}function O7($,Q,Z,J){let{left:Y,top:X}=J,G=2*$.normalOffset.x-$.rolloverOffset.x,H=2*$.normalOffset.y-$.rolloverOffset.y,V=$.align==="trailing"?Y+Z.width+G-Q.width:Y+G;switch($.anchor){case"left":return{x:Y+$.rolloverOffset.x-Q.width/2,y:X+$.rolloverOffset.y};case"right":return{x:Y+Z.width+G,y:X+H};case"top":return{x:V,y:X+H-Q.height};case"bottom":return{x:V,y:X+Z.height+H}}}function A7($){if(!$)return null;if(!J8)J8=j7();return J8.get($)??null}function j7(){let $=new Map;try{for(let Q of Y7(H8)){if(!Q.endsWith(".simdevicetype"))continue;let Z=i(H8,Q),J=B4(i(Z,"Contents","Info.plist")),Y=typeof J?.CFBundleIdentifier==="string"?J.CFBundleIdentifier:null,X=typeof J?.CFBundleName==="string"?J.CFBundleName:K6(Q,".simdevicetype");if(Y)$.set(Y,X)}}catch{}return $}function B4($){try{let Q=_4("plutil",["-convert","json","-o","-",$],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:2000});return JSON.parse(Q)}catch{return null}}function R7($){let Q=W0($.mainScreenWidth),Z=W0($.mainScreenHeight),J=W0($.mainScreenScale);if(!Q||!Z||!J||J<=0)return null;return{width:Q/J,height:Z/J}}function C7($){if($.startsWith("phone"))return 3;if($.startsWith("tablet"))return 2;if($.startsWith("watch"))return 2;return 1}function W8($,Q){let Z=N8($,Q);if(!t(Z))return null;return M8(X0(Z))}function N8($,Q){return i(V6,`${$}.devicechrome`,"Contents","Resources",`${Q}.pdf`)}function U6($,Q,Z){J6(s9,{recursive:!0});let J=X6(Z),Y=Z6("sha1").update($).update("\x00").update(Q).update("\x00").update(String(J.mtimeMs)).update("\x00").update(String(J.size)).digest("hex"),X=i(s9,`${$}-${Y}.png`);if(t(X))return X;let G=`${X}.${process.pid}.tmp`;return _4("sips",["-s","format","png",Z,"--out",G],{stdio:["ignore","ignore","ignore"],timeout:1e4}),Y6(G,X),X}function D7($,Q){J6(e9,{recursive:!0});let Z=X6(Q),J=Z6("sha1").update($).update("\x00").update(Q).update("\x00").update(String(Z.mtimeMs)).update("\x00").update(String(Z.size)).digest("hex"),Y=i(e9,`${$}-${J}.png`);if(t(Y)){let H=L4(X0(Y));return{sourcePath:Q,pngPath:Y,width:H.width,height:H.height}}let X=`${Y}.${process.pid}.tmp`,G=`${Y}.${process.pid}.raw.png`;try{_4("sips",["-s","format","png",Q,"--out",G],{stdio:["ignore","ignore","ignore"],timeout:1e4});let H=X0(G),V=P7(H)??{x:0,y:0,...L4(H)};return _4("sips",["-c",String(V.height),String(V.width),"--cropOffset",String(V.y),String(V.x),"-s","format","png",Q,"--out",X],{stdio:["ignore","ignore","ignore"],timeout:1e4}),Y6(X,Y),{sourcePath:Q,pngPath:Y,width:V.width,height:V.height}}finally{try{if(t(G))r9(G)}catch{}try{if(t(X))r9(X)}catch{}}}function L4($){if($.byteLength<24||$[0]!==137||$.toString("ascii",1,4)!=="PNG")throw Error("Invalid PNG placeholder asset");return{width:$.readUInt32BE(16),height:$.readUInt32BE(20)}}function O6($,Q){let{width:Z,height:J}=L4($),Y=8,X=0,G=0,H=[];while(Y<$.byteLength){let R=$.readUInt32BE(Y);Y+=4;let x=$.toString("ascii",Y,Y+4);Y+=4;let A=$.subarray(Y,Y+R);if(Y+=R+4,x==="IHDR")X=A[8]??0,G=A[9]??0;else if(x==="IDAT")H.push(A);else if(x==="IEND")break}let V=G===6?4:G===4?2:0;if(X!==8||V===0||H.length===0)return null;let W=G===6,z=X7(Buffer.concat(H)),B=Z*V,M=new Uint8Array(Z*J),N=Buffer.alloc(B),j=0;for(let R=0;R<J;R++){let x=z[j++]??0,A=Buffer.from(z.subarray(j,j+B));j+=B,x7(A,N,V,x);for(let D=0;D<Z;D++){let U=D*V,C=A[U]??0,E=W?A[U+1]??0:C,F=W?A[U+2]??0:C,K=A[U+V-1]??0;if(Q(C,E,F,K))M[R*Z+D]=1}N=A}return{width:Z,height:J,mask:M}}function P7($){let{width:Q,height:Z}=L4($),J=O6($,(V,W,z,B)=>B>0);if(!J)return{x:0,y:0,width:Q,height:Z};let Y=Q,X=Z,G=-1,H=-1;for(let V=0;V<Z;V++)for(let W=0;W<Q;W++){if(!J.mask[V*Q+W])continue;if(W<Y)Y=W;if(V<X)X=V;if(W>G)G=W;if(V>H)H=V}if(G<Y||H<X)return{x:0,y:0,width:Q,height:Z};return{x:Y,y:X,width:G-Y+1,height:H-X+1}}function T7($,Q){if(Q.width<=0)return null;let Z=Math.max(1,Math.round($.width/Q.width));return{width:$.width/Z,height:$.height/Z}}function E7($,Q){let Z=I7($,Q);if(!Z)return null;let J=O6(Z,(D,U,C,E)=>E>200&&D<30&&U<30&&C<30);if(!J)return null;let{width:Y,height:X,mask:G}=J,H=Math.floor(Y/2),V=Math.floor(X/2),W=(D,U)=>D>=0&&U>=0&&D<Y&&U<X&&G[U*Y+D]===1;if(!W(H,V))return null;let z=H;while(z>0&&W(z-1,V))z--;let B=H;while(B<Y-1&&W(B+1,V))B++;let M=V;while(M>0&&W(H,M-1))M--;let N=V;while(N<X-1&&W(H,N+1))N++;let j=N-M,R=(D,U)=>{let C=0;while(C<j&&!W(D,U?M+C:N-C))C++;return C},x=[R(z,!0),R(B,!0),R(z,!1),R(B,!1)],A=x.reduce((D,U)=>D+U,0)/x.length;return{x:z,y:M,width:B-z+1,height:N-M+1,radius:A}}function I7($,Q){let Z=N8($,Q);if(!t(Z))return null;try{return X0(U6($,Q,Z))}catch{return null}}function x7($,Q,Z,J){for(let Y=0;Y<$.byteLength;Y++){let X=Y>=Z?$[Y-Z]:0,G=Q[Y]??0,H=Y>=Z?Q[Y-Z]:0;switch(J){case 0:break;case 1:$[Y]=$[Y]+X&255;break;case 2:$[Y]=$[Y]+G&255;break;case 3:$[Y]=$[Y]+Math.floor((X+G)/2)&255;break;case 4:$[Y]=$[Y]+q7(X,G,H)&255;break;default:throw Error(`Unsupported PNG filter ${J}`)}}}function q7($,Q,Z){let J=$+Q-Z,Y=Math.abs(J-$),X=Math.abs(J-Q),G=Math.abs(J-Z);if(Y<=X&&Y<=G)return $;return X<=G?Q:Z}function k0($,Q,Z){$.writeHead(Q,{"Content-Type":"application/json","Cache-Control":"no-store"}),$.end(JSON.stringify({ok:!1,error:Z}))}function Y0($){return W0($)??0}function W0($){if(typeof $==="number"&&Number.isFinite($))return $;if(typeof $==="string"&&$.trim()){let Q=Number($);return Number.isFinite(Q)?Q:null}return null}function a($){return typeof $==="string"&&$?$:null}function $0($){return $&&typeof $==="object"&&!Array.isArray($)?$:{}}function Q6($){let Q=W0($.x),Z=W0($.y);return Q===null||Z===null?null:{x:Q,y:Z}}import{exec as w7}from"child_process";import{createHash as R6,timingSafeEqual as S7}from"crypto";function A6($){let Q=new TextDecoder;if(typeof $==="string")return $;if($ instanceof ArrayBuffer)return Q.decode(new Uint8Array($));if(ArrayBuffer.isView($))return Q.decode(new Uint8Array($.buffer,$.byteOffset,$.byteLength));return String($)}function j6($){return $.headers.get("host")??new URL($.url).host}var y7=1e4;function k7($,Q){let Z=R6("sha256").update($).digest(),J=R6("sha256").update(Q).digest();return S7(Z,J)}function f7($,Q,Z){let J=!1,Y=new Map,X=Z.ssePrefixes??[],G=(W)=>{if($.readyState===$.OPEN)$.send(JSON.stringify(W))},H=setTimeout(()=>{if(!J)$.close()},y7);H.unref?.();let V=(W,z)=>{if(Y.has(W))return;let B=z.split("?")[0];if(!z.startsWith("/")||!X.some((A)=>B===A)){G({sub:W,end:!0,error:"path not allowed"});return}if(!Z.onSseRequest){G({sub:W,end:!0,error:"sse requests not supported"});return}let M=!0,N=!1,j=null,R=(A)=>{if(N)return;N=!0,G(A?{sub:W,end:!0,error:A}:{sub:W,end:!0})},x={destroy(){M=!1,j?.cancel().catch(()=>{})}};Y.set(W,x),(async()=>{try{let A=await Z.onSseRequest(z,Q);if(!M)return;if(!A?.body){R();return}let D=new TextDecoder;j=A.body.getReader();while(M){let{done:U,value:C}=await j.read();if(U)break;G({sub:W,data:D.decode(C,{stream:!0})})}if(M){let U=D.decode();if(U)G({sub:W,data:U})}}catch{if(M)R();return}finally{if(M=!1,j)try{j.releaseLock()}catch{}if(Y.get(W)===x)Y.delete(W),R()}})()};$.on("message",(W)=>{let z;try{z=JSON.parse(A6(W))}catch{return}if(!J){if(typeof z.token==="string"&&k7(z.token,Z.execToken))J=!0,clearTimeout(H),G({ready:!0});else $.close();return}if(typeof z.unsub==="number"){Y.get(z.unsub)?.destroy(),Y.delete(z.unsub);return}if(typeof z.sub==="number"&&typeof z.path==="string"){V(z.sub,z.path);return}if(typeof z.id==="number"&&z.ui!==void 0){let{id:N}=z;if(!Z.onUiRequest){G({id:N,error:"ui requests not supported"});return}Z.onUiRequest(z.ui).then((j)=>G({id:N,...j})).catch((j)=>G({id:N,error:j instanceof Error?j.message:String(j)}));return}if(typeof z.id!=="number"||typeof z.command!=="string"||!z.command)return;let{id:B,command:M}=z;w7(M,{maxBuffer:16777216},(N,j,R)=>{let x={id:B,stdout:j.toString(),stderr:R.toString(),exitCode:N?N.code??1:0};try{Z.onCommandResult?.(M,x)}catch{}G(x)})}),$.on("error",()=>$.close()),$.on("close",()=>{clearTimeout(H);for(let W of Y.values())W.destroy();Y.clear()})}function C6($){return function(Z,J){let Y=new URL(Z.url);if(Y.pathname!==$.path&&Y.pathname!==`${$.path}/`)return!1;let X=Z.headers.get("origin");if(X)try{if(new URL(X).host!==j6(Z))return J.close(),!0}catch{return J.close(),!0}return f7(J,Z,$),!0}}import{execFile as h7}from"child_process";import{existsSync as T6}from"fs";import{join as _8,resolve as u7}from"path";import{fileURLToPath as v7}from"url";import{dirname as b7}from"path";import{WebSocketServer as fJ}from"ws";function D6($){return b7(v7($))}var B8=D6(import.meta.url),E6=["extra-small","small","medium","large","extra-large","extra-extra-large","extra-extra-extra-large","accessibility-medium","accessibility-large","accessibility-extra-large","accessibility-extra-extra-large","accessibility-extra-extra-extra-large"],g7=["none","grayscale","red-green","green-red","blue-yellow"],p7={protanopia:"red-green",deuteranopia:"green-red",tritanopia:"blue-yellow"},a0=["on","off"],c7=new Set(["on","true","enabled","1","yes"]),l7=new Set(["off","false","disabled","0","no"]),L0={appearance:{via:"appearance",values:["light","dark"]},"liquid-glass":{via:"ax",values:["clear","tinted"]},"color-filter":{via:"ax",values:g7,aliases:p7},"text-size":{via:"content_size",values:E6,extraValues:["increment","decrement"]},"reduce-motion":{via:"ax",values:a0,toggle:!0},"increase-contrast":{via:"increase_contrast",values:a0,toggle:!0},"show-borders":{via:"ax",values:a0,toggle:!0},"reduce-transparency":{via:"ax",values:a0,toggle:!0},voiceover:{via:"ax",values:a0,toggle:!0}};function I6($,Q){let Z=L0[$];if(!Z)return null;let J=Q.toLowerCase();if(Z.toggle){if(c7.has(J))return"on";if(l7.has(J))return"off";return null}let Y=Z.aliases?.[J]??J;if(Z.values.includes(Y))return Y;if(Z.extraValues?.includes(Y))return Y;return null}function P6(){let $=[_8(B8,"..","dist","simax","serve-sim-ax-settings"),_8(B8,"simax","serve-sim-ax-settings")];for(let Q of $)if(T6(Q))return u7(Q);return null}var O4=null;function m7(){return O4??=(async()=>{let $=P6();if($)return $;let Q=_8(B8,"..","Sources","SimAXSettings","build.sh");if(!T6(Q))throw Error("sim-ax-settings binary not found — this build of serve-sim does not "+"include the simulator settings helper. Reinstall from a recent release.");console.error("[serve-sim] building sim-ax-settings (one-time)…"),await L8("bash",[Q]);let Z=P6();if(!Z)throw Error("Build succeeded but sim-ax-settings not found.");return Z})(),O4.catch(()=>{O4=null}),O4}function L8($,Q){return new Promise((Z,J)=>{h7($,Q,{encoding:"utf-8",maxBuffer:4194304},(Y,X,G)=>{if(Y)J(Error(String(G).trim()||Y.message));else Z(String(X).trim())})})}function x6($,Q,Z){let J=["simctl","ui",$,Q];if(Z!==void 0)J.push(Z);return L8("xcrun",J)}async function U8($,...Q){let Z=await m7();return L8("xcrun",["simctl","spawn",$,Z,...Q])}function d7($){return $==="enabled"?"on":"off"}function i7($){return $==="on"?"enabled":"disabled"}async function n7($,Q){let Z=L0[Q];if(!Z)throw Error(`unknown option: ${Q}`);if(Z.via==="ax")return U8($,"get",Q);let J=(await x6($,Z.via)).toLowerCase();return Z.toggle?d7(J):J}async function q6($,Q,Z){let J=L0[Q];if(!J)throw Error(`unknown option: ${Q}`);if(J.via==="ax"){await U8($,"set",Q,Z);return}await x6($,J.via,J.toggle?i7(Z):Z)}async function w6($){let Q=Object.entries(L0).filter(([,X])=>X.via!=="ax"),[Z,...J]=await Promise.all([U8($,"status").then((X)=>JSON.parse(X)).catch(()=>({})),...Q.map(([X])=>n7($,X).catch(()=>"unsupported"))]),Y={};for(let[X,G]of Object.entries(L0))if(G.via==="ax")Y[X]=Z[X]??"unsupported";return Q.forEach(([X],G)=>{Y[X]=J[G]}),Y}var iJ=`Usage: serve-sim ui [status] [--json] [-d udid]
54
+ `,"ascii")}function f9($){let Q=Buffer.allocUnsafe(5+$.length);return Q.writeUInt32BE($.length+1,0),Q[4]=UQ,Q.set($,5),Q}var CQ={portrait:c0.portrait,portrait_upside_down:c0.portraitUpsideDown,landscape_left:c0.landscapeLeft,landscape_right:c0.landscapeRight};function v9($){if($.writableEnded||$.destroyed||!$.writableNeedDrain)return Promise.resolve();return new Promise((Q)=>{let Z=()=>{J(),Q()},J=()=>{$.off("drain",Z),$.off("close",Z),$.off("error",Z)};$.once("drain",Z),$.once("close",Z),$.once("error",Z)})}function b9($,Q){if($.writableEnded||$.destroyed)return Promise.resolve();return new Promise((Z)=>{let J=!1,Y=()=>{if(J)return;J=!0,$.off("close",Y),$.off("error",Y),Z()};$.once("close",Y),$.once("error",Y);try{$.write(Q,Y)}catch{Y()}})}function t4($,Q,Z=new l("WebRTC signaling body is too large",413,"body_too_large")){return new Promise((J,Y)=>{let X=[],G=0,H=!1,V=(W)=>{if(H)return;H=!0,Y(W)};$.on("data",(W)=>{if(H)return;let z=Buffer.isBuffer(W)?W:Buffer.from(W);if(G+=z.length,G>Q){V(Z);return}X.push(z)}),$.on("end",()=>{if(H)return;H=!0,J(Buffer.concat(X))}),$.on("aborted",()=>V(new l("Request aborted",400,"request_aborted"))),$.on("error",V)})}function h9($){let Q=$.headers["content-type"];return(Array.isArray(Q)?Q[0]:Q)?.split(";",1)[0]?.trim().toLowerCase()==="application/json"}function s4($,Q){try{return JSON.parse($.toString("utf8"))}catch{throw new l("Malformed JSON request body",400,Q)}}class u9{udid;capture;hid;captureStart;phase="unstarted";width=0;height=0;orientation="portrait";latestJpegBuffer=null;latestJpegLength=0;hidSockets=new Set;touchGestureLog;encoderSettings;streamSettingsUpdate=Promise.resolve();constructor($,Q){this.udid=$;let Z=K9(Q);this.encoderSettings=G9(Z),this.hid=new h4($),this.capture=new u4($,this.encoderSettings)}start(){if(this.phase==="running")return this.captureStart??Promise.resolve();if(this.phase==="stopped")return Promise.reject(Error("Capture session is stopped"));return this.phase="running",this.captureStart=this.capture.start(),this.captureStart}close(){if(this.phase!=="running")return;for(let $ of this.hidSockets)$.close();this.hidSockets.clear(),this.capture.stop().catch(()=>{}),this.phase="stopped"}onSharedMjpegFrame($){let{width:Q,height:Z,data:J}=$;if(this.updateScreenSize(Q,Z),!this.latestJpegBuffer||this.latestJpegBuffer.length<J.length){let Y=this.latestJpegBuffer?.length??0;this.latestJpegBuffer=Buffer.allocUnsafe(Math.max(J.length,Y*2))}this.latestJpegBuffer.set(J,0),this.latestJpegLength=J.length}async waitForCapture(){if(await this.captureStart,this.phase!=="running")throw Error("Capture session is stopped")}latestJpeg(){if(!this.latestJpegBuffer)return null;return this.latestJpegBuffer.subarray(0,this.latestJpegLength)}async writeMjpegFrame($,Q){if($.write(RQ(Q.length)),await b9($,Q),!$.writableEnded&&!$.destroyed)$.write(AQ)}handleMjpeg($,Q){let Z=new URL($.url??"","http://x").searchParams.get("raw")==="1";Q.writeHead(200,{"Content-Type":Z?"application/octet-stream":"multipart/x-mixed-replace; boundary=frame","Cache-Control":"no-cache, no-store",Connection:"keep-alive",...d0}),(async()=>{let J=()=>{},Y=!1,X=()=>{Y=!0,J()};$.once("aborted",X),Q.once("close",X),Q.once("error",X);try{if(await this.waitForCapture(),Y||Q.writableEnded||Q.destroyed)return;let G=this.latestJpeg();if(G)await this.writeMjpegFrame(Q,Buffer.from(G));let H=await this.capture.subscribeMjpeg(async(W)=>{if(this.onSharedMjpegFrame(W),await v9(Q),!Q.writableEnded&&!Q.destroyed)await this.writeMjpegFrame(Q,W.data)}),V=!1;if(J=()=>{if(V)return;V=!0,H().catch(()=>{})},Y||Q.writableEnded||Q.destroyed)J()}catch{J(),Q.destroy()}})()}handleAvcc($,Q){Q.writeHead(200,{"Content-Type":"application/octet-stream","Cache-Control":"no-cache, no-store",Connection:"keep-alive",...d0}),(async()=>{let Z=()=>{},J=!1,Y=()=>{J=!0,Z()};$.once("aborted",Y),Q.once("close",Y),Q.once("error",Y);try{if(await this.waitForCapture(),J||Q.writableEnded||Q.destroyed)return;let X=!1,G=!1,H,V=()=>{G=!0;let M=H;if(H=void 0,M)M().catch(()=>{})};Z=V;let W=this.latestJpeg();if(W)X=!0,Q.write(f9(W));else if(H=await this.capture.subscribeMjpeg(async(M)=>{if(X||Q.writableEnded||Q.destroyed){V();return}this.onSharedMjpegFrame(M),X=!0,Q.write(f9(M.data)),V()}),G)V();if(J||Q.writableEnded||Q.destroyed){V();return}let z=await this.capture.subscribeAvcc(async(M)=>{if(this.updateScreenSize(M.width,M.height),!X)X=!0,V();if(await v9(Q),!Q.writableEnded&&!Q.destroyed)await b9(Q,M.data)}),B=!1;if(Z=()=>{if(B)return;B=!0,V(),z().catch(()=>{})},J||Q.writableEnded||Q.destroyed)Z()}catch{Z(),Q.destroy()}})()}handleConfig($,Q){this.sendJson(Q,200,this.screenConfig())}handleHealth($,Q){this.sendJson(Q,200,{status:"ok"})}async handleStreamSettings($,Q){if($.method==="GET"){if(await this.streamSettingsUpdate,!Q.writableEnded&&!Q.destroyed)this.sendJson(Q,200,this.encoderSettings);return}if($.method!=="PATCH"){this.sendJson(Q,405,{error:"method_not_allowed"});return}if(!h9($)){this.sendJson(Q,415,{error:"unsupported_media_type"});return}try{let Z=await t4($,16384,new l("Stream settings body is too large",413,"body_too_large")),J=X9(s4(Z,"invalid_stream_settings"));if(!J)throw new l("Invalid stream settings",400,"invalid_stream_settings");let Y=await this.updateStreamSettings(J);if(!Q.writableEnded&&!Q.destroyed)this.sendJson(Q,200,Y)}catch(Z){if(Q.writableEnded||Q.destroyed)return;let J=Z instanceof l?Z.status:500,Y=Z instanceof l?Z.code:"stream_settings_failed";this.sendJson(Q,J,{error:Y})}}updateStreamSettings($){let Q=this.streamSettingsUpdate.then(async()=>{let Z=k4({...this.encoderSettings,...$},this.encoderSettings);return await this.capture.updateStreamSettings(Z),this.encoderSettings=Z,Z});return this.streamSettingsUpdate=Q.then(()=>{},()=>{}),Q}async handleWebRTCOffer($,Q){let Z,J=!1,Y,X=()=>{if(!Z)return Promise.resolve();return Y??=this.capture.closeWebRTCSession(Z),Y},G=()=>{if(!Q.writableFinished)X()};Q.once("close",G);try{if($.method!=="POST")throw new l("WebRTC offers require POST",405,"method_not_allowed");if(!h9($))throw new l("WebRTC offers require application/json",415,"unsupported_media_type");let H=await t4($,x9),V=w9(s4(H,"invalid_offer"));if(Z=V.sessionId,await this.waitForCapture(),await this.refreshScreenSizeFromNative())this.broadcastConfig();let W=await this.capture.handleWebRTCOffer(V);if(J=!0,Q.writableEnded||Q.destroyed){await X();return}this.sendJson(Q,200,W)}catch(H){if(J)await X();if(Q.writableEnded||Q.destroyed)return;let V=H instanceof Error&&H.message.includes("WebRTC signaling already in progress"),W=H instanceof l?H.status:V?409:500,z=H instanceof l?H.code:V?"webrtc_session_busy":"webrtc_offer_failed";this.sendJson(Q,W,{error:z,message:H instanceof Error?H.message:String(H)})}finally{if(Q.writableFinished)Q.off("close",G)}}async handleWebRTCClose($,Q){try{if($.method!=="POST")throw new l("WebRTC close requires POST",405,"method_not_allowed");let Z=await t4($,4096),J=S9(s4(Z,"invalid_close_request"));if(await this.capture.closeWebRTCSession(J.sessionId),Q.writableEnded||Q.destroyed)return;Q.writeHead(204,d0),Q.end()}catch(Z){if(Q.writableEnded||Q.destroyed)return;let J=Z instanceof l?Z.status:400,Y=Z instanceof l?Z.code:"invalid_close_request";this.sendJson(Q,J,{error:Y,message:Z instanceof Error?Z.message:String(Z)})}}handleOptions($,Q){e4(Q)}handleAx($,Q){return this.serveAxJson(Q,()=>V4(this.udid),"ax_unavailable")}handleForeground($,Q){return this.serveAxJson(Q,()=>W4(this.udid),"foreground_unavailable")}async serveAxJson($,Q,Z){try{let J=await Q();if($.writableEnded)return;this.sendJsonString($,200,J)}catch(J){if($.writableEnded)return;this.sendJson($,503,{error:Z,message:J instanceof Error?J.message:String(J)})}}attachHidSocket($){this.hidSockets.add($);let Q=this.configFrame();if(Q)$.send(Q);$.on("message",(Z)=>this.handleHidMessage(Buffer.isBuffer(Z)?Z:Buffer.from(Z))),$.on("close",()=>this.hidSockets.delete($)),$.on("error",()=>this.hidSockets.delete($))}async handleHidMessage($){if($.length<1)return;let Q=$[0],Z=$.length>1?$.subarray(1):null,J=()=>{if(!Z)return null;try{return JSON.parse(Z.toString("utf8"))}catch{return null}},Y=this.width,X=this.height;switch(Q){case 3:{let G=J();if(G)this.recordTouchEvent(G),this.hid.touch(G.type,G.x,G.y,Y,X,G.edge??0);break}case 4:{let G=J();if(!G)break;if(this.recordHidEvent(Q,G),G.page!=null&&G.usage!=null)this.hid.buttonHid(G.page,G.usage,G.phase??"press");else this.hid.button(G.button);break}case 5:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.multiTouch(G.type,G.x1,G.y1,G.x2,G.y2,Y,X);break}case 6:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.key(G.type,G.usage);break}case 7:{let G=J();if(!G)break;let H=CQ[G.orientation];if(H!=null&&await this.hid.orientation(H)){if(this.recordHidEvent(Q,G),G.orientation!==this.orientation)this.orientation=G.orientation,this.broadcastConfig()}break}case 8:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.caDebug(G.option,G.enabled);break}case 9:this.recordHidEvent(Q,{}),this.hid.memoryWarning();break;case 10:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.digitalCrown(G.delta);break}case 11:{let G=J();if(G)this.recordHidEvent(Q,G),this.hid.scroll(G.dx*Y,G.dy*X,Y,X,G.x,G.y);break}case 12:this.recordHidEvent(Q,{}),this.hid.softwareKeyboard();break}}recordTouchEvent($){if($.type==="begin"){this.touchGestureLog=k9($);return}if($.type==="move"){let Q=this.touchGestureLog;if(!Q)Q=k9($),this.touchGestureLog=Q;if(Q.lastX=$.x,Q.lastY=$.y,Q.moveCount++,$.edge!=null)Q.edge=$.edge;if(y9(Q))if(Q.eventId==null){let Z=V0({device:this.udid,source:"hid",kind:"drag",action:"drag",summary:z4(Q),details:this.touchGestureDetails(Q,"drag","move")});Q.eventId=Z.id}else o4(Q.eventId,{kind:"drag",action:"drag",summary:z4(Q),details:this.touchGestureDetails(Q,"drag","move")},{notify:!1});return}if($.type==="end"){let Q=this.touchGestureLog;if(Q){if(Q.lastX=$.x,Q.lastY=$.y,$.edge!=null)Q.edge=$.edge;if(Q.moveCount>0&&y9(Q))if(Q.eventId==null)V0({device:this.udid,source:"hid",kind:"drag",action:"drag",summary:z4(Q),details:this.touchGestureDetails(Q,"drag","end")});else o4(Q.eventId,{kind:"drag",action:"drag",summary:z4(Q),details:this.touchGestureDetails(Q,"drag","end")});else V0({device:this.udid,source:"hid",kind:"tap",action:"tap",summary:`Tap ${q0($.x,$.y)}`,details:this.touchGestureDetails(Q,"tap")});this.touchGestureLog=void 0;return}}this.recordHidEvent(3,$)}eventLogScreen(){return this.width>0&&this.height>0?{width:this.width,height:this.height}:void 0}touchGestureDetails($,Q,Z){return{type:Q,...Z?{phase:Z}:{},start:{x:$.startX,y:$.startY},current:{x:$.lastX,y:$.lastY},moveCount:$.moveCount,...$.edge!=null?{edge:$.edge}:{},...this.eventLogScreen()?{screen:this.eventLogScreen()}:{}}}recordHidEvent($,Q){let Z=P9(this.udid,$,Q,this.eventLogScreen());if(Z)V0(Z)}screenConfig(){return{width:this.width,height:this.height,orientation:this.orientation}}configFrame(){if(this.width===0&&this.height===0)return null;return Buffer.concat([Buffer.from([OQ]),Buffer.from(JSON.stringify(this.screenConfig()))])}async refreshScreenSizeFromNative(){let{width:$,height:Q}=await this.capture.screenSize();if(!$||!Q||$===this.width&&Q===this.height)return!1;return this.width=$,this.height=Q,!0}updateScreenSize($,Q){if(!$||!Q||$===this.width&&Q===this.height)return;this.width=$,this.height=Q,this.broadcastConfig()}broadcastConfig(){let $=this.configFrame();if(!$)return;for(let Q of this.hidSockets)Q.send($)}sendJson($,Q,Z){this.sendJsonString($,Q,JSON.stringify(Z))}sendJsonString($,Q,Z){let J=Buffer.from(Z,"utf8");$.writeHead(Q,{"Content-Type":"application/json","Cache-Control":"no-cache, no-store","Content-Length":String(J.length),...d0}),$.end(J)}}var N0=new Map;function H4($,Q){let Z=N0.get($);if(!Z){let J=new u9($,Q);Z=J,N0.set($,J);try{J.start().catch(()=>{if(N0.get($)!==J)return;J.close(),N0.delete($)})}catch(Y){throw J.close(),N0.delete($),Y}}return Z}function $8($){let Q=N0.get($);if(Q)Q.close(),N0.delete($)}var n0=d$(a9(),1),HJ=n0.default("serve-sim:cli"),MJ=n0.default("serve-sim:helper"),FJ=n0.default("serve-sim:state"),o0=n0.default("serve-sim:mw");import{execFileSync as B4}from"child_process";import{createHash as Z6}from"crypto";import{existsSync as t,mkdirSync as J6,readdirSync as Y7,readFileSync as G0,renameSync as Y6,statSync as X6,unlinkSync as r9}from"fs";import{tmpdir as G6}from"os";import{basename as K6,dirname as z8,join as i}from"path";import{inflateSync as X7}from"zlib";var H8="/Library/Developer/CoreSimulator/Profiles/DeviceTypes",V6="/Library/Developer/DeviceKit/Chrome",t9="com.apple.dt.devicekit.chrome.",s9=i(G6(),"serve-sim-devicekit-chrome"),e9=i(G6(),"serve-sim-device-placeholder-assets"),W0="/System/Library/CoreServices/CoreTypes.bundle/Contents/Library/MobileDevices.bundle/Contents/Resources",G7="/System/Library/CoreServices/CoreTypes.bundle/Contents/Library/CoreTypes-0006.bundle/Contents/Resources",$6={"vision-pro":{paths:[i(W0,"com.apple.vision-pro.icns"),i(G7,"com.apple.visionpro.icns")]},"iphone-17e":{paths:[i(W0,"com.apple.iphone-16-e-1.icns")]},"ipad-air-11-inch-m4":{paths:[i(W0,"com.apple.ipad-air-m3-1.icns")]},"ipad-air-13-inch-m4":{paths:[i(W0,"com.apple.ipad-air-m3-1.icns")]}},J8=null,Y8=new Map,X8=new Map,G8=new Map,K8=null,V8=new Map;function O4($){return $.startsWith(t9)?$.slice(t9.length):$}function M8($){let Q=typeof $==="string"?$:$.toString("latin1"),Z=/\/CropBox\s*\[\s*(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s*\]/.exec(Q)??/\/MediaBox\s*\[\s*(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s+(-?\d+(?:\.\d+)?)\s*\]/.exec(Q);if(!Z)return null;let J=Number(Z[1]),Y=Number(Z[2]),X=Number(Z[3]),G=Number(Z[4]),H=Math.abs(X-J),V=Math.abs(G-Y);return H>0&&V>0?{width:H,height:V}:null}function K7($,Q){let Z=R7($);if(Z)return Z;let J=typeof $.framebufferMask==="string"?$.framebufferMask:null;if(!J)return null;let Y=typeof $.__profileDir==="string"?$.__profileDir:null;if(!Y)return null;let X=i(Y,`${J}.pdf`);if(!t(X))return null;let G=M8(G0(X));if(!G)return null;let H=C7(Q);return{width:G.width/H,height:G.height/H}}function W6($){let Q=F8($),Z=Q;if(X8.has(Z))return X8.get(Z)??null;let J=H7(Q);return X8.set(Z,J),J}function z6($){let Q=F8($);if(G8.has(Q))return G8.get(Q)??null;let Z=V7($);return G8.set(Q,Z),Z}function V7($){let Q=F7($),Z=Q?N6(Q):null,J=N7(Z)??_7($.name);if(!J)return null;let Y=F6(J);return Y?{name:J,width:Y.width,height:Y.height}:null}function H6($,Q){let Z=O4($.searchParams.get("chrome")??""),J=$.searchParams.get("image")??"";if(!/^[A-Za-z0-9_-]+$/.test(Z)||!J){k0(Q,400,"Invalid chrome asset request");return}let Y=L6(Z);if(!Y||!Y.allowedImages.has(J)||J.includes("/")){k0(Q,404,"Chrome asset not found");return}let X=N8(Z,J);if(!t(X)){k0(Q,404,"Chrome asset not found");return}try{let G=U6(Z,J,X),H=G0(G);Q.writeHead(200,{"Content-Type":"image/png","Cache-Control":"public, max-age=604800, immutable","Content-Length":String(H.byteLength)}),Q.end(H)}catch(G){k0(Q,500,G instanceof Error?G.message:"Failed to render chrome asset")}}function M6($,Q){let Z=$.searchParams.get("name")??"";try{let J=F6(Z);if(!J){k0(Q,404,"Placeholder asset not found");return}let Y=G0(J.pngPath);Q.writeHead(200,{"Content-Type":"image/png","Cache-Control":"public, max-age=604800, immutable","Content-Length":String(Y.byteLength)}),Q.end(Y)}catch(J){k0(Q,500,J instanceof Error?J.message:"Failed to render placeholder asset")}}function F6($){if(!/^[A-Za-z0-9._-]+$/.test($))return null;if(V8.has($))return V8.get($)??null;let Q=W7($),Z=Q?D7($,Q):null;return V8.set($,Z),Z}function W7($){let Z=z7($)?.paths.find((Y)=>t(Y));if(Z)return Z;if(!B6().some((Y)=>Y.iconName===$))return null;let J=i(W0,`${$}.icns`);return t(J)?J:null}function z7($){return Object.prototype.hasOwnProperty.call($6,$)?$6[$]:null}function H7($){let Q=_6($);if(!t(Q))return null;let Z=N6(Q);if(!Z?.chromeIdentifier)return null;let J=L6(Z.chromeIdentifier);if(!J)return null;let Y=null;if(J.compositeImage)Y=W8(J.identifier,J.compositeImage);let X=J.compositeImage?E7(J.identifier,J.compositeImage):null,G=(X&&Z.framebufferMaskSize?T7(Z.framebufferMaskSize,X):null)??Z.screenSize??(Y?{width:Y.width-J.insets.left-J.insets.right,height:Y.height-J.insets.top-J.insets.bottom}:null);if(!G||G.width<=0||G.height<=0)return null;let H=Y??{width:G.width+J.insets.left+J.insets.right,height:G.height+J.insets.top+J.insets.bottom},V={x:J.devicePadding.left,y:J.devicePadding.top,width:H.width,height:H.height},W={width:H.width+J.devicePadding.left+J.devicePadding.right,height:H.height+J.devicePadding.top+J.devicePadding.bottom},z={x:V.x+(H.width-G.width)/2,y:V.y+(H.height-G.height)/2,width:G.width,height:G.height},B=X?Math.max(0,X.radius-(X.width-G.width)/2):J.innerCornerRadius,M=J.slice?W8(J.identifier,J.slice.topLeft):null,N=J.identifier.startsWith("watch"),j=J.buttons.flatMap((R)=>{let x=W8(J.identifier,R.image);if(!x)return[];let A=O7(R,x,H,J.devicePadding),D={x:x.width>0?(R.rolloverOffset.x-R.normalOffset.x)/x.width:0,y:x.height>0?(R.rolloverOffset.y-R.normalOffset.y)/x.height:0};return[{name:R.name,image:R.image,imageDown:R.imageDown,onTop:R.onTop||N,frame:{...A,...x},hover:D,usagePage:R.usagePage,usage:R.usage}]});return{identifier:J.identifier,frame:W,body:V,screen:z,insets:J.insets,outerCornerRadius:J.outerCornerRadius,innerCornerRadius:J.innerCornerRadius,screenRadius:B,compositeImage:J.compositeImage,slice:J.slice,corner:M,buttons:j}}function N6($){let Q=L4($);if(!Q)return null;let Z=typeof Q.chromeIdentifier==="string"?Q.chromeIdentifier:null,J=Z?O4(Z):null;return{chromeIdentifier:J,modelIdentifier:typeof Q.modelIdentifier==="string"?Q.modelIdentifier:null,productClass:typeof Q.productClass==="string"?Q.productClass:null,screenSize:J?K7({...Q,__profileDir:z8($)},J):null,framebufferMaskSize:M7({...Q,__profileDir:z8($)})}}function M7($){let Q=typeof $.framebufferMask==="string"?$.framebufferMask:null,Z=typeof $.__profileDir==="string"?$.__profileDir:null;if(!Q||!Z)return null;let J=i(Z,`${Q}.pdf`);if(!t(J))return null;return M8(G0(J))}function F8($){return A7($.deviceTypeIdentifier)??$.name}function F7($){let Q=_6(F8($));return t(Q)?Q:null}function _6($){return i(H8,`${$}.simdevicetype`,"Contents","Resources","profile.plist")}function N7($){if(!$)return null;let Q=new Set;if($.modelIdentifier)Q.add($.modelIdentifier);if($.productClass)Q.add($.productClass),Q.add(`${$.productClass}AP`);if(Q.size===0)return null;for(let Z of B6())if(Z.modelCodes.some((J)=>Q.has(J)))return Z.iconName;return null}function _7($){let Q=$.toLowerCase();if(Q.includes("vision"))return"vision-pro";if(/iphone\s+17e\b/.test(Q))return"iphone-17e";if(/ipad\s+air\s+11-inch\s+\(m4\)/.test(Q))return"ipad-air-11-inch-m4";if(/ipad\s+air\s+13-inch\s+\(m4\)/.test(Q))return"ipad-air-13-inch-m4";return null}function B6(){if(K8)return K8;let $=L4(i(W0,"MobileDevices-Info.plist"))??L4(i(z8(W0),"Info.plist")),Q=Array.isArray($?.UTExportedTypeDeclarations)?$.UTExportedTypeDeclarations:[],Z=[];for(let J of Q){let Y=$0(J),X=a(Y.UTTypeIconFile);if(!X||!X.endsWith(".icns"))continue;let G=i(W0,X);if(!t(G))continue;let V=$0(Y.UTTypeTagSpecification)["com.apple.device-model-code"],W=Array.isArray(V)?V.filter((z)=>typeof z==="string"&&z.length>0):[];if(W.length===0)continue;Z.push({description:a(Y.UTTypeDescription)??"",iconFile:X,iconName:K6(X,".icns"),modelCodes:W})}return K8=Z,Z}function L6($){let Q=O4($);if(!/^[A-Za-z0-9_-]+$/.test(Q))return null;if(Y8.has(Q))return Y8.get(Q)??null;let Z=i(V6,`${Q}.devicechrome`,"Contents","Resources","chrome.json"),J=null;try{let Y=JSON.parse(G0(Z,"utf-8"));J=B7(Y)}catch{J=null}return Y8.set(Q,J),J}function B7($){let Q=typeof $.identifier==="string"?$.identifier:null;if(!Q)return null;let Z=O4(Q),J=$0($.images),Y=$0(J.sizing),X=$0($.paths),G=X0($0(X.simpleOutsideBorder).cornerRadiusX),H={top:X0(Y.topHeight),left:X0(Y.leftWidth),bottom:X0(Y.bottomHeight),right:X0(Y.rightWidth)},V=$0(J.devicePadding),W={top:X0(V.top),left:X0(V.left),bottom:X0(V.bottom),right:X0(V.right)},z=typeof J.composite==="string"?J.composite:null,B=L7(J),M=Array.isArray($.inputs)?$.inputs.flatMap((j)=>{let R=U7($0(j));return R?[R]:[]}):[],N=new Set;for(let j of Object.values(J))if(typeof j==="string")N.add(j);for(let j of M)N.add(j.image);if(Array.isArray($.inputs))for(let j of $.inputs){let R=$0(j);if(typeof R.imageDown==="string")N.add(R.imageDown)}return{identifier:Z,insets:H,devicePadding:W,outerCornerRadius:G,innerCornerRadius:Math.max(G-Math.max(H.left,H.top),0),compositeImage:z,slice:B,buttons:M,allowedImages:N}}function L7($){let Q=a($.topLeft),Z=a($.top),J=a($.topRight),Y=a($.right),X=a($.bottomRight),G=a($.bottom),H=a($.bottomLeft),V=a($.left);if(!Q||!Z||!J||!Y||!X||!G||!H||!V)return null;return{topLeft:Q,top:Z,topRight:J,right:Y,bottomRight:X,bottom:G,bottomLeft:H,left:V}}function U7($){let Q=a($.name),Z=a($.image);if(!Q||!Z)return null;let J=a($.anchor),Y=a($.align),X=$0($.offsets),G=Q6($0(X.normal)),H=Q6($0(X.rollover));return{name:Q,image:Z,imageDown:a($.imageDown),onTop:$.onTop===!0,anchor:J==="right"||J==="top"||J==="bottom"?J:"left",align:Y==="trailing"?"trailing":"leading",normalOffset:G??H??{x:0,y:0},rolloverOffset:H??G??{x:0,y:0},usagePage:z0($.usagePage),usage:z0($.usage)}}function O7($,Q,Z,J){let{left:Y,top:X}=J,G=2*$.normalOffset.x-$.rolloverOffset.x,H=2*$.normalOffset.y-$.rolloverOffset.y,V=$.align==="trailing"?Y+Z.width+G-Q.width:Y+G;switch($.anchor){case"left":return{x:Y+$.rolloverOffset.x-Q.width/2,y:X+$.rolloverOffset.y};case"right":return{x:Y+Z.width+G,y:X+H};case"top":return{x:V,y:X+H-Q.height};case"bottom":return{x:V,y:X+Z.height+H}}}function A7($){if(!$)return null;if(!J8)J8=j7();return J8.get($)??null}function j7(){let $=new Map;try{for(let Q of Y7(H8)){if(!Q.endsWith(".simdevicetype"))continue;let Z=i(H8,Q),J=L4(i(Z,"Contents","Info.plist")),Y=typeof J?.CFBundleIdentifier==="string"?J.CFBundleIdentifier:null,X=typeof J?.CFBundleName==="string"?J.CFBundleName:K6(Q,".simdevicetype");if(Y)$.set(Y,X)}}catch{}return $}function L4($){try{let Q=B4("plutil",["-convert","json","-o","-",$],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:2000});return JSON.parse(Q)}catch{return null}}function R7($){let Q=z0($.mainScreenWidth),Z=z0($.mainScreenHeight),J=z0($.mainScreenScale);if(!Q||!Z||!J||J<=0)return null;return{width:Q/J,height:Z/J}}function C7($){if($.startsWith("phone"))return 3;if($.startsWith("tablet"))return 2;if($.startsWith("watch"))return 2;return 1}function W8($,Q){let Z=N8($,Q);if(!t(Z))return null;return M8(G0(Z))}function N8($,Q){return i(V6,`${$}.devicechrome`,"Contents","Resources",`${Q}.pdf`)}function U6($,Q,Z){J6(s9,{recursive:!0});let J=X6(Z),Y=Z6("sha1").update($).update("\x00").update(Q).update("\x00").update(String(J.mtimeMs)).update("\x00").update(String(J.size)).digest("hex"),X=i(s9,`${$}-${Y}.png`);if(t(X))return X;let G=`${X}.${process.pid}.tmp`;return B4("sips",["-s","format","png",Z,"--out",G],{stdio:["ignore","ignore","ignore"],timeout:1e4}),Y6(G,X),X}function D7($,Q){J6(e9,{recursive:!0});let Z=X6(Q),J=Z6("sha1").update($).update("\x00").update(Q).update("\x00").update(String(Z.mtimeMs)).update("\x00").update(String(Z.size)).digest("hex"),Y=i(e9,`${$}-${J}.png`);if(t(Y)){let H=U4(G0(Y));return{sourcePath:Q,pngPath:Y,width:H.width,height:H.height}}let X=`${Y}.${process.pid}.tmp`,G=`${Y}.${process.pid}.raw.png`;try{B4("sips",["-s","format","png",Q,"--out",G],{stdio:["ignore","ignore","ignore"],timeout:1e4});let H=G0(G),V=P7(H)??{x:0,y:0,...U4(H)};return B4("sips",["-c",String(V.height),String(V.width),"--cropOffset",String(V.y),String(V.x),"-s","format","png",Q,"--out",X],{stdio:["ignore","ignore","ignore"],timeout:1e4}),Y6(X,Y),{sourcePath:Q,pngPath:Y,width:V.width,height:V.height}}finally{try{if(t(G))r9(G)}catch{}try{if(t(X))r9(X)}catch{}}}function U4($){if($.byteLength<24||$[0]!==137||$.toString("ascii",1,4)!=="PNG")throw Error("Invalid PNG placeholder asset");return{width:$.readUInt32BE(16),height:$.readUInt32BE(20)}}function O6($,Q){let{width:Z,height:J}=U4($),Y=8,X=0,G=0,H=[];while(Y<$.byteLength){let R=$.readUInt32BE(Y);Y+=4;let x=$.toString("ascii",Y,Y+4);Y+=4;let A=$.subarray(Y,Y+R);if(Y+=R+4,x==="IHDR")X=A[8]??0,G=A[9]??0;else if(x==="IDAT")H.push(A);else if(x==="IEND")break}let V=G===6?4:G===4?2:0;if(X!==8||V===0||H.length===0)return null;let W=G===6,z=X7(Buffer.concat(H)),B=Z*V,M=new Uint8Array(Z*J),N=Buffer.alloc(B),j=0;for(let R=0;R<J;R++){let x=z[j++]??0,A=Buffer.from(z.subarray(j,j+B));j+=B,x7(A,N,V,x);for(let D=0;D<Z;D++){let U=D*V,C=A[U]??0,E=W?A[U+1]??0:C,F=W?A[U+2]??0:C,K=A[U+V-1]??0;if(Q(C,E,F,K))M[R*Z+D]=1}N=A}return{width:Z,height:J,mask:M}}function P7($){let{width:Q,height:Z}=U4($),J=O6($,(V,W,z,B)=>B>0);if(!J)return{x:0,y:0,width:Q,height:Z};let Y=Q,X=Z,G=-1,H=-1;for(let V=0;V<Z;V++)for(let W=0;W<Q;W++){if(!J.mask[V*Q+W])continue;if(W<Y)Y=W;if(V<X)X=V;if(W>G)G=W;if(V>H)H=V}if(G<Y||H<X)return{x:0,y:0,width:Q,height:Z};return{x:Y,y:X,width:G-Y+1,height:H-X+1}}function T7($,Q){if(Q.width<=0)return null;let Z=Math.max(1,Math.round($.width/Q.width));return{width:$.width/Z,height:$.height/Z}}function E7($,Q){let Z=I7($,Q);if(!Z)return null;let J=O6(Z,(D,U,C,E)=>E>200&&D<30&&U<30&&C<30);if(!J)return null;let{width:Y,height:X,mask:G}=J,H=Math.floor(Y/2),V=Math.floor(X/2),W=(D,U)=>D>=0&&U>=0&&D<Y&&U<X&&G[U*Y+D]===1;if(!W(H,V))return null;let z=H;while(z>0&&W(z-1,V))z--;let B=H;while(B<Y-1&&W(B+1,V))B++;let M=V;while(M>0&&W(H,M-1))M--;let N=V;while(N<X-1&&W(H,N+1))N++;let j=N-M,R=(D,U)=>{let C=0;while(C<j&&!W(D,U?M+C:N-C))C++;return C},x=[R(z,!0),R(B,!0),R(z,!1),R(B,!1)],A=x.reduce((D,U)=>D+U,0)/x.length;return{x:z,y:M,width:B-z+1,height:N-M+1,radius:A}}function I7($,Q){let Z=N8($,Q);if(!t(Z))return null;try{return G0(U6($,Q,Z))}catch{return null}}function x7($,Q,Z,J){for(let Y=0;Y<$.byteLength;Y++){let X=Y>=Z?$[Y-Z]:0,G=Q[Y]??0,H=Y>=Z?Q[Y-Z]:0;switch(J){case 0:break;case 1:$[Y]=$[Y]+X&255;break;case 2:$[Y]=$[Y]+G&255;break;case 3:$[Y]=$[Y]+Math.floor((X+G)/2)&255;break;case 4:$[Y]=$[Y]+q7(X,G,H)&255;break;default:throw Error(`Unsupported PNG filter ${J}`)}}}function q7($,Q,Z){let J=$+Q-Z,Y=Math.abs(J-$),X=Math.abs(J-Q),G=Math.abs(J-Z);if(Y<=X&&Y<=G)return $;return X<=G?Q:Z}function k0($,Q,Z){$.writeHead(Q,{"Content-Type":"application/json","Cache-Control":"no-store"}),$.end(JSON.stringify({ok:!1,error:Z}))}function X0($){return z0($)??0}function z0($){if(typeof $==="number"&&Number.isFinite($))return $;if(typeof $==="string"&&$.trim()){let Q=Number($);return Number.isFinite(Q)?Q:null}return null}function a($){return typeof $==="string"&&$?$:null}function $0($){return $&&typeof $==="object"&&!Array.isArray($)?$:{}}function Q6($){let Q=z0($.x),Z=z0($.y);return Q===null||Z===null?null:{x:Q,y:Z}}import{exec as w7}from"child_process";import{createHash as R6,timingSafeEqual as S7}from"crypto";function A6($){let Q=new TextDecoder;if(typeof $==="string")return $;if($ instanceof ArrayBuffer)return Q.decode(new Uint8Array($));if(ArrayBuffer.isView($))return Q.decode(new Uint8Array($.buffer,$.byteOffset,$.byteLength));return String($)}function j6($){return $.headers.get("host")??new URL($.url).host}var y7=1e4;function k7($,Q){let Z=R6("sha256").update($).digest(),J=R6("sha256").update(Q).digest();return S7(Z,J)}function f7($,Q,Z){let J=!1,Y=new Map,X=Z.ssePrefixes??[],G=(W)=>{if($.readyState===$.OPEN)$.send(JSON.stringify(W))},H=setTimeout(()=>{if(!J)$.close()},y7);H.unref?.();let V=(W,z)=>{if(Y.has(W))return;let B=z.split("?")[0];if(!z.startsWith("/")||!X.some((A)=>B===A)){G({sub:W,end:!0,error:"path not allowed"});return}if(!Z.onSseRequest){G({sub:W,end:!0,error:"sse requests not supported"});return}let M=!0,N=!1,j=null,R=(A)=>{if(N)return;N=!0,G(A?{sub:W,end:!0,error:A}:{sub:W,end:!0})},x={destroy(){M=!1,j?.cancel().catch(()=>{})}};Y.set(W,x),(async()=>{try{let A=await Z.onSseRequest(z,Q);if(!M)return;if(!A?.body){R();return}let D=new TextDecoder;j=A.body.getReader();while(M){let{done:U,value:C}=await j.read();if(U)break;G({sub:W,data:D.decode(C,{stream:!0})})}if(M){let U=D.decode();if(U)G({sub:W,data:U})}}catch{if(M)R();return}finally{if(M=!1,j)try{j.releaseLock()}catch{}if(Y.get(W)===x)Y.delete(W),R()}})()};$.on("message",(W)=>{let z;try{z=JSON.parse(A6(W))}catch{return}if(!J){if(typeof z.token==="string"&&k7(z.token,Z.execToken))J=!0,clearTimeout(H),G({ready:!0});else $.close();return}if(typeof z.unsub==="number"){Y.get(z.unsub)?.destroy(),Y.delete(z.unsub);return}if(typeof z.sub==="number"&&typeof z.path==="string"){V(z.sub,z.path);return}if(typeof z.id==="number"&&z.ui!==void 0){let{id:N}=z;if(!Z.onUiRequest){G({id:N,error:"ui requests not supported"});return}Z.onUiRequest(z.ui).then((j)=>G({id:N,...j})).catch((j)=>G({id:N,error:j instanceof Error?j.message:String(j)}));return}if(typeof z.id!=="number"||typeof z.command!=="string"||!z.command)return;let{id:B,command:M}=z;w7(M,{maxBuffer:16777216},(N,j,R)=>{let x={id:B,stdout:j.toString(),stderr:R.toString(),exitCode:N?N.code??1:0};try{Z.onCommandResult?.(M,x)}catch{}G(x)})}),$.on("error",()=>$.close()),$.on("close",()=>{clearTimeout(H);for(let W of Y.values())W.destroy();Y.clear()})}function C6($){return function(Z,J){let Y=new URL(Z.url);if(Y.pathname!==$.path&&Y.pathname!==`${$.path}/`)return!1;let X=Z.headers.get("origin");if(X)try{if(new URL(X).host!==j6(Z))return J.close(),!0}catch{return J.close(),!0}return f7(J,Z,$),!0}}import{execFile as h7}from"child_process";import{existsSync as T6}from"fs";import{join as _8,resolve as u7}from"path";import{fileURLToPath as v7}from"url";import{dirname as b7}from"path";import{WebSocketServer as fJ}from"ws";function D6($){return b7(v7($))}var B8=D6(import.meta.url),E6=["extra-small","small","medium","large","extra-large","extra-extra-large","extra-extra-extra-large","accessibility-medium","accessibility-large","accessibility-extra-large","accessibility-extra-extra-large","accessibility-extra-extra-extra-large"],g7=["none","grayscale","red-green","green-red","blue-yellow"],p7={protanopia:"red-green",deuteranopia:"green-red",tritanopia:"blue-yellow"},a0=["on","off"],c7=new Set(["on","true","enabled","1","yes"]),l7=new Set(["off","false","disabled","0","no"]),L0={appearance:{via:"appearance",values:["light","dark"]},"liquid-glass":{via:"ax",values:["clear","tinted"]},"color-filter":{via:"ax",values:g7,aliases:p7},"text-size":{via:"content_size",values:E6,extraValues:["increment","decrement"]},"reduce-motion":{via:"ax",values:a0,toggle:!0},"increase-contrast":{via:"increase_contrast",values:a0,toggle:!0},"show-borders":{via:"ax",values:a0,toggle:!0},"reduce-transparency":{via:"ax",values:a0,toggle:!0},voiceover:{via:"ax",values:a0,toggle:!0}};function I6($,Q){let Z=L0[$];if(!Z)return null;let J=Q.toLowerCase();if(Z.toggle){if(c7.has(J))return"on";if(l7.has(J))return"off";return null}let Y=Z.aliases?.[J]??J;if(Z.values.includes(Y))return Y;if(Z.extraValues?.includes(Y))return Y;return null}function P6(){let $=[_8(B8,"..","dist","simax","serve-sim-ax-settings"),_8(B8,"simax","serve-sim-ax-settings")];for(let Q of $)if(T6(Q))return u7(Q);return null}var A4=null;function m7(){return A4??=(async()=>{let $=P6();if($)return $;let Q=_8(B8,"..","Sources","SimAXSettings","build.sh");if(!T6(Q))throw Error("sim-ax-settings binary not found — this build of serve-sim does not "+"include the simulator settings helper. Reinstall from a recent release.");console.error("[serve-sim] building sim-ax-settings (one-time)…"),await L8("bash",[Q]);let Z=P6();if(!Z)throw Error("Build succeeded but sim-ax-settings not found.");return Z})(),A4.catch(()=>{A4=null}),A4}function L8($,Q){return new Promise((Z,J)=>{h7($,Q,{encoding:"utf-8",maxBuffer:4194304},(Y,X,G)=>{if(Y)J(Error(String(G).trim()||Y.message));else Z(String(X).trim())})})}function x6($,Q,Z){let J=["simctl","ui",$,Q];if(Z!==void 0)J.push(Z);return L8("xcrun",J)}async function U8($,...Q){let Z=await m7();return L8("xcrun",["simctl","spawn",$,Z,...Q])}function d7($){return $==="enabled"?"on":"off"}function i7($){return $==="on"?"enabled":"disabled"}async function n7($,Q){let Z=L0[Q];if(!Z)throw Error(`unknown option: ${Q}`);if(Z.via==="ax")return U8($,"get",Q);let J=(await x6($,Z.via)).toLowerCase();return Z.toggle?d7(J):J}async function q6($,Q,Z){let J=L0[Q];if(!J)throw Error(`unknown option: ${Q}`);if(J.via==="ax"){await U8($,"set",Q,Z);return}await x6($,J.via,J.toggle?i7(Z):Z)}async function w6($){let Q=Object.entries(L0).filter(([,X])=>X.via!=="ax"),[Z,...J]=await Promise.all([U8($,"status").then((X)=>JSON.parse(X)).catch(()=>({})),...Q.map(([X])=>n7($,X).catch(()=>"unsupported"))]),Y={};for(let[X,G]of Object.entries(L0))if(G.via==="ax")Y[X]=Z[X]??"unsupported";return Q.forEach(([X],G)=>{Y[X]=J[G]}),Y}var iJ=`Usage: serve-sim ui [status] [--json] [-d udid]
55
55
  serve-sim ui <option> [-d udid] Print the current value
56
56
  serve-sim ui <option> <value> [-d udid] Change the value
57
57
 
@@ -66,14 +66,14 @@ Simulator-wide UI options:
66
66
  increase-contrast on | off
67
67
  show-borders on | off
68
68
  reduce-transparency on | off
69
- voiceover on | off`;import{EventEmitter as S6}from"events";function o7($){let Q={};if($.headers.forEach((Z,J)=>{Q[J.toLowerCase()]=Z}),!Q.host)Q.host=new URL($.url).host;return Q}function y6($,Q){let Z=new URL(Q.url),J=new S6,Y=new S6,X=new AbortController,G=null,H=!1,V=(I=!1)=>{if(H)return;if(H=!0,X.abort(),G?.cancel().catch(()=>{}),Q.signal.removeEventListener("abort",W),I)J.emit("aborted");J.emit("close")},W=()=>V(!0),z=Q.signal.aborted;Q.signal.addEventListener("abort",W,{once:!0});let B=Object.assign(J,{method:Q.method,url:`${Z.pathname}${Z.search}`,headers:o7(Q),socket:{localPort:Number(Z.port)||void 0},destroy(){V()}}),M=200,N=new Headers,j=!1,R=!1,x=!1,A=!1,D=!1,U=!1,C=null,E,F,K=!1,_=new TextEncoder,L=()=>{if(D)return;D=!0,Y.emit("close")},P=new ReadableStream({start(I){C=I},cancel(){A=!0,V(),L()},pull(){if(!U)return;U=!1,Y.emit("drain")}}),T=(I)=>{if(K)return;K=!0,E(I)},q=()=>M!==101&&M!==204&&M!==205&&M!==304,S=()=>{if(j)return;j=!0,T(new Response(q()?P:null,{status:M,headers:N}))},y=(I)=>{if(S(),!q()||!C||R)return!0;let u=typeof I==="string"?_.encode(I):new Uint8Array(I);try{C.enqueue(u)}catch{return!1}return U=(C.desiredSize??0)<=0,!U},k={get headersSent(){return j},get writableEnded(){return R},get writableFinished(){return x},get destroyed(){return A},get writableNeedDrain(){return U},get statusCode(){return M},set statusCode(I){M=I},writeHead(I,u){if(M=I,u){N=new Headers;for(let[d,Z0]of Object.entries(u))if(Array.isArray(Z0))for(let C0 of Z0)N.append(d,C0);else N.set(d,String(Z0))}S()},write(I,u,d){let Z0=y(I);return(typeof u==="function"?u:d)?.(),Z0},end(I){if(I!==void 0)y(I);S(),R=!0,x=!0;try{C?.close()}catch{}Y.emit("finish"),L(),V()},destroy(I){if(A)return k;S(),A=!0,R=!0;try{C?.error(I??Error("Response destroyed"))}catch{}if(I&&Y.listenerCount("error")>0)Y.emit("error",I);return L(),V(),k},on(I,u){return Y.on(I,u),k},once(I,u){return Y.once(I,u),k},off(I,u){return Y.off(I,u),k}},h=new Promise((I,u)=>{E=I,F=u}),c;try{c=Promise.resolve($(B,k,()=>T(void 0)))}catch(I){c=Promise.reject(I)}if(z)W();return c.then(()=>{if(!K&&R)T(new Response(null,{status:M,headers:N}))},(I)=>{if(K)k.destroy(I instanceof Error?I:void 0);else F(I)}),(async()=>{let I=null;try{if(I=Q.body?.getReader()??null,G=I,I)while(!X.signal.aborted){let{done:u,value:d}=await I.read();if(u)break;J.emit("data",Buffer.from(d))}if(!X.signal.aborted)J.emit("end")}catch{V(!0)}finally{if(G===I)G=null;if(I){if(X.signal.aborted)await I.cancel().catch(()=>{});try{I.releaseLock()}catch{}}}})(),h}var p8=c8(f2(),"serve-sim"),F$,g2="854a02be78c7ffea104cb523636efa991bef5c5b",P4=9222,N$=z9(),D$=A9(),p2=1048576,A0=null;function _$($){let Q=new URL($,"http://x").searchParams.get("limit");if(!Q)return;let Z=Number(Q);return Number.isFinite(Z)?Z:void 0}function B$($){let Q=new URL($,"http://x").searchParams.get("since");if(!Q)return;let Z=Number(Q);return Number.isFinite(Z)?Z:void 0}function L$($,Q){try{let Z=T9($,Q);if(Z)K0(Z)}catch{}}var c2=new Set(["host.exp.Exponent","dev.expo.Exponent"]),l2=["Frameworks/React.framework","Frameworks/hermes.framework","Frameworks/Hermes.framework","Frameworks/ExpoModulesCore.framework","main.jsbundle"];function P$($){return/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test($)}function m2($,Q,Z){if(Q&&P$($.device)&&!Q.has($.device))return $.pid===Z?"recycle-self":"recycle-helper";return"keep"}function d2($,Q){if(c2.has(Q))return Promise.resolve(!0);return new Promise((Z)=>{R0("xcrun",["simctl","get_app_container",$,Q,"app"],{timeout:2000},(J,Y)=>{if(J)return Z(!1);let X=Y.trim();if(!X)return Z(!1);for(let G of l2)if(C$(c8(X,G)))return Z(!0);Z(!1)})})}function U$($){return $.trim().replace(/\s+/g," ").toLowerCase()}function D3($,Q){let Z=U$(Q);if(!Z)return null;for(let[J,Y]of Object.entries($))if([Y.CFBundleDisplayName,Y.CFBundleName,Y.CFBundleExecutable].filter((G)=>typeof G==="string").some((G)=>U$(G)===Z))return Y.CFBundleIdentifier||J;return null}var $4={at:0,booted:null};async function i2(){let $=Date.now();if($4.booted&&$-$4.at<1500)return $4.booted;try{let Q=await new Promise((Y,X)=>{R0("xcrun",["simctl","list","devices","booted","-j"],{encoding:"utf-8",timeout:3000},(G,H)=>{if(G)X(G);else Y(H)})}),Z=JSON.parse(Q),J=new Set;for(let Y of Object.values(Z.devices))for(let X of Y)if(X.state==="Booted")J.add(X.udid);return $4={at:$,booted:J},J}catch{return null}}var b8={at:0,udid:null};function n2(){let $=Date.now();if($-b8.at<1500)return b8.udid;let Q=null;try{Q=Q4("defaults read com.apple.iphonesimulator CurrentDeviceUDID",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()||null}catch{Q=null}return b8={at:$,udid:Q},Q}async function G0(){let $;try{$=q2(p8).filter((J)=>J.startsWith("server-")&&J.endsWith(".json"))}catch{return[]}let Q=await i2(),Z=[];for(let J of $){let Y=c8(p8,J);try{let X=JSON.parse(w2(Y,"utf-8"));try{process.kill(X.pid,0)}catch{o0("helper pid=%d gone, removing %s",X.pid,Y);try{H$(Y)}catch{}continue}let G=m2(X,Q,process.pid);if(G!=="keep"){if(G==="recycle-self")o0("closing in-process session for shut-down device %s (own pid %d)",X.device,X.pid),$8(X.device);else{o0("recycling stale helper pid=%d (device %s no longer booted)",X.pid,X.device);try{process.kill(X.pid,"SIGTERM")}catch{}}try{H$(Y)}catch{}continue}Z.push(X)}catch{}}return Z}function M0($,Q){if(Q)return $.find((Z)=>Z.device===Q)??null;return $[0]??null}function O$($){let Q=$.indexOf("?");if(Q===-1)return null;return new URLSearchParams($.slice(Q+1)).get("device")}function o2($){let Q=$.indexOf("?");if(Q===-1)return{limit:null,offset:0};let Z=new URLSearchParams($.slice(Q+1)),J=Z.get("limit"),Y=Z.get("offset"),X=J==null||!/^\d+$/.test(J)?null:Math.min(Math.max(Number(J),1),1000),G=Y==null||!/^\d+$/.test(Y)?0:Math.max(Number(Y),0);return{limit:X,offset:G}}function e0($){let Q=$.headers?.host;if(Q)return Q;let Z=$.socket.localPort;return Z?`localhost:${Z}`:void 0}function j0($,Q,Z){return`${`${$}${Q}`}?device=${encodeURIComponent(Z)}`}function a2($){let Q=new URL($);return Q.pathname=`${Q.pathname.slice(0,Q.pathname.lastIndexOf("/")+1)}stream-settings`,Q.search="",Q.hash="",Q.toString()}function T4($,Q,Z="",J="http",Y=!1){if(!Q)return $;if(!Y){let z;try{z=new URL(`http://${Q}`).hostname}catch{return $}if(z==="localhost"||z==="127.0.0.1"||z==="[::1]")return $;let B=(M)=>M.replace("127.0.0.1",z);return{...$,url:B($.url),streamUrl:B($.streamUrl),wsUrl:B($.wsUrl)}}let H=`${`${Z==="/"?"":Z.replace(/\/+$/,"")}/helper`}/${encodeURIComponent($.device)}`,V=`${J}://${Q}`,W=`${J==="https"?"wss":"ws"}://${Q}`;return{...$,url:`${V}${H}`,streamUrl:`${V}${H}/stream.mjpeg`,wsUrl:`${W}${H}/ws`}}function r2($){return`${$==="/"?"":$}/helper`}function t2($){return`${$==="/"?"":$}/devtools`}function s2($,Q){let Z=new URL($,"http://serve-sim.local");if(!Z.pathname.startsWith(`${Q}/page/`))return null;return{upstreamPath:`/devtools${Z.pathname.slice(Q.length)}${Z.search}`}}function A$($,Q){let Z=new URL($,"http://serve-sim.local");if(Z.pathname!==Q&&!Z.pathname.startsWith(`${Q}/`))return null;let Y=Z.pathname.slice(Q.length).replace(/^\/+/,"").split("/").filter(Boolean),X=new Set(["ax","config","foreground","health","stream.avcc","stream.mjpeg","webrtc","ws"]),G=Z.searchParams.get("device"),H=Y;if(Y[0]&&!X.has(Y[0]))G=decodeURIComponent(Y[0]),H=Y.slice(1);let V=H.length>0?`/${H.join("/")}`:"/";return Z.searchParams.delete("device"),{device:G,upstreamPath:`${V}${Z.search}`}}var e2="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";function l8($,Q){let Z=Q.length,J;if(Z<126)J=Buffer.from([128|$,Z]);else if(Z<=65535)J=Buffer.alloc(4),J[0]=128|$,J[1]=126,J.writeUInt16BE(Z,2);else J=Buffer.alloc(10),J[0]=128|$,J[1]=127,J.writeBigUInt64BE(BigInt(Z),2);return Buffer.concat([J,Q])}function T$($){if($.length<2)return null;let Q=$[0]&15,Z=($[1]&128)!==0,J=$[1]&127,Y=2;if(J===126){if($.length<Y+2)return null;J=$.readUInt16BE(Y),Y+=2}else if(J===127){if($.length<Y+8)return null;let H=$.readBigUInt64BE(Y);if(H>BigInt(Number.MAX_SAFE_INTEGER))throw Error("WebSocket frame too large");J=Number(H),Y+=8}let X=Y;if(Z)Y+=4;if($.length<Y+J)return null;let G=Buffer.from($.subarray(Y,Y+J));if(Z){let H=$.subarray(X,X+4);for(let V=0;V<G.length;V++)G[V]=G[V]^H[V%4]}return{opcode:Q,payload:G,consumed:Y+J}}function Z4($,Q,Z=Buffer.alloc(0)){if($.destroyed||!$.writable)return;$.write(l8(Q,Z))}function j$($){let Q=new Uint8Array($.length);return Q.set($),Q}function E$($,Q){let Z=$.headers["sec-websocket-key"];if(typeof Z!=="string")return Q.end(`HTTP/1.1 400 Bad Request\r
69
+ voiceover on | off`;import{EventEmitter as S6}from"events";function o7($){let Q={};if($.headers.forEach((Z,J)=>{Q[J.toLowerCase()]=Z}),!Q.host)Q.host=new URL($.url).host;return Q}function y6($,Q){let Z=new URL(Q.url),J=new S6,Y=new S6,X=new AbortController,G=null,H=!1,V=(I=!1)=>{if(H)return;if(H=!0,X.abort(),G?.cancel().catch(()=>{}),Q.signal.removeEventListener("abort",W),I)J.emit("aborted");J.emit("close")},W=()=>V(!0),z=Q.signal.aborted;Q.signal.addEventListener("abort",W,{once:!0});let B=Object.assign(J,{method:Q.method,url:`${Z.pathname}${Z.search}`,headers:o7(Q),socket:{localPort:Number(Z.port)||void 0},destroy(){V()}}),M=200,N=new Headers,j=!1,R=!1,x=!1,A=!1,D=!1,U=!1,C=null,E,F,K=!1,_=new TextEncoder,L=()=>{if(D)return;D=!0,Y.emit("close")},P=new ReadableStream({start(I){C=I},cancel(){A=!0,V(),L()},pull(){if(!U)return;U=!1,Y.emit("drain")}}),T=(I)=>{if(K)return;K=!0,E(I)},q=()=>M!==101&&M!==204&&M!==205&&M!==304,S=()=>{if(j)return;j=!0,T(new Response(q()?P:null,{status:M,headers:N}))},y=(I)=>{if(S(),!q()||!C||R)return!0;let u=typeof I==="string"?_.encode(I):new Uint8Array(I);try{C.enqueue(u)}catch{return!1}return U=(C.desiredSize??0)<=0,!U},k={get headersSent(){return j},get writableEnded(){return R},get writableFinished(){return x},get destroyed(){return A},get writableNeedDrain(){return U},get statusCode(){return M},set statusCode(I){M=I},writeHead(I,u){if(M=I,u){N=new Headers;for(let[d,Z0]of Object.entries(u))if(Array.isArray(Z0))for(let C0 of Z0)N.append(d,C0);else N.set(d,String(Z0))}S()},write(I,u,d){let Z0=y(I);return(typeof u==="function"?u:d)?.(),Z0},end(I){if(I!==void 0)y(I);S(),R=!0,x=!0;try{C?.close()}catch{}Y.emit("finish"),L(),V()},destroy(I){if(A)return k;S(),A=!0,R=!0;try{C?.error(I??Error("Response destroyed"))}catch{}if(I&&Y.listenerCount("error")>0)Y.emit("error",I);return L(),V(),k},on(I,u){return Y.on(I,u),k},once(I,u){return Y.once(I,u),k},off(I,u){return Y.off(I,u),k}},h=new Promise((I,u)=>{E=I,F=u}),c;try{c=Promise.resolve($(B,k,()=>T(void 0)))}catch(I){c=Promise.reject(I)}if(z)W();return c.then(()=>{if(!K&&R)T(new Response(null,{status:M,headers:N}))},(I)=>{if(K)k.destroy(I instanceof Error?I:void 0);else F(I)}),(async()=>{let I=null;try{if(I=Q.body?.getReader()??null,G=I,I)while(!X.signal.aborted){let{done:u,value:d}=await I.read();if(u)break;J.emit("data",Buffer.from(d))}if(!X.signal.aborted)J.emit("end")}catch{V(!0)}finally{if(G===I)G=null;if(I){if(X.signal.aborted)await I.cancel().catch(()=>{});try{I.releaseLock()}catch{}}}})(),h}var p8=c8(f2(),"serve-sim"),F$,g2="854a02be78c7ffea104cb523636efa991bef5c5b",T4=9222,N$=z9(),D$=A9(),p2=1048576,A0=null;function _$($){let Q=new URL($,"http://x").searchParams.get("limit");if(!Q)return;let Z=Number(Q);return Number.isFinite(Z)?Z:void 0}function B$($){let Q=new URL($,"http://x").searchParams.get("since");if(!Q)return;let Z=Number(Q);return Number.isFinite(Z)?Z:void 0}function L$($,Q){try{let Z=T9($,Q);if(Z)V0(Z)}catch{}}var c2=new Set(["host.exp.Exponent","dev.expo.Exponent"]),l2=["Frameworks/React.framework","Frameworks/hermes.framework","Frameworks/Hermes.framework","Frameworks/ExpoModulesCore.framework","main.jsbundle"];function P$($){return/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test($)}function m2($,Q,Z){if(Q&&P$($.device)&&!Q.has($.device))return $.pid===Z?"recycle-self":"recycle-helper";return"keep"}function d2($,Q){if(c2.has(Q))return Promise.resolve(!0);return new Promise((Z)=>{R0("xcrun",["simctl","get_app_container",$,Q,"app"],{timeout:2000},(J,Y)=>{if(J)return Z(!1);let X=Y.trim();if(!X)return Z(!1);for(let G of l2)if(C$(c8(X,G)))return Z(!0);Z(!1)})})}function U$($){return $.trim().replace(/\s+/g," ").toLowerCase()}function D3($,Q){let Z=U$(Q);if(!Z)return null;for(let[J,Y]of Object.entries($))if([Y.CFBundleDisplayName,Y.CFBundleName,Y.CFBundleExecutable].filter((G)=>typeof G==="string").some((G)=>U$(G)===Z))return Y.CFBundleIdentifier||J;return null}var $4={at:0,booted:null};async function i2(){let $=Date.now();if($4.booted&&$-$4.at<1500)return $4.booted;try{let Q=await new Promise((Y,X)=>{R0("xcrun",["simctl","list","devices","booted","-j"],{encoding:"utf-8",timeout:3000},(G,H)=>{if(G)X(G);else Y(H)})}),Z=JSON.parse(Q),J=new Set;for(let Y of Object.values(Z.devices))for(let X of Y)if(X.state==="Booted")J.add(X.udid);return $4={at:$,booted:J},J}catch{return null}}var b8={at:0,udid:null};function n2(){let $=Date.now();if($-b8.at<1500)return b8.udid;let Q=null;try{Q=Q4("defaults read com.apple.iphonesimulator CurrentDeviceUDID",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()||null}catch{Q=null}return b8={at:$,udid:Q},Q}async function J0(){let $;try{$=q2(p8).filter((J)=>J.startsWith("server-")&&J.endsWith(".json"))}catch{return[]}let Q=await i2(),Z=[];for(let J of $){let Y=c8(p8,J);try{let X=JSON.parse(w2(Y,"utf-8"));try{process.kill(X.pid,0)}catch{o0("helper pid=%d gone, removing %s",X.pid,Y);try{H$(Y)}catch{}continue}let G=m2(X,Q,process.pid);if(G!=="keep"){if(G==="recycle-self")o0("closing in-process session for shut-down device %s (own pid %d)",X.device,X.pid),$8(X.device);else{o0("recycling stale helper pid=%d (device %s no longer booted)",X.pid,X.device);try{process.kill(X.pid,"SIGTERM")}catch{}}try{H$(Y)}catch{}continue}Z.push(X)}catch{}}return Z}function K0($,Q){if(Q)return $.find((Z)=>Z.device===Q)??null;return $[0]??null}function O$($){let Q=$.indexOf("?");if(Q===-1)return null;return new URLSearchParams($.slice(Q+1)).get("device")}function o2($){let Q=$.indexOf("?");if(Q===-1)return{limit:null,offset:0};let Z=new URLSearchParams($.slice(Q+1)),J=Z.get("limit"),Y=Z.get("offset"),X=J==null||!/^\d+$/.test(J)?null:Math.min(Math.max(Number(J),1),1000),G=Y==null||!/^\d+$/.test(Y)?0:Math.max(Number(Y),0);return{limit:X,offset:G}}function e0($){let Q=$.headers?.host;if(Q)return Q;let Z=$.socket.localPort;return Z?`localhost:${Z}`:void 0}function j0($,Q,Z){return`${`${$}${Q}`}?device=${encodeURIComponent(Z)}`}function a2($){let Q=new URL($);return Q.pathname=`${Q.pathname.slice(0,Q.pathname.lastIndexOf("/")+1)}stream-settings`,Q.search="",Q.hash="",Q.toString()}function E4($,Q,Z="",J="http",Y=!1){if(!Q)return $;if(!Y){let z;try{z=new URL(`http://${Q}`).hostname}catch{return $}if(z==="localhost"||z==="127.0.0.1"||z==="[::1]")return $;let B=(M)=>M.replace("127.0.0.1",z);return{...$,url:B($.url),streamUrl:B($.streamUrl),wsUrl:B($.wsUrl)}}let H=`${`${Z==="/"?"":Z.replace(/\/+$/,"")}/helper`}/${encodeURIComponent($.device)}`,V=`${J}://${Q}`,W=`${J==="https"?"wss":"ws"}://${Q}`;return{...$,url:`${V}${H}`,streamUrl:`${V}${H}/stream.mjpeg`,wsUrl:`${W}${H}/ws`}}function r2($){return`${$==="/"?"":$}/helper`}function t2($){return`${$==="/"?"":$}/devtools`}function s2($,Q){let Z=new URL($,"http://serve-sim.local");if(!Z.pathname.startsWith(`${Q}/page/`))return null;return{upstreamPath:`/devtools${Z.pathname.slice(Q.length)}${Z.search}`}}function A$($,Q){let Z=new URL($,"http://serve-sim.local");if(Z.pathname!==Q&&!Z.pathname.startsWith(`${Q}/`))return null;let Y=Z.pathname.slice(Q.length).replace(/^\/+/,"").split("/").filter(Boolean),X=new Set(["ax","config","foreground","health","stream.avcc","stream.mjpeg","webrtc","ws"]),G=Z.searchParams.get("device"),H=Y;if(Y[0]&&!X.has(Y[0]))G=decodeURIComponent(Y[0]),H=Y.slice(1);let V=H.length>0?`/${H.join("/")}`:"/";return Z.searchParams.delete("device"),{device:G,upstreamPath:`${V}${Z.search}`}}var e2="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";function l8($,Q){let Z=Q.length,J;if(Z<126)J=Buffer.from([128|$,Z]);else if(Z<=65535)J=Buffer.alloc(4),J[0]=128|$,J[1]=126,J.writeUInt16BE(Z,2);else J=Buffer.alloc(10),J[0]=128|$,J[1]=127,J.writeBigUInt64BE(BigInt(Z),2);return Buffer.concat([J,Q])}function T$($){if($.length<2)return null;let Q=$[0]&15,Z=($[1]&128)!==0,J=$[1]&127,Y=2;if(J===126){if($.length<Y+2)return null;J=$.readUInt16BE(Y),Y+=2}else if(J===127){if($.length<Y+8)return null;let H=$.readBigUInt64BE(Y);if(H>BigInt(Number.MAX_SAFE_INTEGER))throw Error("WebSocket frame too large");J=Number(H),Y+=8}let X=Y;if(Z)Y+=4;if($.length<Y+J)return null;let G=Buffer.from($.subarray(Y,Y+J));if(Z){let H=$.subarray(X,X+4);for(let V=0;V<G.length;V++)G[V]=G[V]^H[V%4]}return{opcode:Q,payload:G,consumed:Y+J}}function Z4($,Q,Z=Buffer.alloc(0)){if($.destroyed||!$.writable)return;$.write(l8(Q,Z))}function j$($){let Q=new Uint8Array($.length);return Q.set($),Q}function E$($,Q){let Z=$.headers["sec-websocket-key"];if(typeof Z!=="string")return Q.end(`HTTP/1.1 400 Bad Request\r
70
70
  \r
71
71
  `),!1;let J=b2("sha1").update(Z+e2).digest("base64");return Q.write(`HTTP/1.1 101 Switching Protocols\r
72
72
  Upgrade: websocket\r
73
73
  Connection: Upgrade\r
74
74
  Sec-WebSocket-Accept: ${J}\r
75
75
  \r
76
- `),Q.resume(),!0}function $1($,Q,Z,J){if(!E$($,Q))return;let Y=new M$(J);Y.binaryType="arraybuffer";let X=!1,G=!1,H=[],V=Buffer.from(Z),W=()=>{if(G)return;G=!0;try{Y.close()}catch{}try{Q.end(l8(8,Buffer.alloc(0)))}catch{}try{Q.destroy()}catch{}},z=(M)=>{if(X&&Y.readyState===M$.OPEN){Y.send(M.opcode===1?M.payload.toString("utf8"):j$(M.payload));return}H.push({opcode:M.opcode,payload:Buffer.from(M.payload)})},B=()=>{try{while(V.length>0){let M=T$(V);if(!M)break;if(V=V.subarray(M.consumed),M.opcode===8){Z4(Q,8,M.payload),W();return}if(M.opcode===9){Z4(Q,10,M.payload);continue}if(M.opcode===1||M.opcode===2)z({opcode:M.opcode,payload:M.payload})}}catch{W()}};Y.onopen=()=>{X=!0;for(let M of H)Y.send(M.opcode===1?M.payload.toString("utf8"):j$(M.payload));H=[]},Y.onmessage=(M)=>{let N=M.data,j=typeof N==="string"?Buffer.from(N):Buffer.from(N);Z4(Q,typeof N==="string"?1:2,j)},Y.onerror=W,Y.onclose=W,Q.on("data",(M)=>{if(typeof M==="string")M=Buffer.from(M);V=Buffer.concat([V,M]),B()}),Q.on("error",W),Q.on("close",W),B()}async function Q1($,Q,Z){if(!P$(Z)){Q.writeHead(400,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify({error:"invalid_device"}));return}if($.method!=="GET"){Q.writeHead(405,{Allow:"GET","Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify({error:"method_not_allowed"}));return}try{let J=await L9(Z);Q.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify(J))}catch(J){Q.writeHead(500,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify({udid:Z,alive:!1,error:J instanceof Error?J.message:String(J)}))}}function Z1($,Q,Z,J,Y){if(!Z)return!1;let X=J.split("?")[0];if(X==="/camera/status")return Q1($,Q,Z),!0;if((X==="/webrtc/offer"||X==="/webrtc/close"||X==="/stream-settings")&&$.method==="OPTIONS")return s4(Q),!0;let G;try{G=e4(Z,Y)}catch{return!1}switch(X){case"/stream.mjpeg":return G.handleMjpeg($,Q),!0;case"/stream.avcc":return G.handleAvcc($,Q),!0;case"/stream-settings":return G.handleStreamSettings($,Q),!0;case"/config":return G.handleConfig($,Q),!0;case"/health":return G.handleHealth($,Q),!0;case"/webrtc/offer":return G.handleWebRTCOffer($,Q),!0;case"/webrtc/close":return G.handleWebRTCClose($,Q),!0;case"/ax":return G.handleAx($,Q),!0;case"/foreground":return G.handleForeground($,Q),!0;default:return!1}}async function J1($,Q,Z,J){if(await new Promise((X)=>R0("xcrun",["simctl","boot",$],()=>X())),!await new Promise((X)=>{R0("xcrun",["simctl","bootstatus",$,"-b"],{timeout:180000},(G)=>X(!G))})){if(!await new Promise((G)=>{R0("xcrun",["simctl","list","devices","-j"],(H,V)=>{if(H)return G(!1);try{let W=JSON.parse(V);G(Object.values(W.devices).flat().some((z)=>z.udid===$&&z.state==="Booted"))}catch{G(!1)}})}))return`Device ${$} failed to reach booted state`}return M9(H9($,Q,Z,"127.0.0.1",J)),null}function Y1($,Q){let Z=[],J=[],Y=Buffer.from(Q),X=!1,G=()=>{if(X)return;X=!0;for(let W of J)W()},H=()=>{G();try{$.end(l8(8,Buffer.alloc(0)))}catch{}try{$.destroy()}catch{}},V=()=>{for(;;){let W;try{W=T$(Y)}catch{H();return}if(!W)return;if(Y=Y.subarray(W.consumed),W.opcode===8)return H();if(W.opcode===9){Z4($,10,W.payload);continue}if(W.opcode===1||W.opcode===2)for(let z of Z)z(W.payload)}};if($.on("data",(W)=>{Y=Buffer.concat([Y,W]),V()}),$.on("close",G),$.on("error",G),Q.length)V();return{send(W){Z4($,2,W)},on(W,z){if(W==="message")Z.push(z);else J.push(z)},close:H}}function X1($,Q,Z,J,Y){if(!J)return!1;let X;try{X=e4(J,Y)}catch{return!1}if(!E$($,Q))return!0;return X.attachHidSocket(Y1(Q,Z)),!0}function h8($,Q,Z,J,Y,X=!1){let G=(Q===""?"":Q)+"/grid/api",H=typeof Y==="string"?Y:void 0,V=typeof Y==="object"?Y:x$(H);return{...$,basePath:Q,logsEndpoint:j0(Q,"/logs",$.device),appStateEndpoint:j0(Q,"/appstate",$.device),eventLogEndpoint:j0(Q,"/api/event-log",$.device),eventLogEventsEndpoint:j0(Q,"/api/event-log/events",$.device),metricsEndpoint:j0(Q,"/metrics",$.device),axEndpoint:j0(Q,"/ax",$.device),cameraStatusEndpoint:`${Q==="/"?"":Q}/helper/${encodeURIComponent($.device)}/camera/status`,devtoolsEndpoint:j0(Q,"/devtools",$.device),streamSettingsEndpoint:a2($.streamUrl),serveSimBin:Z,gridApiEndpoint:G,gridStartEndpoint:G+"/start",gridShutdownEndpoint:G+"/shutdown",gridMemoryEndpoint:G+"/memory",previewEndpoint:Q===""?"/":Q,execToken:J,...H?{codec:H}:{},...V?{streamSettings:V}:{},...X?{proxyHelpers:!0}:{}}}async function G1($){return new Promise((Q)=>{let Z=v2();Z.once("error",()=>Q(!1)),Z.once("listening",()=>Z.close(()=>Q(!0))),Z.listen($,"127.0.0.1")})}async function R$($){let Q=`http://127.0.0.1:${$}`;try{let Z=await fetch(`${Q}/json/version`);if(!Z.ok)return null;if((await Z.json()).Browser!=="Safari/inspect-webkit")return null;return{port:$,cdpUrl:Q,async listTargets(){return(await(await fetch(`${Q}/json/list`)).json()).filter((G)=>G.id.startsWith("sim:")).map((G)=>{let V=G.id.split(":")[1],W=G.description?.match(/\(([^)]+)\)/)?.[1];return{id:G.id,title:G.title||G.url||"Untitled",url:/^https?:/i.test(G.url)?G.url:"about:blank",type:G.type||"page",udid:V,bundleId:W}})}}}catch{return null}}async function K1(){if(A0)try{return await(await A0).listTargets(),A0}catch{A0=null}return A0=(async()=>{let{startCdpServer:$}=await Promise.resolve().then(() => (z$(),W$));for(let Q=P4;Q<P4+50;Q++){if(!await G1(Q)){let Z=await R$(Q);if(Z)return Z;continue}try{let Z=await $({host:"127.0.0.1",port:Q});return{port:Q,cdpUrl:`http://127.0.0.1:${Q}`,async listTargets(){return Z.getTargets().filter((J)=>J.source?.kind==="simulator").map((J)=>{let Y=J.url??"";return{id:J.targetId,title:J.title||J.appName||Y||"Untitled",url:/^https?:/i.test(Y)?Y:"about:blank",type:J.type||"page",appName:J.appName,bundleId:J.bundleId,udid:J.source?.id,inUseByOtherInspector:!!J.inUseByOtherInspector}})},highlightTarget:Z.highlightTarget?.bind(Z),releaseHighlight:Z.releaseHighlight?.bind(Z)}}catch(Z){if(Z?.code==="EADDRINUSE"){let J=await R$(Q);if(J)return J;continue}throw Z}}throw Error(`No available inspect-webkit port found in ${P4}-${P4+49}`)})().catch(($)=>{throw A0=null,$}),A0}function V1($){return Array.isArray($)?$[0]:$}function I$($){return V1($.headers["x-forwarded-proto"])?.split(",",1)[0]?.trim().toLowerCase()}function W1($){return I$($)==="https"?"wss":"ws"}function E4($){return I$($)==="https"?"https":"http"}function z1($,Q,Z,J){let Y=new URL(`${$}/inspector.html`,"http://serve-sim.local");return Y.searchParams.set(Q,`${Z}/page/${encodeURIComponent(J)}`),`${Y.pathname}${Y.search}`}var u8=null;function g8(){try{let $=process.argv;if($[1]&&C$($[1]))return $[1]}catch{}return"serve-sim"}function H1(){if(!u8)u8=Buffer.from("PCFkb2N0eXBlIGh0bWw+CjxodG1sPjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj4KPHRpdGxlPlNpbXVsYXRvciBQcmV2aWV3PC90aXRsZT4KPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFVQUVCQUFBQUVBSUFBNEJnQUFWZ0FBQUNBZ0FBQUJBQ0FBUEFvQUFJNEdBQUF3TUFBQUFRQWdBS0VQQUFES0VBQUFnSUFBQUFFQUlBQ2NPQUFBYXlBQUFBQUFBQUFCQUNBQS9wb0FBQWRaQUFDSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUFRb0FNQUJBQUFBQUVBQUFBUUFBQUFBT2JZeVZNQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUFvSkpSRUZVT0JHbFVzOXJFMEVVL21abWs5MU5paVd4MHRvcVZSRHhvQ0NtSUhnVVdpaWV2UFRrU2NHVENJSUhFUS8xRC9BaWluK0NKdzhxZUZERVMrMUZnZ0VWV3l5MDBDYllObW1iNXNkbXM3c3pmck90cGZjK2RuYmY3SHZ2ZTkvN1pvQWptamhjYndEMWJIZTNVRzA2N2tZdkVBR0RXMTB1T2x1ZWIzUWNoN1dKWS9YRE5RY0FkNVo2NTc1MW5PZk5VSlFTcmQxWUE0WlJUZFNFdnJhWlVvWUNwdXlZK1A3bU5XL0pBcVVBNXN1c2M4bC85R0ZGdUpNNk1QeHBZRmdvNUY1QzZqUFRScVRIMVEwL05UZmZUV05tSm5Fc3l0UGlyV0tyTGt2OVVHT2lZSEJqUkNLeDg2UkZUS0NmSWRqbkRZMjVob0FqWkduWXVYSjhIZGhJQVdvdDRTVmRPQ01zbUM0S1hQVU5hcDBFemI2QXNCeEp3WFVraGpnS3V1U2g0S2kyOExoREN0Q2pTSjFkNE1GRmdTZm5iUVV3VjR2d2FqbUJiMXNUd0ZFSzFSYjlEdU1xVFVsZktVRFE0Nnc5ZHJFZGFGYkFJVTlpY2xTZzZOdHNnNGdxanUwQXl3Mmd6WHpFTm5PZndmWTJ2YTVBMUdlRHlLVEtEeWlEVTVrRWl0MnRpRW9LVEExTHhLSEV5N0pCUWZ1b0hRYXc2b2NjcGRIUkZFeGd2YVh4ZlMyQ2w3RWtMU2hucHlBNnpNTHRhM2dwOS84YWtBSGxRa0lHOVRibmxScTFIWU9mVmY1WDdNcVI4bVJqcmRyV2tJSEE2QW1nekgySzArMTNRektPRjFZTnlqbnlaY2NmYXhxVkZRZDFKc2QyL2tGN2ZCcXJUWWxjRnZGQTBBZ3RZQW93UHYrbThhZjBzUEoxTVg5OS9oYzdFU05Lc2xEc3pnZVMreW9QM2ZCcUtsY2luM1FxTjBkLzExOFRZTy9NNkp5NXUzZ2g5c2RlUUdRdUcyTmNLNXk5QTVRai9UcEVVWTRNZlJWVnhnYzI3NzEvZkhiQk1qZ0FzQnVhT0gzNzQwa0Izek1KYnhITmRZRkJya0krYTNKZTBIczdPL1dYZ2YwRHR4bEh0SDg0aWhRSmZTYXpqUUFBQUFCSlJVNUVya0pnZ29sUVRrY05DaG9LQUFBQURVbElSRklBQUFBZ0FBQUFJQWdHQUFBQWMzcDY5QUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZBQUFBZ09nQUFIVXdBQURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBSGhsV0VsbVRVMEFLZ0FBQUFnQUJBRWFBQVVBQUFBQkFBQUFQZ0ViQUFVQUFBQUJBQUFBUmdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFUZ0FBQUFBQUFBQ1FBQUFBQVFBQUFKQUFBQUFCQUFPZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBQ0NnQXdBRUFBQUFBUUFBQUNBQUFBQUFmZ3ZhVWdBQUFBbHdTRmx6QUFBV0pRQUFGaVVCU1ZJazhBQUFBcHhwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNldGSmxjMjlzZFhScGIyNCtNVFEwUEM5MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0eE5EUThMM1JwWm1ZNldWSmxjMjlzZFhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGpJOEwzUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0eU5UWThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtNalUyUEM5bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNHhQQzlsZUdsbU9rTnZiRzl5VTNCaFkyVStDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhSaFBncnAvc2x4QUFBR2hrbEVRVlJZQ2UxV3pZOFVSUlIvVlYwOTNiUExmbVVYa0JESTdvVUVSU1ZySUFvbTNreU1GeEtQbmpRbXhJTlhUTlNMQ1RHR2kvNEZHaE1UalViQ3djQkJFMDFBQ0pKZEVrRUlBbUVGQVlGZGxtVm1kcVkvcXN2ZnIyYUc2VmtXcm5yd0pkWFZYZjNxdmQvN3JCTDVuLzVsRDZoSDZYZUgzNGtPN056LzdKKzE0TWtrTUJPdFhFVlpManJIaHJ3UVNUQUtMWkppWGs0eFk3MkZueTE4NXdxL2pFdXlMSjgzeXA1YlAvdjE2Wm05ZTdQVmRLMEs0T1ByQzd1T0xvOGN1RnhUTDlSRmF4ZEFxSVZDMXhiaE9yUEdPbDh0RkhQdURnV3BBZmRBcGJKRllZdzdVY21XOXQzWU5YNThKWWlIQU95ZnU3WHJjR1BpK3pNMVBXWmJWclJ5WW93U2E1MTBGVk1JTndhQjhrb0wvQ3RURzRDU1BPZTZFaFVGWXFSWXJOcDdyMTdmUFg2aXpBc245dWo0OFcrcXgycWpuL3kycE1lS0p2eE5qWEFwaDFzeENueHpjTDM3WHA1Ny9FNG9LeTMwV0t0WTgrbms1ei9GUFkwQ1lDVTZNanc5UFZjek8yemRDb3p6NURFQVIwQXNaUmZncjBlUGRkZU5UVWVXeGw0UERLSGh1eWZFMElabVI3cDJhaHJmRDBMUkIrQjJNdkpVM1dxbEVUenVnM0V5Q0k0M3BnSlpXMEdzb2F4TWREVnBCUzRQL2o1eTVvdUx1ZHhwQWJ6blF3aE5xS3dNYnNPVzFRRWtFa3dnNUZLQlpPNWh0bThjVURLOVJvbEdtaGY4U2VMa2hmS0JqODdFWDN6bnA0NlVURldWTERTZGhCMDNjREk2bVBCOG5VZWZCNUxNUlRrUUYwazc0UnJJNGlZc24yOWlEUW1KaFBiV2hqQ0pTbFRIQlc2RkN6UTBtVEFRQ3psRkM2T3JCVEd6cVlzZUNjQW15RHRhbWlvWlFORGYzNmJsdVhFbG13ZGhwNFZLcCtWR3M1Q2pONEVNTmFpN0FPaUZMZ2lzYWEwbFJQd3RLeC9ERllTTEdhVXAyWU9zOEd0ZGJQNGp4eVp1eU9DRkZ6Y3AyYmVWTzdyVUxwZ3RJNEdjdXRHU0t6V1J5TFQvdHozUUNRL1kwVGtrcXNCeXlGSWNUQ2FRZ2piZnlkcWYvdGtQQU5ZckQ4SUp3dTZKWWt2R2VkZmZiMXE1ZGs5SlhFRWY4TVo3cnZZR2NMQUpEY1RPTnlqS1V4MEJCQ09VWDZLSEFEZ3dPVEFWSFVZbVlqZkdqQzB6T29TYnA0WUQyWXhSRGZrTkpSZ1d2QWxLcFo0cHVZY21WRUY1SnVqTkJvM0kyME9aandVQUFheDM0eEJIV2daKzlucGZqNUJBaDdQOXZyWWxGcVZEcVJpRUJkYVJyMHhNVHFiTUs1TmF2anlYeTZHTERsN1JYbVpBZVNYcTgwREtFTUFEUGs2bzR4U1NVeUNtQjJrNXJTUTFtNW5VWUtHQjBCNkJpVWpBUkFBQnZEV0VaSHo3NlJCblFpYUhMcUFER0NQbWNRQmFLTGNjSUh6NUFFZ0NFQzBvWWd4cExFUEFwcmVFSEZoTTRQcE9FaEtFMTkxQlF3RGtSZW5BWTRIc1hxL2x5TytaV0NSMzNER2l3OXJmaXJNVkh1RHgyc3djV2k3aUNkZnpZS0psTmRUMjNXV3NoVlJib2c0S2YwUUJSQUcwRG51Y0NtVVFNVjJHVVRINlNwbjZRd0NFTklWaEFIaHBZVjVHSENqUUFvQkRnMWRJZ29WNklUZFJobkVGYnVsYTVMSDA1d09UVXBFRmZpOGdCMmtqbGNjQmFBRUFlbzNQVkFMZ1JhTU9hMkdMWklCcWVRT0JSYmRyVHY1YUxDU09BQWdhWXJpSDNiR1pXa2t6NnpGMW9SakVqaTI4VmtkcGpnQkEyWHk4OTNrQTVWY3d5d01vWi9Ob0FuVUQ3WlE1a0VCQmhud2d3SVdHa3IrWGxBd1BCakkrRk1yY2dwVmJPSDIyYlF4eFlBV3lXSWNndUI5UmtBMWpSazVmemFTQUM1bUFsUlZIWng4QVpWM0taQXRRaGdWQXBMaGJKYWhwRnFCR2ZjTTRDYkREd0pjREZXUTAwSjY4bE1rZmQranFRSzdNRjdKOW84akVtb3Evd0xCSXpsN0w1ZHgxSllNUitCR21XTEhaOTZnUFFOWklGM0ljRlJxSk4zT3BrRk9iUkVaeGZTZ0FpRVJ3cDY4bTh0MnZLZTk5MGtTWHltQnhCZVdtd0pQZzVEdDJvWkNoS0lkQ1ZFc2psM3JLRUJsVUZnV3d4TzI4RjlaNTlBR1F4dng1SmVza3dPRnhGeTcrOEdDS294U1hFNWhpa1ZIc2lHZ0JLSzBCOUFERVBkU0MyNXEzbG9IbkdSbXBRTmhQVVBwWUQzQ280UWRjWDBCbWpNUWFjcmZPbHdIQXBoNDF6aHljTVhsckZvZXBCMkVrUkNoaW5HWVJSZ3doVmFtYUt0eklob0phNzdaV3psRFlIVnpuL3dEdHNIMjJJSFRZc3pacXpZN09INXp0YVdSd1M3UTg5M002dm5YUFpSMnQyNFBhalhnRkFuNWYrN1FDeWV5SDd6cDQ1M0hNTlY2L3V2ODRrOWlNZUo0NHRuVVR5dWJSN1A1a2NPYXR6ejU0L1VLYm8vMmsvSWRvNnMxZlhpNUduL2tJaFRhTkM3NEtFU2hleTltU3k4UlRqd0o4dldObTF2T2J0YzhtU1dDeHp0MjY0V1RtQ1RuNzNsZnZQdjlEZVQvZlZ3WEFINk9UMjBlSFhqcXdVOFVidG9hVjZnVEtDeFZFMFQzU0FNYkVSQ3BJekZNUjMreE5KblFGY2ljMXJqay9ZRytmVjhmMm5mejJ4NW1sM3M3LzMvNURIdmdIYWtRU1dLMGpJVXdBQUFBQVNVVk9SSzVDWUlLSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQU1BQUFBREFJQmdBQUFGY0MrWWNBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUF3b0FNQUJBQUFBQUVBQUFBd0FBQUFBQW02MUswQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUMrdEpSRUZVYUFYdFdWMklIV2NaZnIvNVBidG5mMDIyS1UzU2xqYjlTUk1DcFdCU1c5QkFiU0V0MUp2Y0ZoUzhLSUpDUVJTdDRJVUI5Y0tmNG9XVW9ONUpJc1ZDSU1YRzJpYUlwaWxwU2tvYTA2aHBaZFBkVFRiWjdPNDVlMmJtekkvUDg4NlozZGt6czBrS3hSdnpuWjJaYjc2ZjkzdWY5L2Y3WmtWdWxWc1MrUCtXZ1BtMDhETVJJd2YzdWxPUFArY3NMSXpiMTJ6SExNNHZtcmtTSWRhWDMxRXAzb3MyZmNmTkdSck9yblhqYk1pYVMrVFFvZTdKbDEvdWxzamNWUFdtQUV4UC82bDV3SC8waVU5Q2IvZHNhTGEyWXVzMnNhMkJvQ3RPa29vRlVCTGp5bEJKV2NjelJzWFllUjNqSkVFYnIyN3Z3anl0NHpYMVBZbURJTzJJbFY2eVRIYld5YUkzbzdOLy8vUE1jMCsxYjRUaWhnQitkZW5xbmxQUjZJL2VYN0Flbm81RVdpR1lTa1JjVHlRTXJrL2VjZkwrbU9oUTFsck1iNEFXYUJzckIyMWpvR1BTVTE1My9zWEpYWjg3bk0rdXY2OUZVMGYvZE9yYTgyKzJSMzV4L0lyeGdrNHNvQzhHTXpqSjk0MkVJZVIzbmVJNE9mbVlLcmxPcWFObGZFZGNxS0tSdEw5MWNlZndyOWVhVHA1cXk4OC9tbnI2TDYyUlh4NmRFcThMNXNtTDFXTytkc0puM0ppRnNVUWQ4UUtyK2RLbW81ZjJyRVcrRnNEQkl3ZEhUeWZyZm54ODFyaUc5Z0lCWnJEWlQzT2xuM0o4TFcyc0hYV05HN2xqUDlueTB1R1JPaEMxQVA2MStRdFBubGx5dHdldFdBd1lVYy9zZnhMWFozalZya0VoTE1VU0czZDc1NzRkVDlVQjZMblo2cTdMMXZEdTZTVVJHd1JNamZreXdsaVk2VU0xakR5MUJlYm05UG9zVldIdEtQVXBOelhTUVhpaTh4bzZXVjlKS0NodmVEZWEvOURYSlJVQWU4SDN0Y2g5c0EwQUt2MitHVEU0M2psaHlkTjMyc0pmdWhZQXpDdDRXUk5rYWN6eHkwWmUrMDlNcUJVUUdTSlVJdDRENkVKZ1JyVlVLZ0MyN2QwMmNMWnJKbUxFYnF1UE94Skh4Sk05bXl4NWdER2VraWtSNjY4V3NyelJHQWFINWpwTFRrNkpUSGN5Y2NobXVUQzlHVE94WWNlT3hzenAwNnR5UXdXQWJOdmxHY2RxZVBRT1o3V0xLQUJ0TXJJRXFTQ0pxZ25oWGw1TzY0YkJ0b1RnZW1NY0lHQ1NhMkk5RHh5NXRLVnlBU0RmTmdPeS9URlBiZ1RBODI2emc0NDRJVTJJNmJKVXVuaE5RQ3pvV3RMS2pBSkllbU80SkNXNVV2QlN2Q3UrS2tpT05aYWxERE9sUkFHaUR0Yk43TldDRTl1bXp6bjIwSVorM1ZSOUlISjlrekJuTVh2Q3VZclNoVGx0SEJDWjhETVpSYk9IZHd1eGo3OE1SdDdHK0NXWWxLdkpndk95WlZ0bWYxNktKOTlVUndDUUFVQW1BZDlwM1dyaEsrdm04ekNhM1pibTBxSkpueFVUaXFMSU1DYlRnZFdKc1NhWi8rNTJTNzV4dndVMW0xSkM2MDNIbUVXRXBsY3ZoUExoUWlZK2paZ3I5a0tZOHI4TW9yZSs5b0VXQUhCNFFKNFQzR0JMeW40WmcvWXQ2L1A2QU9naEthV2dHZ0E5TUg5WFUrU0ZyYlkwS3dyczBjSUM0M0NheHpZNGNtSnFTUm8rUkFVcktFSWlOZERQUDJjU0lNYzUwRUFNdTFlaDZiNkptaW9oS0N1dXQyVHhxR2lBSFJtSVVKMGt5SXc2aWdXOEVyMWljdi9UaC9rc0JyRUVxWXQ5RE5IbUs2c0RvMXJtZytRSWtDYWtDblBSZ0xWNHFTbWhXaTRNeWVYNVJWOHRBQ1lPRFF1UVBqV3RhYjQzZzJ1VXBaa3pna1hSemh3eDMwbkZCV29MRXFVeGNHeXVnZFhMa3lFTE54dmo2QU1OZEd2WVZoL2dZcVh4Sk5MbjF4ekJVZ0hRaGczQmlaZWx3ZTBDSFVzWlp4VzBGSURlY2luU2J5bHZadWlyN1V6R0lOVjFycEVSN0ZnYjZHQlk3RzFNbFMwR3JnaUVPcURiUmdadVJTbk9CcGJ1Ym5WdFNxT3ZHUEswS2dQa0F5b0EyTXdFcGRHQVhHczlVd0Nrd2NWWG9nb0FLQkJJRWhJYWdlMC8vOGlRM0x1dUllTURDSTlvQSs5YXlqeFJ0cndvRFBBdWkxRW1NemhickljZi9mRmNMUFB3YUI4NWdWclNRcUVWOVY1VDhhZ0FJRWhLazR2RFFuVWxGNTRHYTFJSmE5aFhhbVFoai8xcVpxZ1BRZW9QalhKdUpsMHd4ZE1YaTVwUVhsVlR5Mjg1ZlI1aVJvQnlmRmprL29jOWVmSWVSMTQ2RWN2SkdaaVZabE5NeEJnUFROV2RueW9BcUNhZW9Bb256aldRUzR2Q0xqUkFnYWhRUUJ4L0t0RVVuWE90U1B5R0JZMVFER3d2VU9DbGtDS2JVS2VBMUpFaGFndDJTSi9aQkthL3M4dVRIeDRMNWV4c0lnMFhkUERIYURXRWFUTzR5cVVDZ0JxSUFEVU9RUnpxamFIbkJLSWs0MVE1UXl5QmNMazhaeG5WRG5taWxoYVpUV0Z3bWt6Sk1EdldLajBRWko1QTFPbEJtWG5rMlh0c09UTVp3RmNBem5iUVdsOXFBWlExb0NHdHh6eWpVMG9VWkI1M01rbVFCTUxtR0FoYUFSeVNBQXF2TGRaVklHVTB5bjB1Q0FMUUdvVkFoa1UyRDl0eUczYU9sMEdQOUhFRUZ3LzVxTDlVQU5DRUdBa014WWxMa3dzMWdhdXJBRWdpQjdDODN5Y0FiRHM0cG8xTlhnd2ZzT244MXkwRVE4bm4yaVJOMWJBQ1FEdWNlQnhSYkhvUk9RaGhsb3pTaFBwTEJVQUxJN2lWTGlTdlR6QkRFNG9BakptWlRtdmpscHNTR2NBRk1VVVl0d2lKUmVpd25WU2xtaSs0N0FsOTY5Tm9PSnV5eWdHd2hTYmxJekh3UUpYeGd3RG9Ncy9kRkFENmdNWmlTaEFFaW5CSzZlS2NyU2FVSWJQWldJVCt0YnhOQUIvc24yc2prV0d3bzJFUWkwUEVPWXVnMVN1cm8xSU9qc0tnMGptWSs2TWhQRHNRaGtteENOYUdFbXBMUlFNYWhYaUFLQUdnR1hFckhkS1pxV2Y4V1doTUVQNHkyRG9YWm1URkxrS3VJSkY1a0pwRERaQjVjcC9mOUVGR1dUSms2Nkt1N3lTS1loQlhzWHVXRENCbUZ5QU1HQSt0Z09iYXJGRkJCVURIOGJJTU1aeE1FM24reEdZTFJDaGhQWjlpWlRxeFJpaHd6NlNUd2FRSVlCNzdlWmNMZ2pKTkFiYUZmWkVsNjRZY0RZVUVlM1V4aGpCQVFCSGtwb2czQlVxOFk4T1dmRHdiSXlTTERBNWlKZENqckhSTTM2MEN3QVFoTE1Ud3B3QUtFQVFRUUFPTVFqUUJMa1F6b21uUkx5QlBaV294dE1UQlhBZVowRUk0V1Qvc3lOaWdrYitkRCtRQ21OcXl3Wk5kOS9weXRXWExwWGtnNWdJS0JCeUN4UUY4MEJxRWJiNzZiZ3NIUW9DR2FnMHVLRFJ6YXI2a1ZRQjBybDVNUnh6a01tb0FKd2h1ZVQzRVpmVUJTRTIzMmoycnBvQUpyQXRRdEt3WWpGUHBTZVlpSzd0eSs1Z0RqY1J5NEoydXpDNVp5S3dEOHU1RmtjbHJzWHp4UGx2dVd1L0p6SHdxN1pBT2oxMHZwRDB4Yk9USW1Vam1PcDZNREZCcjRBRW0xWEFsSG5FdVliWFZwUUlnbkh3N0NscHBFSElvUWcrbE8zT0Y1dUZBUXBRNHFCWDJtZzlCRzA1VjhJVzVWaXJETGlUWWRLU0RrSFQwZzY1OE9FTTdSRlJCT3o3d2FEaThkQzJWQThkRHVYZEM1SUhiSFprWXNtR2FxVnhaN01vYjcwY3kyN1prY01DVmJrQk5BeHdFbUlacHNIRHFPSUwwNmxJQk1IdnVYRENjSnJQd0lmMXd4Uno0eVpWVTlyOFZ5ak03T0J5eW9zZFNaTFJLNk4zR3k4ZFhZdm5aNFFVNVBZazlESTZlQ2NZMGZGY0djYVVBQ0RsQ2ZaeUVoQVNSOHR6N2J3ajAvRlFNczhIT05JZ29MM0dodVNHWUVXTVh6WmhMTUNjMjdHVDI4bHRuS3R1aENnQ003MXBSNTd6bE5ML0U1RVF1dVpsNzVVUWlyNTFxaTJmbFoyQVAzOFJEZkZMT1J6RCtjNHZzeXVpUXE3YlBEcGR4bGdVQXRHZzA2bFhSNVBIckdIelVBNGNaTm9MOFpSakRQS1A1aCtOUjU1YThhY0lQRDBHSCtleVZleDBBU1Jlbmo5bWo2Nyt1SVJOalNiaUJzQkxESnlMZFltS25DU21HRVdOUlhoeUVDUjlNTU9vUUZCY0dWcFVnL1RRdmFDd1ZqdU5GUjdWd0htQWg4eXNGd1FGengzMUVvMmo2MkVyN1NtMkZnNVUyYWIrei80Z2RkLzVoR2VRLzlZV2NHYmdVdEdIamNpQTlXeVZJS2ZKeUFJaE1rT2xpenMwK2kyeGZOOTUzWE5uWURNN092Zi9iSXlVV2w2czlIUysvYTZWOThlMzIyTlpuWnAzbUhWOUpFa1J6bWdBbGcwdlZpeWNsbmlCaEZlOHF1YjR4UERLeW5hZTY4cmh5blRUWG9wVmx0ank0TVl2dlNOLzc1dS8zZmZYRWFpN3p0MW9Oc091ai9ZKytZaGJPdnRqd3M5aEFDdityd2x4UU9QTzJPN1A0YnYvYzkzL3p3dWRmV1d0OU5kZTFPdEh1M2ZPMW8zdk51a2UrRjV2bVE0ejFtZ2Z3aEE5TGdIODM5YXk4bGtUbFB6U1lWeTU4cFgveFgwd1JBaVMzRUEzWSs5aWd5TWFSOWdkandYdjdmdmZ0eC9sRm1ubTd0dHdJQUNlWjhXMVBiQjdiK1lNdm0rRzdIeGQ3YUV0bTNQVytiemZDeU5qSXl0QmlQUmxFUk4zLzBHUVlrUGo1aEV3eUxQSXNrWC9VTW1uRHk1SzBtd1MrMjUxdG1QWS8zZkRDWHlmZjJQZjZzZGRmbjhUNmZiQlg0NmhmZWZXWThodHRhYkE1TVRIZ3JyL1B6NXh4QkhRWDUvcGVnQytQUkIzQzFKcytXVVdGWDdmWndUWjhGODBzcTV2RlMzTkpOSDgrUEhQbWNnZk4yRTJ0TFhIMDNTcTNKSEJMQWlVSi9CY1lHc1pyMjk1WnJRQUFBQUJKUlU1RXJrSmdnb2xRVGtjTkNob0tBQUFBRFVsSVJGSUFBQUNBQUFBQWdBZ0dBQUFBd3o1aHl3QUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQWdZMGhTVFFBQWVpWUFBSUNFQUFENkFBQUFnT2dBQUhVd0FBRHFZQUFBT3BnQUFCZHduTHBSUEFBQUFIaGxXRWxtVFUwQUtnQUFBQWdBQkFFYUFBVUFBQUFCQUFBQVBnRWJBQVVBQUFBQkFBQUFSZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVRnQUFBQUFBQUFDUUFBQUFBUUFBQUpBQUFBQUJBQU9nQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFJQ2dBd0FFQUFBQUFRQUFBSUFBQUFBQW1nTzgxZ0FBQUFsd1NGbHpBQUFXSlFBQUZpVUJTVklrOEFBQUFweHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9saFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajR4TkRROEwzUnBabVk2V1ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQakk4TDNScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdycC9zbHhBQUEwNWtsRVFWUjRBZTJkYVpBa3gzWGZzKytlYzYvWjJRT0xhNEVsUUFJbUtkQ0VMRktrUk5BMmd3ckxsTU1mek1PbUltelJKaDBNaDBnNS9FRmhpYklWVmppc2d3aUhlSVJOU3FBc0tpZ0xFbmpia0hpSUpnaVFPQWlBd3BKWVhBdnNpY1VlTTdPN2MvWDA0Zi92WldaMWRVLzNUTmRzTHdTU2t6TlZlYjE4NytWN0wxOW1WV1ZWTzdjWk5pV3dLWUZOQ1d4S1lGTUNteExZbE1DbUJEWWxzQ21CVFFsc1NtQlRBcHNTMkpUQXBnUTJKYkFwZ1I5OUNlUmVZbDE4cWZGenVjVFR1bHlJcytMOTJ4SjRwQnZqTk44STV5VWpvRFJqUTBqVDMzNTlCdjJMM3U5ZXpBeWhuNnRRUkRveDdsWnk0YWYydWZMUC9PcEhxN3R1dnJsYTNUbFJHUzFQbGk4MG02VjhvVnFvNXh1RlZqMlhiK1J5dVh6ZDVlcEY1eHIxdXVGYWdWVGQwd3VSWmF4Y3FYUmNqNWxRWGlyNStvV0ZCRVViWHJBUlgyeEd2S0xDWHVYMVpyRkZmYTdsV3ZWV3E1VnJ0SnFOU3FGUnFDODF4c2J5SzNQbnp0ZGFaeTRzdHc0K3RuVGt2LzdiSllIV2REUjBwRU0rWktJaHhEZ05NOVIwVk1oUWthYVFSZngwTEhhMi9JbnZmbmRQYzhldUEvbXg4UnR6b3lQWExkZGIxOVNhK1YzMWh0dldMT1NxdVVLdVhDeTYwbnpORlpvdWwyKzJYTDZKYkZ2K1VOcUdpc283WXFTVmxJVTBlUWdUMnhIU0RlV3JJMUtvS2hlbERtQW9pL0F4SGZNV2kzQWRtSWdqM1VibDFrWXNLV2tIWUxsOHE3bGx3alZtNTl4S3M5R3FpY0NTbUo1eHVlYXBWajczYkc1eDhlbld3c1hIQytkT1BYbjRuOTV5UW0yaXZSVm9yMFBvTGwrSUNobzJoWWdYeGRNSjl6K2ZlT0xHMHM3ZFA3ZGNxdno5UlZlOCtXSTl2MmNoN3dybk5ad3VhaXdzcU51TE9wYlJoRnFWcTg1SmFDYlVLTTBZZ3crcGtDZFkyaWU5dEZRUXFoSzRKQi9xWUdwc1RBckZBQlo5WTJEc0NEQ1IzcXJ5QUlkUlVFZEl3L29TblNXRmd2b3lPZW5jM0FVUGswTWlPdktvbHhqZ2htdmtjODJUdVdiOU1iZXkvSlhDMmJOZmV2WXQxeDVTRGVndnF5RkVSY0hHc0FJNDZaZko3Uk5QUHZucXd0NTk3NXR0bGYvSjJWWis2dmk4Yzg5ZmRPNnMzTzVjcmVVV05LUnFVb0xjcGgraDBreEJybmwwTE8vbVpodUpnSWZGWElKSDNJMVA1TDBCTE1qUEJFa01XeUI1U1dKeVM4R2RuMnU2cGcwRnp3SDBOS01aM1p5c3BLQnByVkRSb1RqZmJKN0pOMWYrb243cTZNZFAvSU1ERDZ1RjJZbGlrMm5TaHlFa2h0MWY4TUZzNDdmdnZudDYrcWRlLzRHWi9NaDdqOVh6Vzc5L3hybm41bHJ1N0ZMTExjcFhOcVJ3UmswTVVRR1VsVXM1TnpidURTRFdEejN1WXdERHB0TTJnRWFIQWF5bWd6SGs1Qmx5cmxET3ViSzhVNkhSbk0zWGx6NjIvRGYzM0g3cTNXOTVRVzJHN2cyR2FRRGdnc0g2SGM4OTkvcjY3ajIvZDdSZXV2WGg1NTE3L0Z6TG5WNXF1bHJ3bVdiOXF5VmdKUmhBNmNmU0FOSUNrUkhJY29yVm5LdU00eEZXN3MrZE92bkJJN2RkL1MxQkRkVUlvbXRKVTk5SU9pcS8rWWZQUC8vTytlbDluLzN1aGRLdFgzckt1WHRQTnR6eGhZWldRRnJKQ1hOZWtNTzB1bzB3KzlKdkl3L1piTGpseFlaYm1OSGxRck4wYTNQWHZzL3V1K2Y1ZDRwM0poS01ZQ2hpSElZQndJaG1MdGU2NDlUcFg1cWJuUDdrZldmeVUzOTF1T1VPemRiZGt0dzlSSWJDcmZEOFdBVzV3N3F1TzVjMGRkWnErU20zYmZxVCsrNDkvUjdKWUdoR2NLa0dnRjZ4eHNZbmp4NTkrK3pranR2dk81MnJmdk40MDUzUXFHZUszMVM4aEhDSm9kbVFON2pRZE10THVhcmJ1dVAyZlY4LytnNmg1SHJwa2ozQnBSZ0F1cVY5ODZNSEQ3MSthV3J2N1ErZXpZMTgrMlRUbmRGOHZ6bnFKWmtoaG1aTGE2aDVIVXU1RVRlOTkvWXJ2M2pvcDRYK2tqM0JSZzBBNVpzQi9QS0hQN3lyY1BVMXR4K2N6MC9kZjdMbHppeEwrWnZEZm9pcWI2UENDSmJuVzFwUGFUcllkODN0TzMvakk5T2hkc01TMzZnQlFCZjM0Mjc2NTcvNGdaTzU4aTMzSDJ1NTUrWDI0OGlQRnZKU2plR2Q4Rkxscng5ZnVzSHNhbG9UTkN2bFd5ci84QjBmOUwzWStGVEE0aTFyZ0RmMDNQcXRyMzN6TmZQVkxlL2hVdThaelZFMU9hUkxIZjFjQnVaMUVIUGI5WElGOEhOd1pRb2RPblU1UWlGRkExckRDSTE2MHhVdUZGeDFiTXQ3ZG4vNi85MzUvTHZlK0pEdzBvWE1GRFppQVBTQjBaK2ZldVVyMy91RWJ2SThmcmJsbGxkYXJpZ1c5RERra2tJMGdKeU1DZUZkcnRCTjUzSVpBTWJNZ3d6NmNxbXlhY3RDMDREV1dhV1IvTmJTZ1ZlL1YrWHYwOEY2QUlsbGt0cEdwZ0N6dE4rNDY2NGI1NHZqLy9nSHVqOTFTb3VUOUlqQzBpLzFpS1B6VXZHczFYN1lQUGVpZGJsbzFPVzJWblJidlZVY2U5c1YvLzBMTndiRlo3YmpyQjRBQW96KzF2UXRQL25XazduODl1ZG14WWl1OVhVSE02UHRDYjVIUUdDTUdrS01mVzY0Witnd1ZtQWJPcGtsTnlBN2NkUmJYMEsvQm15NkRwanVFU3pxZHZwb2ZudnU3N3ptclFJK3FNT21ac1VEVThwcUFEQ1YzNzU5ZTZVMU92bm1FM3FvYzBiMzloRW0vbWNZSVk0WUVGcDZHRWg3NFJEUFpnU2l3OGk5bkFhZ3hYdmlFU09kZ1RYVWkvZFlwcWRMalZwQlQwNjN2TmxOVFgzRW5UbXpyQ3J1RHd3Y3NrNEJ4dis3Zi9NM3Ixak9WMTV4OGp5UGNNT2RQb1E0aE1OR0k5TGhrR2JZQk9BM0JQZzRSOW5RRHVnTUUxOHZYRUV1TWdMNHRqNHBwcCt4cnh1Vkc0T2tvYjBNclVMNXBoM3YveTlYQksxSEd3dlp0YU1zSGdERTVtS21iNzdsd0tJcjdEeWpPYWhCWjlhbXNXNHR1aVlRYXpPTlBUWGowYWtXdTc2d3k2TkZlTnBzT0FnSitEbVl3dUxUeUEzajY5TVFMOU13T3ZLVWlwT3JKQ29JSWh3MUZtTmZzZjVaR0YxRGV5aWFsY0xPeXY2Zk9LQVdUNE54L1padGlDd0dRQ3REUHJwcjF3Mm5XN25pZWJsL2U4YWRpV1NiZUV6bG9vSWxFK1F5cVFYRmJ1MEptTllqNFo0aHlJNjZWSElWNkNxMlVnVzBxMVp5eG4rdFVPaVVXaGZTcm13SG5SUktYOTVWZ01JcjZzdWtudXp4S1B5Q0ZtOEZGVVl3UEp6UGlKY096SU5sbWxoWFBsOHNiSisrUVMzK3J3NkVCcXExMkZhMUQxa05BT1Q1OHVUay9ndTJneWU0c29odGd6R2NhaEM2cXJELzVNNkN1M1U2NzdielBMeFlzRjVZVDFMZFNTVUhwb2pBYVJjRmJ3bERwSkpZbWNJMkxCcTRkN1N4cEkyTUp5KzAzUDI2VmY2OW1icks5T3hmbzU4Nm13SjB5cmU1UzNHeVRsSUl6TE9NVCs0WEpBdDBVQTRjc2hnQVl1SW8xMTM1U3JaeExjbWFtOUdWRFV5eUI2Q0VCQ052bWk2Nlg3ZytwOUdpcldIQzMySTVvN3FleXVoWDNvVWVoaTBraVpCUEkwMm5RM1VrMnFzcWdzUTRRWjBrdW1pb3ZGRjJibXBYem0wZktiaUNIUFVEWjdXN1ZRWnZ1NElFamhoYldFTFdvQ200cFcxMWNzaFhxYWw4alcwMkhSaExGZ013cE5Oalk5VjZvN0JyUWV2TnBvZ1h4WE4zdndlbFRuYzVtSWV2MGhhd04xeVJjeFBhRnJVd0t5dEx5UUw4MGM1U3hZT1M2WUNMdkRMblIxeklQYVpqM05Fb1F5YmlwMGxjVjRDekZHaG9GNXA3MVZUQlBUVlhkN05hUUxObnNIc2RrTVlCbmpXREJLTzd3NUpQY2RxTmoxZmRSWWFtcVdTZ3JrQiswR0I4M2Z5V242azJjb1V0Yk9CRWNReFMyY0dHRHBUS0hUOVd3MWVONXR5MkNlZm10YkFzcTR3QVhtQ1k1a2d6VGNReXlyTWMzVHlDRTlmSkVmSEcrRkpvcEhGQUkvSXVkcDBjbTZ0S2J1TXk4bDJhNzFoQXMraWxJellOd0Uvb1l6ZS8vZkxXSENWSUp5T3Zlek1rTXRuUG9CNGdJczN0dmY2V2Fpdm5xalYxQk8zYkxVNGxOeG9RREVJWWsvTnFpa29UZDZZeUZwZldPUkJUa0FxVzdTcExWYTlPQ20vc3dPckszaVhEcElFbmlJZGQvb25rS0hmT3NCWlYwRzhXd3F3SnFNOGFiS29zdW1ycDJyOWJYWFNmby9uQTNSM1VBQktlSnZidXJlU0toWktNd09XNStiOEJoaE5rSk5RZUl5cHBaU3lkbStLanRkc0lWVjFDSWlSOGxKUjJvT3VYU2RiZGE0a21oWkpMckt5aEh3MnVCS0lCMkFoWFI0c3FMQlh6cmlSRGlMdUQ1UWN5cU01ekIwMmgwVDdLZkhsa3g1NkticzFrQ3BrTm9McDl2RndxdTFKWmJteDhWSlN6eXlsaE1EWkZLRVVKQXNYak1uazZaNk5mTVdYbUptbWxOQ2VMU0dZSS9sSXphTCtmRVNTSUw1RkdDai9LeGJBcFlyNk5VMDlaV2h1WDIwTjV0aHNZZ05BdTFWeUY2NGV5WG5BWkhja1Y2OXRIcEpVa2dDYnBVVkxhbGNoaUFJYXcxYXFXNWhkeitWa3QxTTdOTVBtc1M2T0xaR2NXbDRlQzZ4TkZZZEs4cUh6aUFVaExldDRZSXAwWWQrSVpMRWZiSGxMdVFObVJHUXh0QjFTYlJoelowUU8wcEd6NlI2Z3RhUkY0YmtXR3I0cy9BUlJ3RWVLTjZTQkxBTHl5Vk5KMk1WZFlybzFsMGFlUnlkb2dWeWdWQ3kyOThJUmllTXc1akdBM2s0UUlSYWM5Z0JtQ1RoaEkyd3RzVUVFREN6Ymczd2dabzhGSmpSWFp3azV4WGdxbWxBVXZDMmY2U2Qvc2hBZFFHWXJIVUpnT3Fjb1NtQ3AxSGFpWGpYSlo5V21YMzFsb3lXSUw2SjNiODhZb0hkdG9RQkJnTWVFb0RVNEV4QlJnK0JYVE9STVdhUXdoSWRaT21iUjdsQ2R6Y3F3elptblhXZFBHcEJTTG14UVYzN1FORVZHMTR5NEpTT3VHWFNQYTVuMEJZdUNrVWJCTkFVSVhMejJKRVFCWXJIKzBheU1mS0dVNHVDZUhPL0ZoWUJTWkxVYTdsQXZTZzUvWU9oU3lOcStSSSt0dklrK2ZhRW5ER0FQdWtYZjFkSGxzZWNxNDF4QTlBSGxUanNXQm5oQmpGaEYvd29VS1lobmdNVzMxcGlSU2xLYU1LdUszMHE0MmdLOFIwalJRTmhxT1U0QVpnc3FpQVdEUUtNMHJUZ2taSGUyajlraG5DU1lYa1pNTlJCUUROODlzQUxwVWlXL3ArazRNU01vNnBST3lRUUM4S01KZFJKU0xrdGxSeER1Q1M3cThwRU8rVGh0TlZOZVNHL0I1aUtsUy96RWdWQzZmd0d2RHJCMUZFRTgwNUF3T2FFdWtFRmt5WlF6dDF1dWtVamdFNlVkL1VENTVTT0htaVhYZ0FZeC9tcEdtQTByVGppTGxFa05RY3FCZ2hzUzk1VmJ6OGh1QTAzdmI2b1E5dzlCYjhHbGQ5R1NXRGxsQTBlcmhzb2I1Tmwzejc5TWJzOXYwTUthRVZGVHh5aTA1dDFmczE2b3RWeFpXREFOTE1BUEJMU01keWhGUlNMTUhjVjR2bU00cWdTeTVsUFFLME5ra2JvQkczdmlneklJdjc4eWxxOXJ0MnFsUTN5T0tlRXpEY0NnNkpobFZvRjhiN2ZDbXRLMEJoTU9QZmhWQVFQMVR5Zzc2UjE4eUJYQklKNFhzTTNyMkZucEp3V3RkWExLQ2gvRitJUW9QSldMNUpmWDZYOTFRY1A5aWY5NWRPNVp6dWkzdWR4SUZCTURueGhHR3g3b1dicHFZUWVsMDlHTFRmZk5relQycmQ4M0xyS28xNUZoWm14R0FzMXZ4U1I0czdXQkcxODV1SU9XVmoxYk5DTlFCU05tQnJKUzJTMXpEckV3d2JCYUJYQ0hRZjRadzFtRnN4Z1RPWnRackNQOE1ocWFaQW9KbmdCS3ZGZFJGQXdTdXBPNTkrTmFpKzhWcnNuYXZQd1Z1cG5FajVlVjYvZnJxaWFxNzg2a2w5K2pabXF2bzhXNWUwNkZORFF4QkJUc25pbWVjaVRWZlphTXgzUlh6TStrQ3c3REdTWGdBOTZhcmxPaVkwcVVaSDRlOFlHd1JLQkY0RDZBQ2dkUFdycWdDbnF3ZWdPY3hoa1JSMXBCNURiQlNhK1NxY0NpaU1CMWsySk11Z3VSZlh3Qnh2L1NLdkh2M0VKWGZUWEJVaXY3NWE2dnU4RnpOemVvckV5VjVGek1DN0Mwb0pKRVMrUzRFeU5Dc3VxdmNpbnVVeGFKT1BNSml1THNVYjRiZ2pjQ21BQnBCa0FNWmlrZVM1bEU3RWFwMC9aQVkwL3FncXlBeUd3QVlqSGVkYkpwZWhUSlZJQmhHLzNiTitlL2EzN1hwSWdVMnJPUTJ2VmIrcXFteSsvSXppMjVFNzlnWHVNMnFZWjZYWkUzbEVxNlhMejFJTXI1RDZoV2xGcEpFMzRKWW9UaG9MQjBGZzZNb2VlUUxPUjNSQU1JaXl2aERqdGdwWkZlUlZ0bDZnVXRsTTRMMUFIdlViOGdBN01iTk9rUlpLTkN4dWhaOVYybkJkN1hlYzM4eHdyN3hnbWpxRlNwNW5hSVl5T3ZPU2g1ZjcvL0ZnaCtKcTNrUnh5WjlyNEpPUmFqeE9pRkNvR1FDc1IxQ3BPc21IWjZ1M1FrTUl6NXFIT1ZCejV3VmNvdEdaWmpXUDcyb0hrQVA2K3ptREJ3anNOanhiamJqK2dEcjNLYk5FTlV3RjNmRERUcy9KaS9BWTlibEZlMllGWGVGNkFFa1hlOEZFRFhCY3BieUphRzhJNHF3QnJiR0tlQXlZUVQzRC81b0JOREdDUFNIL0ZBMGgya2RFaGlxWmYzNnVwOU1hZEl6R0E3VmdEeGp5TzRCZEsyTzRrMzVpdnN4RzYyYTYzZ3U5YXpER1puYkNEZ0x2eFg4ckJZb3VtT3RhUUFQd0lFUzJrcjMwby9jSTBFZjRycUZrbGdiNi9ySG9YM0VyNGFvVWxsL05XSzBQVDVkUTltdDM3YnlsVmQ5cERjNHpSUTNOT2JZUU1oc0FCZ1pLMWtJMmgyaEhrU05uOGhRekt6UnN3aWFSclVHZUJwc1ZSclBVK05hUzRwdlNlczhZbUpuSVdzQkpPM3grdEdabGhvR1RaNEltSkNsY1AwQWFrRjU1dzF1bE84TE1UNUxrdFZSMXdtaEErOUhrby9pQVBIMEk1OEFEUkJvWkF3UEFOc0ZrdGtBYUcvQ0VrSGlmblRwSU5mVkVkWUFyZGVkSE5DK0Y0NWVaYkVsYUhxZ3NtcG9zczNic01vQXNGVWVzT2g3ZmFZVWxPQXBwakVFYW9wOEtuVU9WYlRxR1lTbWpTa29ueEwrZFREekVjY0REOUFoRStHUEhpQnRCT3VSN2VBbDRPZ29HekN6WVFPZ0V6Q3UvdlFNQ042a0tSaGc5YjkrR0FTb0g4R0FIVnIrWTFSS1NLSzZtYXkxZ0Y4SWV1VjdaWGlPUU9hSm1sSlNYSGJtMXlFcUxCNDN1S0lIOEdWeDhXZFhBL0FvbnNCdHNnTmNCM21VVHhaSzBSQ1VIQ2lBSzhYNlFHMGlVR1lEWUFlQUxmQ2tZUmlIZHE5Z29nMk1wY1ZIVWN5SGFrT0N3Y1R5WHZoaW1ZMldBTmdMSHB4OC9kT1FLYWFEWEFYWVl4STFTTnFrRTE3YnZpOGdTSWVRajhWSk0yQTZNcjZSR1lMS3UwYytkL3VpQVVJb1VScUlBM0xRcGJJZTRTRG5EVFh5aURNYkFDdE5MZ1BOYWtXNGh3d01Nd28xdVFvbXh1bSt3RE13aE1oLzBJTndVdElPUHFlUnBhSXdsU2VFSTMxZ3JGNkpGVnRwcVVCckFZeVYrd0FZUUU1YThMaEE1T2thRDViMkJiNCtuUmJzR2lIU2p5UGRLNTViMGQ0STh0STBpcmVMSUdKeGFaZlJFSW9IOGd6RG5pamlYSU5zVW1YOFJqd1lmc2FRMlFCWUJISnBoN0tZYXZzeEMwL2V5cFZDYTdRTEIya0UzeGEraDQzMTFnNmdkTEJDNFRIRTZZclZQTEFHaUs0L3B3OHNtZkoxS3JBb2xDYTRmVnpSblVMaXNvNlNwSzZyUjl1V3hqWkhGZGwyN1dURVFnNjZDanlWcE44c2hMblk0S21tUDd6bllmcFprWWJySzdvY2xYUllHTElocENDTDRNNGt0OFMxb1VieUl4WWk4V1E5aVBpTlNzWlRhSnV4bFlGbk5nRHpBQkJVNTlHSlpOVXpVSTZSR0l4aW1oQlFPblhFRkFKREhiRVBpR3gxQUE4MStJR2tQaEEzV21vU3NtNUJUd2Naa1ZWdHh0ODVWbkM3dFBkdWwyNFFUU3U5UTY5b2JkRXhxcnVUVldtN0xFTmdYNTRwWFFpSTQzemRZUURDRDkyRVgzVUFRK0NDQTJQUWJRZWJlbmhaWmw2UHRQVmRjRGVqNDdSZTRlWTRxKzhSejRrdmRsUFg2Z1h0NVplUjZ1QktoUVVxQW1HYzJFMHJ1aDg3UTNxOUFHTnF2NUdRMlFEd0FIRUtzRUhaaHlvOGVZbUZlSFcyWFczQW9VR1NKdDhPRktNUWk5dkZxK1JVbGpKZnF4Y0xiOWhadGVPS0xTVzNiU1R2UnFSd3ZXbG1nWUZuaDNMRTRMUTRwTTBZU1ZQUkk1aGhDQmZvRUdEYVlIRHhOZzNBbWY3WjRLTHRmKzY4WHFSNVFkOUhQbkpleHFEMGpQWlV0bVE1ZWwzUVZZVEVOdlBRUHgwMDlBYnYrMHpKbWtFNDF0TEZXbTB6R3dESW9yQk1jbjJ3TTVkRlFVWVE1QmxsYWlOSm1TamtHRWZZN2hpNUFNTTFOdnNRd0U5QVlBbE81YmVQRnR6NzM3RERUZXBac3cwc0FUQkM1eVQwU05Oa0hCcFpXdTFpREU1Q3hPbHpnNTJUTmhHWm1NUVkrREw0TnIzck9LVVhYMTYrTytjdWlwZlg3cW5vS0xpN24xNXhqN3pRc084blYyU2hmcTNpNmVIdHpCQWl2bjVzUURnaDNnK29kM2xtQTZpbkZvRVE3Y2ViOFVPOWpyUnk4VlN4TENyRVdBT3VBNXRoc0Nwb1dDNGswcDZnRFdXZzl1YnQwcElFT2wvWE40dllkNjl0RXZaNFdQV0IyWFNiam5RNjQ5RUZ5djE2bVFDWmQ0bzUra2V3ZmlwR1p1WTVsY1pnMmJxNWI2dHpWMnd2dWpkZVYzVGZmcTdoN3Z6K2ludjBkRVA4Nnh2QmJPMkRwSkhWU2ZpNnB5UFZKc0hvSVZpSVpBeVpEUUQ4akNoYkNCTDNJV2k4cXhLNE9EOEJHK0U3MHFIUW91UVVDaU4rSWN5eFZJN1NEYmlNVG9BaGpWdXR6Uys1TXY2K1dKSzMwcFp6elZsYWdrVk1YWEdiZUNmRmRDNmRwbm1hcWtmWFZwQ3ZpL2xWc1ZDMTVBRnErckFEdjNreXFwMzh0OTFZY0RmdExyalBQcmJpN255OHBvOXU2QU5RdHJGRkFFTEFYek1pNnVLZXJNbTRtOFVlY0wyS01odUFkb1RwdlhxOUZDS1hOcW5QazZ3V1Jac01VMFZSZS8xRzljYWFqWFpWc1g2Z1RUTDZFVWlhK1NUVHhteWp4c29CYkpkSG1hU2JVOHNlUTFiaUdBTmVoYW1BbzNjSUZVa1VBZHQweEdHcUtlWGsyMlVHQ1RPZVVWRlVuVEVuMWFrWUJmS2ZoSkRXejZHNHV0NkZyQ25QRlBITzE1YmNYcjA5K3FtRFRUZXZLd1Y3YTBoekNEak1mTk00RW1TNmdwRStSa2UxUFM3OVdraXFmcTFrWmdQQW5hMW9KYnVpZDFEcmJOL3RFK0FWblRVRW95c3hDK1F4Q2pwRE91WWpyQWZTT2RWUlN3cldDcnZLRFVlb0lvcWhycFdYN1pIVU9ScUFmWjdGbEJLaEFobjRTQ21UV2lQWFZkWnU1V3RqdnMyU244QmFva0ZaTkFLcnR6S2xBakFSME5nTG9TUkRxT2tYUlhpNSt3MHYwemQvNUwwKzh0Q3liWkExVDJCRzRBMEIrRTRPL0JxRGR5bzNFakliQUQvcFVwVDc0bWRXbHZpbGpUNVVZWkpyM1VWdDlWMWVSdVU4bHZFRzRPdW85MGU3UjlRQWxNaXFuZkJTOC9VNjIyQUx1ZEFxeVhFZklJL3lkZU1IRHUxWmdDM1Z2WklTSk9EcGJKemc4SWxldllzTmV0V0pYWnVpZkIzMjFqWUV5d1I1V2FtUndHQUlTQ2pQMUNCRnZucWZjLy9vYk03ZDhjaVMzdm5UOXdTMExyQjlqaGlTb2ZGdHJLRk9yYWFNUmtWMXRjOGFNaHNBSG9BMUFQMjBKMng5S1VyWTBwTDlDUmF4Y1VRUFFHekNqM0hiQ3F3aXlNWFRNUnJXY3k5UXhFZzdjSGJLd25DdWlFR2I4OFVrUnRqa2tYQlVUQUpQNnhoQ1licklxbFlWeEFhSzAzV2h2YUsyYWxHV2g3R25nOENqUUhoWDJuc2RvUFZuV3ZVMUJYbFd6YXp1dHV2TDdwR1RkZmZ3ODNWWGxYWU5SOGM4RUdnS0c4WGN2K0RkOEt3aHN3RkFnSG1jUTd6M0RKRzFxT0FJQnpoSFZINnNOelJkdUtnelBCR1oyaUZQd0NqcTlnQUptQURzbzArQzVJc2JkREN2TkpkamhrRFI2Z0RXWGlFUTdGV1ZFRFJ1T2lEOHFQZEZxTldNejVSUFdac1dFMVRvcGVkTlhzcjRsQkZ3YitDdEJ5cnU0S2tWM1RDU0g1T1c5WUZZWFNZbWhEMEJuYU1CYk9CT3NNa25RVFJJZ3FrRzVVZmw5V3BEdDZ5YlNjSVhwQldmYm0rM1JhMEIyRHJkTk1WMEdTWEcrVFdXQVEwaDhoZ0VOMlpJK3lsQWVHUUEzQlRXVFdBSlZrS01ia1V3Z3dianN4ZHcwRU43eEhjQ1JWTFVHMTN4MG9adHArRFh1RFl2QUkrNkRGUUpMOGdjMEpkRURtd3J1SU5uR3JxcmlTblJIN1V3WTZLbFo0SUhUZlNkQlhyV2tMMUptQUxTQ3V4RkZOYUFpZE1FN0hKdys5UkdjaWhJQkV6ZUlQeloycXZFdXFnVGNLRUpnRDZ2Y2h5UmVVWXJ4YnY0L1FDMkNVUkxmLzRZZ2V3VUFvUGhDN0JyUmNiT1dnQmRkUjE0RXdXSi81Z1dnTEZnN2NTVkxOYjNoek9WSGlFUHJIaW5nV3ZFc2hhRnI5WmR6Yi9STk5DU2hnMFM0VVZnWDJJNXBnQmtrVFZrTmdEY2pIa0FVVE5lK2xBME5qbHhCTTVRSW0zcHF5bFVlVWEveHdOZ093QVRkR2FGakhDdlRtdnRCUWhlYWQrbUEzQUJvNWlITk9aZXpXMEtoRVVoUkV3WmJScURwRHhYL3B6dUw3VG9pVVhkaUFUb3kvMm9wUjllK1I3ZStpR1VZRzNqVjUwQmFocnduYlZuQzlmdDBLYy9wUHdHNnhxYkI0VE1ybW5idEJrQUtGSk9JM1BJYkFEY2JXSVJDT2NvYjgxZ1dnNndpbWlHQjRCL1d0ck5KTVdtTlFwTWFsSVdSU0ZMa1JVbm9xWStqQjRxd0FVd1NlV1pacmovRGcwZXNsQmxVd05JMFNBRkVaZEhITW9vdDBvU0E0WmU4Q2pTTnpjdWxZNVRqK2ZhVTdGcEwxQ0prME0wRkM1WnZhejBWVEY5aEdPclhxSGpnVkxST2lXYXVrY0FyS2Z1QjVCTkFRTnluUWJMYkFDc0FiaHVSWG53MHk5UVpZcXhoSWNpMldzZEVCVklBMlFISEIwRVAwcU5Cb0ZRQ0I1R1FsS2wxY0dQQ28yVVRoaUFEWGpjSnVWQ1pxT1gyS1BvYzE2N3RyT1JjZGxabE1yQlA2RlQrUlJpbERJRitrYk9ZcDFVUlJ0YjdZZTIzQ21zNklubDFrcmVuZExyYnkzMk9RSkRweFVDbU1VOFE4aXNUT0hJM0FiaHhrVmdvamhqcDhmSmV0Z3VSL2tjTUc1Vm9aN0lsN1E3RlkwcmdiVVdmZ3laZTVlMHpFRFVNaG9HTWZodFU3RFM4SXJBZ0xlUE5FU0pxVzZ3NERrejByMGFtRldsSzlvRUxLV1RMd2w0aENqMnRkTUFBUFExOFhJUFUyVmZDNzhrT3E0RklIYzNyYkVKRUZpUEdlcllnNVlMdXR3bGx5MWtOZ0RRRDdJR0FNNE1CTDdoVjBkVUVLeWIrdy9sUkhRSTlmcng0V0ZSWHZKOFhCQjJKU0FvVTdodlpDMVpNMEVqNHVmRkVKNGI2SFZaM1E3MlUwcmNuV3NOa2xOYmlNWmdVcjUrSXBKUFkwampzSEp6QXhIUzQ3UWVxcWpEQUFRYzRURUEvNTZnbm1Hb1BRYkFKV0hiZFpKV2UyazlPQUlqdXdIZEcwT1pEU0JlQnBvMWR2Yk45ekNjcWNLbzQwR2VvM3NSU0tFWmlCSmVtREtFSUJBLzNtbEY4TFZnWVEzQWF0OEhsWU5ER1F5QVl2WUUyb0NTOHYyWGg0UWJqMkdGdEFxNHlOTndvREF3b0xDMWVVMlMwQWprNHZ3ZmpjQ1RWeHZ4UTkrOXQ5SXRkR21ZQVkraURaWU9nbHBsYk1sSFltU3A1OGlzekkyMGFjZ0M3TXVVV09FYU1qRSs2VEF3NFNCaUFkbXU4d0J4TVVrNXdORUFiR1FyWS9Vb2kxNEdDZVI0RTVvR0tvczBFQmFMVEQ0MFllL2VLWVA3dDB0Q2hHdk52YWNoYVlGQ3RSa2s5QWFqMURDblVBUmFIU1UrQTYrZEJxQzIvdC9IU2pPMUlRUDZZNlBkTEZ0cDh2RkFqb0loeTZuSC9TRnExZzNaalVZR3dCeExSK0k4M1lzS1BNT1lEVExGTmhjcnRpbU1Lc3JBRTlLazFCOS9xREIyRHJkdkFqTEFBS3plQW11dHFjWVl5Q2tOZmw0TXNTc0FGZlBxTkI4MEFwOEp5WU1hUEdVV0JHTkJlWklVeDloWCtEUDRMeVZZbjRYQTQwbjd0MkF3TW1aN3BkMzRWUjgxc1FQTDExT1FvekVWNDhBSXZISzhhQjZBS1lDbmU4a2NIaGhKUjRtY0FyT1JlWlREWVFJMkk1SWJVdys5UUR3R3hHTHVHcmpZdXhoalZmUlVzZTJqQTVPbGZWdHdtd2VBU2NFMVJWaXN5cVhxVUJxOHZoM3dJRjA3cENHRXVrZndwZEdEUlFCcmwycHNVRG9SMnhFS0xMSkc0a3Z3eU1rdkFqRnd2VktuNGNtVWVUSDhFR2NiZ2FjVTI5UHVSVE1BMnhTS0ltQTJjdUQ1U2M2eDd5akRhOWRiTzgyU0tVRGFRdkYyZ014d2haRWd4SFRJVHdHcWtuVHdJQ3g4ZUliT1BmNjhSajJ4TFJRaEk1R1pnYW1lTjROeFQ5NEFCSXNCbUY4VnoxZ0V3clkyUGxZeUJLK0ltSU9sMkpkWVJwendIQXZURmh6TGlLMnhUcUZ2UkJIVWlneFc5ZW9Ib0dZRTZyVDNXTG9UcU1JVmpmNFpQWFZsM1NPdzVLRGZQT1VFRDIyUjEwWkM1aW1Bd2NWOUFDelRkNnczV2Fvand4R096bmNzQWdVVTU4TkVNZ0pHRUlqRWxFN3ZRRVFQdzd3Znk4MmxxeHh2Uk1EZ1dCeXlNeGNEQUs2dVBDK0lldUY2WWRuWmhBNXloU1JTdTVpeEN1VkNIVFd4SDBreUZIYlhoYVloRWgrcGdrNXZJZVNCRCtPUHJQcUN3WkpuQy92c2ZNTU1vS0I5Wk1ZS3lIUmd6eVpqWlUwOHF1U0tJV3ZJM0lScmE5dmdJUWFpTmZjaWF2b0t6TUl3eWVpaTZRaHQyMGNBQ0tJeVlTaU5BdGtLUmN4bGpvMTRDUVZjaGs4aTRaTEpEQ0dGMzE0T3RSRXY1WXVJL2VZUVFQcVBzS1QxNzBOSTRIZ0owRy9YSmxBcTg1U05iMkJKS0RZVms3UjY0aGg4VzZzS2RUd0Q4TUhqNHVFUHdmb3M1b3hOOVVuZi90VzJkZWNlTzdPaVBSWE84UkhZNVBFNkRkUThZb3JqZytLc0liTUI1SEw2VUtnWVpOUkJ1RitneXVwOVA0MWhNd0RhcVE3WkdSNEp4T1JvQXZJcVlBV1BJSUJuN2tabW9PRnpxZ2piVHduQlV3aVFPcERHS2FDbVcyZ3R5bFhHOXdIc0oxb1lWUndlVkltZzd1N1ljQ1dtWUVaSGtTRlRSSTNSRTQvdzdkTWhOcmhVbW53U29FeWR0VEE4c2NxVXIycEdQenl5RUJ6UlZuWmVWbm5zUk0xZ29XdC9hbzRoZ0NYMmhSZ3p5cXpNamJScGFIZUZ1WCtNd1BkRmFEcERaTXpxQXd3UitmUVU0QTFBaGFyd1lQNU1lK1p2T3VWN1NZbkFWSVpDZVprQ0k4QlYybVZTSUdnR0lCUmNCa2IveUZVQTE5TmVzSW9qY3dLSmdvZUlVVkNCcCtRck1VTGU1cUVlRGpGNmFIZzNya3JTL0dGcDFnZGFXNkZpSDVSTGhYU090T2lwVDdZNFZWUGpSelJLdXYzTGJ3eWR1OUJ3UDNoK3haVzFyNXdiWW1DM29LYko4eEFWQ0lYSkttY0xuUUF6WUpUZGFMUWxTUGNCVExkNDJYNkJLZ095aEluRmoxRGw2VWhVUGpEeGlMaW9SeWlTaFhrQ3ZBQUNRQmUyQUJRR0huK2E4QlhieUJhZWh0WUlLSWhkUytnRVFuWWZRQVJNZ0ZZbVBCQUthUk0rR2ZKVzdEMUdWYThNamZOQ2lkNDBZWmMyWHgxWjFKcytGeGVidHMydHFRNndUakY5Qzc5L3ZDdmlWa2JjRGgyNW1JbkdScHdjdnI4VGVyZGhtNzRBL21WdENUdXZoMENqZWhnVS82eGo4Q284OUFOMFpDVVAzVHBraFpZdFpEYUF1bFpaZXVQS0hsZWh1SDdCR09NVUR5VnRoS0pWQmQ2TEk1OG9IeUg2S3V1UVpHSXg2ejV6L1lxTm5uck5Rczl1aFFhalFCQUl3UzhDOVlVUWVRQXpBQTFoM1JTMmUrU01Fc05wZUNWTzFkbWZDVi93YW0rdVY0cmZNVmwwZS9UaFNyNXJlTzVpM1MxSUNSTXlodDA3Q25xQlF3OW16aGZjV2Yza0Mvc2Q2UU9OazM0bzB6blBlOXlDVWdJdVF6QStsRmFNcDRFMzBpT2lQejJaZCtjdk50dzNubHdPM3owVXAvQ3A5Z1lIdllDR21LYVNRVXZ2SHdicGhzb0Jvc3dHa05OZWE2TVA1Y2hGRDBJb3hRc0hhSm1uSXZMSlpTQjVzV3RYQVNZOTBLbFF3V1NoazFlUU5RK2VBQmd2TU9DUUozbmZ5dU9EQm04SE0wV1lWQlN6a1BRZUlBaFNlUzlNbjRjU1c3QzM2TjNCSzdVTFo3czIxeDA4dXVUKzh1Q2lPM3l1WVFiRlY4Y083Q3k1dDl3MDRnN3MwZXRtNHlWMzVIVGV6Y2hOODk2Qjc0ZG5LdmFEYm5XR2RBRzlGR1Y0Q1FlL0lUQzFwZWgyYW92M0gzMXJ3WjI5eU9objZ6MS93Y3d4Z2hSUzB0U1lBWmhFVTVVREpMTWFRSzZoSFpkYXJEQXdiZTdwUllOdUpxWklKdlNiTWtZcGJSUGxteEY0a0k2T0FhZUNPSEpSTmtRUnFrMEZJYmJPQTZzRXl1ZW82NU81K25xNkZsVXFsREhrNVM2WXk2T2d1ZGVPZ1VDUEJlS0loTHhIVzYrdTNaSFRieFkxM0NlL2ZkRjkrOWxsNGNwcmk3YW1BTUd5UmV2aFl3MzMvWk1YM1J1dUs3bTMvY1NvdS9uS2dqc3NJemloWHdCYldKWlFSQnorOE1aZStjb290Tk5RYkFmNHNVNnFSVm56L283SmtydE9QRHp3OUpMN3hoTkx1Z29JeWxkZjZDZXRPZkF3NUFtZWdwVTNtendGeXhpeUdvQkdZcjJoaFV2VDNCYW5IaUVwRlhjSUQ5Y0tveWlkQTdiYkM2b2dJT3RKMHJKRCtSZ0J5b2NjaG1EWHdJcTVFV0kzUXlRTmd3bjRXUXZZSXBGRzBKZllPTXdBUUtJcEFwNHF1dFRhcnJlR3I5cVpkM3YwR2J0SG5xdTV6OXcvNzA3UHQ3UUhyeHkyWS90Mm5pSFJsNUsvL25UVFBYVm13YjNqdFNQdTVWY1U5QjVpeVQxN3FtbUx0cHAwWUYxSitoT05RWFFUZFpIeUJzaFVoS0ozYlMyNEczZm4zYkhUZGZjbjl5OXFmMS9KakMrbmkzdTJoZHNESXNGYUsvRWVBeW5lYnRabUVkMHQ0aUk5Vzhoc0FGV05oUzBUcnFIWDdiUm5iZTJIa0ZoK2VhVm9iNjBnRDBabm5BSzhCNGdHc1pwcEZLcmVlZzlBVW1uekFrcWpReGE4MkpKdENoRXNYZ0hjMEZnSkJzRG94LzJiRWFvT0E4QVFHTlVUZW5tVVViOS9TdkI2YmZ2T2g1cnVPMGRVVzVwd3U2ZTgwZHJpVW5neGxpU29VN0Myb1BYV0hRODY5OU5uVys2MkEzcXo1K3E4ZStaTTNwMDgxM1FYRnYyMEFDOSs5Q2V0MjNuaDVPUFdFL0krKzlqOE9aMXp4ODgyM1I4Slo2RTY0YVprblBRcHI2bkpYaFZVR2paU25CaFM4bHYxMHVuRW1Hdk0xZlZDNUdxUU52RWVxY3dHTURzN3UrSm1tbzJGSlMySUZ2b2JIR0pDaVV0YWtaM2ZwaEhaOHU4dGVRK2d2S1NEOHBDbXJhWlhNZWZiVTJ3ZFIvQUlRQWVDeFF0d2NFbG84N3ZTZmhFb281TjExcE54ai92VVRsdEpzNklGRm91NW5Wdnk3a3J4cEduY1Bmak1rdnVMaHpUcTlVdm9yUHlaS3BaMStCRW5neEJCT3dKL0tKUyt3WDlEbmZtc0RPZUJwNXo3aFZkWE5DV1UzVjR0NEk3TjV0Mlo4eGdDM3dPZ244RFRFZkVxcGFQNEVWM203WmdvdUd2azhuZG94WC92b1VYM3B3OHU2aTRtbTBIenJpWWVDdlpTcTNnUVBIMmcvK2pYb3NBUG1lMGpSVGQvc1ZWZm1iSGZES1JHWEE0V3NoaUFJVjJhT2JuY3FqZHI1c0pOLy8xb0lTWnhvbzZmWDlDSEcyV2I2cE1wandvRWlTSkRyNHhiV3JRNzU2Y044b0RSYmRxWU1VaVFwZ2psaWUwVE1LRytvR3ZtbTY2YWtDRDlPa0EvY0dMWDFhUGFWclZWaTZ2dE9pRDgrUEVsZDk5ekJmZlk4YnFyNlkwYTNEQ2JMdm1EbG0wb2tTZXhxd1hvV0NsOFdNYjRWZ3ZickhGeXR1aysrdGVMN3FZOU5mZm1sNWZkeTNacExwL1NBbkV4NytiMFRZQkZmZExlREYrZFlhN254ekg1YVZ4KzRlZllHVTA3OXl5Nmg0K3VtS3N2cXQ2clcveEw0Mlk0aXJrdkVrTTdoVHlBbGd5YWpaVUxGMDVrZmpjb2l3RVkvZnFwN3k3cmQrcVdVQXlFK3dWVGtDcHh2eWNrb0JmbVdtNUsxbzRWZS9ldlJKQ2xhVmluS09SdW5QUWR4Uk44T3VCUm5nc2ZWdlFhTkJLdWM4K2QwdnlwZDZTdTJWcDFaYTNjY1o4WVhrM1RJNWR1MzNtODdoNDl1dXlPempUZDVNUzQ1bm90dExTWEtzL05GZ0dhUUVWTU4xV2tDS09ZT3Z1ODl3amV3RTFadG1VcnA3dDJUWGZ3eEtLOHk1SjcxYjZpdTM1WDBVM3J4N0RLOGdwNERBSmVneW5pMGFmMTFzK1JtdnVCM3Y3aHhsVkZmRURmNW5zV3NDbGpOS3JXWEh3Rk9WQkdFWk13TTdFVzVrc3p6enlZTmdCUEVNQTFRbVlEbUh2NjNxVTlqY1ljaktEa3ZrRjE4Q3FEZHFmMW84bDNINnk3ZjMxYlNVTFhyNDJkbzYzdmlhR3dFM2t2MUY0NDR3Q0FMdW13dnZNME5FK082NWRIZVhMMk8xK1ljOTg3V25QYnRpekp6UlpOcUEydDV2bWwwd1hWczA3Z0lRc2p2aXFyNFlaTzNaUXZRMER4T3BqeitiTmd2UFhrU0lYQXc3Tk1GNXhoNzk1UnJRTU9uNjVKbWN0dVFudTZkMjRiZHd2ekYwUmJENnIwNnJmZVhyY0hWdERodHdOSGRiUEozRHhLTnlQMGhwaHdrY2pIS3oxeVE3R2EyR2R1dElOdzd2Z0QzeFRtYkdGUUE0Q1dGOFhDd25LdXVYSTZyNWFpM2Q4SUJHME5kRUxnZjNqUGlrWkYzcjN5V3UzUGtjVmYxTXVsOGJjbkFtWmhDMEx2MlFkUEhnakp6U0NGMXR3N1B6bXJBZTkrNzB2bjNhTzZWTXRYeXZvZVQwRS8xZTZWeWJ6TDVSNGV3b1JxQ0h3Wkk3aWd6WVB4NVV2ckUxQ2VYT0FrRUNRWE82VWtzSHdJS3JhQk1hYWpBb1lnMThQY3Z5d2U1cVNXbVFzcWt3RUFqZUpIOWYza2FIQVdpejhiOWFvajd6blZPYzBIeGVtODBnV05zS3JXTWtWWGYrSDAvTHdlRzFsSVE0V2kzdEdnQmhCYmcxanovL0pSZUVTWW5ZODNJNWppaEFWOUdsWEE1M1JwOWNIUExMcjN2Nm5zM25pamJxUm9FY1pUMjdRWFNaclFYQm1UUTRJU2F1MUEybGJIaWwrWXJidmYvZnk4KzlQdnpMdWlsRi9rMnQxR05RcVJhelZtUTJ0Rk9IY3VFekVLNWlUdmJzSHZZUkE2dkZnK05HdjNCeDVvSnkra1UyaGh2TnFpVkhqdHp4YW5ZZEVuS2ZQNWwyYjZKMzNVME9DQUQveVpJVVM2TUpBRUEvWk1KV1ZLQ0lZSFJoaEF2clYwVENXOEc5TFJNZzNlSzcwUkEyZzF6NTk3TmpjMUxYd1lnQmRCTjNLRXFOcFFyTkVuTjMxR28rRFg3bHAwMTA0dHVldW44MjZiRm1SY3cxcVF4aU0wcTk5eXVheFgwT1VtVWlGTmlVVTFpNnNUK3ZIS3g0NnZDSGRUcTN4K2lWTUtsMlg0YTJjaFoyVHhoNUJEaUdrTUEvWnRWRklYR1RDNHNPcnVLQXNJUXVSSFp4c0FPdkJGOERSa0lLTEJPZ2lEYk11akRXTmNKYnpCaVVLQ0V2NEMzMG1aYjJ0Z0ttTlJ5UWV3YWhkbUQ2dU1aVG1RUGFCcHNUcGtNUUNRV3Y5V3poNTVzclQ5WlEzZGU5Ymo5dGpsMWNqVHhzRUtHeGZjbENBT24ybTZKL1MrR3dzaUhpMmFGeEYyNDFxR1VDcVYzUGhFeWMzTWRCcEFKd1hFTFVHYmF5KzRNVjBLMlNxZWVWVEd4bHhxcjFKSmdBWVo1QWdPa294ZGowR3BZTVFKU0VoMHVGOGFyZ29BNmdodURQNHBpWDRCLzQyM3dkRjRYcXlIQ1JaZ2FSSGhJejFmVHBVNDdHeGlMZUtKS3RZUGxWeXpjZkhja1NkRGVYK0Z4SWFwT0lzQjBNeVExNDdkOTFSbC84K2VMaFRLdTJzMjYvVG0wdHk0R3BtZ0JlTG5PRndXSDJyMGN5U3JZeHY3aGtJcERFQ1dNajZpS1dKSkUyVlhTSVJqNWNyWnZ5aG82TVE1bERtZkFrYWYwVTRhSlFtek5vUnJBbFpNeCtKZ0UwTUtkaklxZzU3YS9ZMHRSRDBnWld4M2U0QUVLa1dxazQ5VVJRUU9NVFY0bGtsNTBYS3VmdnI0RS9mcGJnVFN5TVo0VmdNd2pvNy8xVzgvZjhQcmZ2bnhRckdzbTVmcVZoZ0JnYmNrTW5FbmZUQlZtSklZRjF5LzhiS0dGdWhpR2NYVHpNZDgxY3QvMFhNOTloQ3dtdW5rSTUxSiswS1ZkYnJVaEJWUHlrUmxSZ0NLV0VhOHdXQTRZdHRBTEJwWmpHTjF6eGoycWVoZ3RDZWt3WENacXdzTVYyd3UvK0N2UC8zZlRnYklRVm9uU05lVGNBS29CSWc1WktUemk2MExwNzVSM0xIbFo3RkNMcTM2aHNDT1diWjFENlhveG9pdHZGVkp2WG90MVJzS0RJRzdkaXpRQ2dOdGN2UEtwN0VmOGVBS3F2QW9EUzlGb2RUeXBDMHZtR2dFSG5ENDU0Zy9UYjhubFRTL1BRRlNoWUtkckdvZEpRTlltVC8xallzWHVhNHlSd2FXZ1RIWm1pT0ZkcjBraUcyaGNlSFE1NzZhYnpSbVdISGJIU3ZWb0x6dUE4WFR5QVN1aEJlR2xLc1N2RWY4MDR5ZCtsT2REQ3RkMGovdE1YajRnQzJoNDJrYkQxMjgyWDBaR09zcTcrWi9HUGxoMDRCM0J0NU83VmtZTHpabWpqend4YStvSjRTNENQUzVBYzVaRFNBU2NTZS85QjhPTlJmUC9KK0tyci90STBaaUtycTVkTXlsVVRwUDJpekN5cjBScEEwQkZXSXU4UnhVbWhoS2Q1NjIxcDZGWE1EZFRhOFhENUdQYnRnZmlyd3Nlb3QyRGUzVGhWaGgrZXlYUC8vN0h6Z1VwSXF0WndwWkRRQVJRNFRyelpVTGozM3VVOW9nTXNmREMxYlM2NDRXTlVycHZ5T3RxblpsT3QydkFlVUthMVd2eHcrTjE0TzUxUHFoMDVEMHVhUytRazhzZDFRYmM4Y2UvTklkRWdQNjBOT1daQXBRY3JDUTFRREFpc3doMWpqeGhYL3pTSFB1eUIrYkY5RENiVzF0aEpacmFVd2doRGdLZlc2TjgxcTRma1RyOEl3N0ovVVllNDhTRjQ3OXIvLzlPLy95RWFXaVRvZ3poWTBhQUhPTldkM3ByL3pLeDNPMStlOVZkUysreU1KT0xBempvQmZEd0xNV0RzUm1VODJRZU81RmE1ZzB3TFZOanhCZmRwV2VLQmJtdi9lMU8zN2w0eEpUMUFXZVdSRFp3a1lNQUFvUXNtbGc1bnQzblZ3ODlNVmZMK1hyNXlyNm5BazNZRGJEOENYQVZNUVgwQTljS2ZlL3RYN3V4S05mL1BWSHYvN25YUHFaSGhSblZqNWNibFJiRU1QaXVBM1VmUGJPdDkrM2VPeWVENVhMamVVS24ybmZOQUtKWlhnQllVOXEwWGZneXJ5N2ZrOXo2ZnpoZXo3MEovLzU3ZmVxT05HQjBpK3FBZEE3Q0xJVzRCRms0L0FuMy9Ubnl5Y2YrbENsMGx5dWlsbnU1MitHUzVOQTFDajdGbDkrVGQ3ZHNMZTV2SGo4dXgvNkh4OTgwNTNJWElmSlhuRUV6VXh3R0ZxQ09FZGg1cUZQSE55eS83WmpsZTFYL0wxOHFUaWlyYU5hWldmbmpSOTlMdXNlOTVKZWk3NmNvYUpkUXJESFBnSzdlWGdaaUhGenFxb2JOc3Q2cVdSUVVaakVkT0xxYXMrMm9udkYvcHk3WmtvYnZwNzcxcTkrL04rOS9qTmlFN2VQOHMwREs4NHVaRFVpRE5NQTBGWis1dUU3RG8xT0hYaTR1dk82RzR2VnltNW1tZlJESWFPNnp1bkgxUUNpZ2JBdGJLdEcvYlY3dGIxdHYzUFRvL09QSEhuZ3ovNzlwLzdqMis2VzZGQStkLzB1V2Ztb1lSZ0dBQjRza01PTVlPNzdkNTJvblQ3MHRkRjlyMm1XeHladktGVUxlcm1KNVVaNDhyV092ZjZvRzRCMVB5MERYWXB3NjdzaXI3ZE5pcjk2Rnk0LzU2N2FYajlmbkgvbUQ3NzZzZmQvNkt1Zi9xM3ZTNEJSK2NTWjcvcXB6YXJBVmRDd0FyZ3dLSjR2NlA2Z0hhVXJmdTUzWHpWeDh6OTdWNjQ2L1pabXZyU05id3cxeEQ2dm1QTVJaS1lJTzlTQXl5aHVjL0tKMURFSllsWWJQUzVYWUxSTmFGZHVRMXVKRi9qcy9RWWxrZFpqbWxlUFRtWXZ1OSt5cGVET2E1ZXc3UWhTQlE4clViajJpTmk3Q2FQYUlUeWhwM3BiSjdWWlZQZjJ4MHYxYzduRlUzLzU5TDEvOXNlZi85Z0hIaFZlRk01K1A5dythUVphUDlLcUdqeHNzTnQ5Q1lDUG9ZNFI4Q3lYdmVDa0s5TnYvazh2bTd6aDUyOHJUbDc5dWx4cDdJWm1yaklsU0Y3ZmwyRFVtM0NRNXFQSC9DSUp2NnpWM2MyaDlCcTBRc1QrUkF4eVVXSkZLUndZQXAyd3g4dkVNWitPQWFDT0k1U1RpZWtrbGlSUThxUVVPNjl0NXhnREd6Z3hjRzFjc2w5ZVlUT0hkcU0zS3JtbE0vbkd3cUhsMlNQZmV1YkJMMzd0N2ovNHRTZUVIcVhIeFI0dW54R0JDSVlsQnV1RDhBMDFtRnlFc2RzUThBNlVqZTI4OVgyN1I2NTgvZjdTanV1dkswenN1aXBmSEwyaTVUQ0kwcVMwVU5FQ3NEUTJrUy9PenVCUndvTjlQVGptT1lBOEJQZ3ZQV0FBVWd5ZWlHM2hLSW90WnNraEtpZ3M1akVPMGhZcmpZR1FqdVZLMnErRGFmMnFUVHhpVXA4bjEzY09Xc1ZpcXprKzZocUxDL3BOajJaVFB5ZlpXczQzVjg3bjNQS1pYSFBoK09Mc3FTTnpKNTk2K3RTVDl6NTl6MTBmUFNVMCtoRVpVenFLeHdBWThTZytqdnFoS1Y4NGh5Uk1NSzBPeUlRRHhYUEkxczBiRUV0OEZ0SjFsZEc5cjZsV2QreXY1TWVueXFPVE8wcTFsVktwVlJ6UjFuNkpucGZmc1FFZWd4SDQrYzFMRENNYWhValpuOFFrUnFCc3ZJS05lUW9qb3pGTnN3Uk9hVzFHc1I4bktHb25xTDc0clgwdWN2aThTTnRZYkpSMG5URi80ZXpLeFhObmF1ZFBIMTQ2K2RTRHk5cElnM0xqUWc0MlVDeEtSdGxSNlpkTjhhSmg0WktGR0JHdEVVT0RBNlhISThxVE9KWkZ1RFJQNmJSQWYyZ0N5a3p6bmg2MXBPT0J3cVBTaVRHRVdFWWM0WlM4UENITjVPV2gwTVlhYVJHbkR3d2c1b0dPZWRLRTJNN25mdmpPM2NxUGlxVW5NUjBWSFdQcTB1M0lYNWJ3dHlYY2JycnBmRHBOcDd2emwwVVFseEZwdHlMVCtYUWFGcnJ6bDVFdGovcWxLdHlYS2wrWHFwQVhYY0dYeXZCbSswMEpiRXBnVXdLYkV0aVV3S1lFTmlXd0tZRk5DV3hLWUZNQ214TFlsTUNtQkg1MEpQRC9BYVVjdVE1N1EyS0lBQUFBQUVsRlRrU3VRbUNDaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBRUFDQVlBQUFCY2NxaG1BQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFlR1ZZU1daTlRRQXFBQUFBQ0FBRUFSb0FCUUFBQUFFQUFBQStBUnNBQlFBQUFBRUFBQUJHQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQk9BQUFBQUFBQUFKQUFBQUFCQUFBQWtBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUJBS0FEQUFRQUFBQUJBQUFCQUFBQUFBQzFaNkxvQUFBQUNYQklXWE1BQUJZbEFBQVdKUUZKVWlUd0FBQUJuV2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2w2d0hoc0FBRUFBU1VSQlZIZ0I3TDE3dEc5TFZ0ZTNmdnQ5bnZmOTZOdjMzbjdjaGdhYTdzWldCSU5nVkh3Z3daWVlEUWl0S01NWGYraUl3YUFSa1dIVWtXaFFFOGVBa0JBRDBhQXlJc0pBVVFNa21nd0lBU0tTRmtUZ2RqZmR0Mi9mUjkvWGVaLzl6UGZ6blRWcjFWcjd0OC9aZTUvOSs1MTltbC90dlZiTm1uUFdyRGxuVmMycXRYN3J0MzVkdDBnTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhjRGM4TUxrYmpkNGpiUzU4YzQ5MDFCSFUzRHNDNzY4STFsK3Bnenp0WmtBa2ZKUU9QMDZkbzhoZjhCN1BBOGVaNE8wWU9FNzk0Mmw2U21yOVNocklCOWs2eG8vTGJWZmRpdGJ5TGVDNzY0R0RKdkkwL0RRYzJoK0V2N3VXblhEckt5Y3M3elNJWTVMU2VkTW1hNHRMT0hOMFB3Z2UweWhuYXVza2JwSFB6d01IVGRScCtNUmxqcFlId2EwRjhORFBMVzlMdjJmaFQ2WEJPODJXeEpHM01CM1dsaE1HVHlkblIrODJjT0xneVpUMU1oL2pzN3pJVDhZRDR6N0ljdVp0SzlrbjVPTUR2cXpUNWkwOGpRZGNwdVROOGoyWnA1UHVTZVVicFZzN0VoNTNlb3VuODVqY09jR1hCSysrKzkzdjN2aThyLzdxY3crKzVkTXVuSC8wa1lzWDdyL3ZRbmRtNCtMeSt0bnp5MHZMNTFmWFY4NnVyNjJjMmR5YmJHeHVkZXRMeTh1cjNXUnBWWFZYOWlaN0t4SzYzSFZMUzhxWDl2WjJrVG5aNjVZbTNkN2VaSmRzZDg4NlpPT2l4eWdVQWtWSSsyZ2lwSkxRQjdDWWs5KzVpRm0yTEJXUzN6a25wUjBkeTlMMHpKbXUyMUxoeXJWU3I2bS9ONlZ1eXJvVnpUeXFTeHVHZGNwNnU4THJmejllT0dTNmpwajNsaVp5MzU3NGxBc1FYbzViMmhYUDd1N2U3dTVrMHUzSXBkdVN0TDIzMjIxMXV6dGI5OTNYM1Z5ZTdOMTQvZFh0NjV1YjI5ZjJkbmV1VEc1ZXU3SjM4OGFsM1V0dlhONTU1ZVZMTnovMGk1ZDMvc1hmdmZyR0J6OTRRMDF1RlZYb0UvcksvYVVjRmZNUVdHRndwTXpIc0luMzJpa254YjJtTi9xMnVpZE1QdTJnMHpSZ25OYS83bHYrMGtPZjl1dC95NU5uSG4vaW1kV3o1NTlaV2xsN1c3ZXkrcVFHM0dPN1M4c1BhT3hkRUh4R2xWWTdYU1F4YlRsV05kV1o3ZGQxM05Ud1FTaURHaUFIT2JEeFFpZGNXTUI0b0dlWmZCK1BrQzE5R2crVHBmSUl5TGFuNGJQTmxnZVlBSEQrZkFTQVM1ZDd2UWFUdExTVE9OcE1PSFByMGVpUStKcGo0a2pPbUdiZGtxZnc3OE1KZjJCUzM5ei9RTmowK3F2cWFQVTBiZG94UkpXOWJtdXYyN3V1L1BKa2IrYzFSWklYSjl0YnorMXViWDU0OStxVlovZGVmZjdaNnovK1E4KzkrdGUvOFJWeDN5enR5RU1PQ2tnNjZDaXNwaWQ4VCtWTWxuc3R0VG9ubk5HYmNoNTBQY2ZaYi82KzczdjZ6ZTk5MzN2WEgzencxKzR0cmIxUGsvd2QyOTNTbzN0cjNjcTJ1RGMxMmpZMWFHN3FZRVhrMkJadWgwTmR6N0VyZUhXajY5YldGUUFVQWE2emhpZ0pIYjB2bm5hVVFQTWdCRkJLV3NJZ3dOV3lBUE1VNUQ1YWc2ODBBY0NITHNOYjZpd3JzRjI0SUZzVnlCd0FVbzdvMkVSSzNuSFpiUlk1aHMzYytFSmxKam5KZFFXM01pb3NlcmFSY2dabElZdVltbHZvbEZNR2dOZGVpMzZEeFFOQko4dlFDTkhPd1ZONm9xazlLU05tSW1WMk43dnR5ZDd1UzVOdTl4ZjN0bS8rOU43cnIvN0UxaS8rcTU5NTRZLzlybytxaHZaSERnVGNMMHMxTVNGaGdRUDFVbVh3cHo3aGtuc2x0Ym9tbkJNL2Myelplc2M3SGp6M0o3NzNYL3lxQjU5Nnl4ZnZyWjM1amR0TEs1Kzlzeks1YjFPMXJtNnFSM1ZjMThDL29RbnZ5YS91Wk1KdmthdjdPQWFUWDBJcHJ5c0FiR2piZkZWRDRocmJaclFRTHowdWNwOEtEbnlic3N3Z0wxVXJHVnJTS3pKeGhkRFNCM0JEYi9ISXlRbVZNcUZ6ckdnNDMzY3hBc0FibC9xMnN6NzFTRmxPdUpWWGFRWEFCeFVIWEFwa0EzeWhKUzV6b1FkMVhBYW5ZK3d2YUNUd0hHMEFvQy9CWmZMRXI0VkNLeFVaT0V4dmdzS1NmRExod0pDdHZUZDBoZkZ2OW01ZS96LzJYdmpsSDM3dWEvNzluKzVlZmZXS0tHd0NxWjNtWmo0d1EvUjdJclYrT3MwS3QzcVdycXZYYkd6VmNQNzJuL3oyYjMvaWZWLyt1OSsvZk9HKzM3ZlpMWC91MXRwaytaSTJkSmUxV2pQeHIydGx2OUVjVFA2YktwTXphSnhMa2xkLzVUdGF4a1QyYWtZQU9IT1dZOUpkdnJLbkFDQUdORkVtVXA5VTFyK1BIcmtmZ3VlNEtaM1J5OUFHdHk4VXNja1Z4UUZaaFJVTjQvc2ZXUElPNEkzWHNmTGdsSFVuTWpoZ25SMzlwdGVSTm9VUU9neEx2Vzk2dm1BUHZxSGViUXN0SldVbS9RSFpzcUtSOE5wcjZqTnQyU1psMXNNSEdIVURxR1dLUWVCT2pabE1FN3hFUUZpTG9MQjNjMjluYVcvbkovZXV2dkhkbC8vNVAveisxNzc1ajM1YzNPd0lxRVgzMDB6bXJXb3RMSmJUbDRyNXAwK3hScVBVa1R3UEFuZXUrcHQvNXU5OHo5cysrei80Ylg5Zzc4ejUzNys1dXZUMDY1cjByMnFGdnF4SmYxV3IvRldONyt2S0NRQ1pFd2h1YXFDdzZtOHFaOVhuTHBPMys4cmRjenBsRDdLbFBYZCtxVHQzYnFtN2NtVzN1M1pWZHdsU3MwYlpld0tVTFN1ckV3V0E1VzVUVjhlWGJoTUE3Z1V6c1dWNWVkSzkvdHFPQTBEMkEvM1g2eThvL3BVVHppQXFCMWR6b3dwT2c0emRnWTVsWGZwNWg3QzUrOUhkYTFmKzU1cy8vcjkvNTB0LzRzcy9JZ25zQ0VnRWdEWUk1TkRKM0V5bjdXUWZuRGFsR24xU1AvS2M4T1NzK2x0Zi9aZi84c08vOVk5KzNkY3VuYi80eDIrc0xUM3hzalpvcjJqaXY4RjFyWTdMT3E1d2FQSmYwd3lQSFlBbXZXYTViaVBYRzFwTmV3YXowUmJQQ3Zzck5RQzBmaml0OEVFQjRORDZFZ1dVSWhEb013Y0NBcE5mYUlJQU93UUhBdTBLQ0FiYUxqNC91WHpwMjY1OTcvL3dIUy8vdGYvc2s4SVFDRElJdElGQTZMcU9BSitxTkcyc254WUZVemNtUEFmbDNPNVB2dVBESDMzLzJUZTk2UnR2cksyODYwVk4vSmMxOFYvWGl2K2FqamQwQUYvYTNOTU9ZRS9iZmsxNExlSDBTcVlVbnVYYjVZc0FjRHNQM1YzNkhRZUFzZm9FQVA0MDh6TVlPQkFRREhRczEwQ3cvYk43TDN6aUwzM3NpNS8rdmlLQ29jVTFWUWFCZHRpZHV0MEFFK3UwSlJ5WUIvcmx3VFhYOXAvNW51OTU4bis1Zk8wN1ZwNTQ2dSs5c0x2eXJwOS91ZXQrNmZXdSs3Q0N3TFA2T091WGRFUHJGeS90ZGgrNXZOTzlxQ1gvc3ZiNFc1cjhlRDZGa2kvU3dnTzM5QUNYZ1hySVlIZG5wOXZtMEkyaGJTMG1mTVRJc2FYN1Nwc2FiN3VUbFhkTjN2VFUzM3ZMVDEvN2prZi8yMy8wWnNrVTFmY0hXS3h5N09hUXkveVdUYytUZU5vVVNuM0kwM21aYjMvYnYvdWxMNzN2clcvOXI2K3NMTC85T1UzNlQ2b1RQcW5yZmVlQ1g3dTUyMTJtazdoZ1YwcGhMdHpoYWJFRHVFTUh6cmo2aWU4QUR0QjNvdVYvU2NleVJxVjNCSnJtUEZPeGNrN2piWFBuUXpzZis4alhQL2NsNy9qSHFwNlhCTzF1SUhjQW1SL1F5dnpRVEs3VGtuSyt0cE9mS0RwNVdENytyaGRmK2M4dnZQMlp2Ly9penZMYmYwR3Iva2UwNHJQcWYwaFIrTmxMZTkzSGRLZnZOZDNHWjZ1UGdCUjJXb3hiNlBHcDRRRTlpTmp0Yk85MFcrd0lOTFYzMkJIb1BoTzdnWjNKOHR1WDMvck0zMy82UjEvNWM3S1d1Y1V3Wk9lYXU0RWNscG1MZEhmVGFRa0E2UkJ5ZE9MQWNkMVgvc2svZWZHL2VmM0tmOWM5OHVCZitPV3IzZHF6V3ZtVk93Qjg2UEtldC9xdjZMTTh0dmtwaEhxTHRQREE3RHlneXdNRmdtMEhBdTA0U3lEWTBnTmkyNXZkR21QMUxUOTE1ZHZQZitEcjlhaVZyejR6QUdSUVFMVlRNVnhSN0c2bmRNUjQ4dS85c2IveE54NzdMWC82ejM3WHpmTm4zdjloUGVMNW5DYit4M1d6aitOalYvZTZWL1JaSGgvalVUR0Z6TktZdGJWSng3R3BtNHRiK3ZpczNEaWVaWk16azcya2o4dzJ6aXo1QWFlYk4wN05qdlRZOW1MTGttN1kzWkF0WEs3TksrbkxDcVU5alVDMVM5dDhlV0hwNHRxN3o3enZON3h2OHZEalAzTGovL3BCN1ZXOXFJM1Ztc2V3SGJjNUtOL3RBSkFPSUNjNm9nOHIvOTZmL3ZidmZPTFgvYUUvOU4zWE50YS82RmxOL284cnVqTHhueU1BNkRQNFM4eDhwUlRnd294UGl3QXdZd2ZmZ2ZpN0ZRQ3NzbVk5ejVDMFM5R2VMZ3VXejYrOGZlUFRQK2Z6Tjk3eW1UOTA5VWUrVnhjSlU0UEFIVmg5NTFWUFF3REl5ViszL2F6OHYrNFBmdTEzWDlsWSsveG45UWxydStwLzR0cXVQOWFiNThSUE55OENRSHJpOU9WM05RQVVkM2oxMXhPUy9Ia1RvaUN3ZEg3NXlkVzNmc2JuVFI1NjdKOXBKNkE5N09rS0FuY3pBRENIeDVOLzhudSs3dXN1L3JaditIUGZkZTNzK2hjK3ErOW01Y3IvVVczNVg3d1JIK25kamNsUEh5OENBRjQ0bmVrMEJBQTg0MHNDaDRBK0NFd1VCRGJlOFo3M2JMLzYyai9aK3JtZjFCTXFIdmRtcDBwVEJqZlh4S3A3TjFMTzRRd0FCS0tsQng1NFlPWEwvb3YvNm0vY1BMZnhtejZrbGYvNWNyMy9VVDE3LzVJKzArZmp2YXg0TjVSZXRMbnd3R0U4NEdjSDlISDBydTRGY0lOd216c0FGelorMDhOZi8xZi9ldmZnZzF6aU11L2FBN0YzWldqZmpRQ1FocllPSUFEcy9QVVAvdngvMmoxdy9pcytvbXYrVCtoei9lZDEzYy9OdnBkMXM0OW45TE1pM2xxa2hRZE9zd2QyTmZ1M2VRS1ZUd2gwYkNrSTdEMXc3aXVmK3Q1LysvWFNXNWpUOGZIZ3ZBTkF6bUh5REFCRXhPMi8rYTkrNW5lc1B2Ym9OM3hNVC9KOVFoUC9FNzdacDBkOEY1TmY3bG1rZTlFRDdBVDRacUtEZ0o0WDJORzRYbnIwMFc5NDB6LzZtUytWUFR3eDZKMnZjdVpDT3pkVW5FK2Fad0JvRFV5RGZRL2lqLy9OYjMzTHc1LzVybTk1YWF0YlkrSy9JRWV4L1g5Ums1K3Y1bWJGK2JoazBjckNBeWZuZ1YwZUhOSjY3OHNCM1JSVVBGaGJlL3U3dnVYaGIvN3ZueTZ0NUVLWWMrTGtHaitFcEhrR2dGU0grY3pCNU9lWWZONVhmZFZmdkw2Ky9KYm50ZnEvcU1sUEFIangrcTYvcHJ1WS9QTFFJdDI3SHRCSEF6dmVDWlFnb0V2YjNUUExiem43MjcveUw4cW9uQWM1K1hPNFp6NXp1K2NWQU5JZ2NnN2FaZkp2LzgxLy9jSDNUKzYvK0h1ZTA2dWNYdFp6L1JFQTlIMTdMZjFaU1h5bklxWHlldFBucDBUS2p2aFVNQ2I3NWxUYVFoQm9kZ0k3ZkJoNDhmenZmZFAzLyt6N0JiV1hBbk0zdzQvYnpzbHBhVnhPL3NtWC9aRS84c2hENzNqbk43NjgxVTFlMXFyUDhkSjF2YmxSWCtyaDFicW5LZms1RDNRcWVxRWZCdDJUU2JyYnY4V2UwK2JyWS9tMHNjVjlkU3doczZ1MHAxZEs3V2pFOE5YaUhRMGN2VXQ2c3ZyMHAvMzVCNy9pNi83UFYvLyt0MnI1ODZKWXJLZ2ZEVktlYVpwSEFHam5DWk0vQThET2wvM1p2L0MxVzJkWDMvbkNTL0d0dnBlMFBYcFpuL1VyQnB5NnlVVlA4QjRJbmova0V3bHRWazZkamxMcFVLbTFCWHV3NVY1T0RERHNJT2REZGwxcW44cStXZEV1WUdsbjJZK1E3MmlzTDExWWZlZlpQL3pudmxZQjRMK1V5c3hGdWlaTkFaNTU4azI0R2JkQ3YrVEI1TWZRcFQvNHpYL2w2VS83cmIvOWI3MXdZM0tlWi95NTZmZWNQdko3UTkvb2d5a3JuSnBjM2JHdTd3R3M2MVZhL2k2QXZnOXdLdlU4ak85a3k2cWVteit6c2VTYlV6dy9mMnI4ZkJqOVJ6ejB3MW5ad3VwNlU2dUh2c1ovS3UycHUwZGVOaUtINC9PVk0rYytjMlhqM1BkZi8vRWYxaDB3SnlaK0hyRE1OT0c3ZVNYYXlodC9PMS93dFYvNyt6YzNsaDU3V1pQL1ZTMUJyeWdpTXZteEdNYlRlSER0bjhkcDFPOG9PdUZuMzh1UVRVZXBkeHA1MDVhOE4zTWFkVVFuOVBTbkFucWdUWnVCYmxmamZrOXo0TXo3ditZUGlNU3pBY3lQWklXZGxIbVVUdmc4NjBzQTk0MTBUcVBJdXkvL1UzL3F6YXYzUC9TQjUvWDFDRjdoOVpvYzhhcFdvVjN0cldldDBISDl4M1ZsYThReXdlQzR3dTUyUFd3cCttTVR0dHpyS1FlYWJUbkY5cUFhNDV5Zk45cVYwbHdLTE4vMzBBY3VmczJmL2g4dmZlZGZlMEZrdW9RanJjaGNxSk5QODVwdjlFOGF0dlBGZi9qcmZ1Zk9tZVVuWHRHMVArL3VlMVZPdUtUVm4ydTMwNXJvaFEyZEZMeDlENkI5b1B1MDZudzd2YkNGQTF2dTVjVGd3ZzUyQUl3aGJxdWY1clRFdlFETmZnNzlLSW0rTmJqOHhJWGYrOGQvcHdMQXQwbHY1a25HTTFrMDJ6VExBSUFScERUR0FlQnRiM3ZiMlhPUFAva1ZiUGt2eVhoZTRmM2FUVjdQSGRmVVVlWDBuZlBPY3ZaSXJxQ25UOVBiYTRRdFRCWnM0YmpYUHdWZ2dMVzIzQXYydEx1QVhVV3M1WWVlK01yenp6enpkNjQ4KzZ4bWhvUEFYRzRHTWlsbm1YTHlrOVBXN2dmKzFyZCt6dTc2K250ZjFiVS9yKzUrUXdIZ3FyN2IzektlVmhoSFdUZU50dE9xNDJIMXFyYWtUZmR3ZmkvYTRoOC8xUlRuaGlYM0Fqck5pYk4vNnRzK1J4QVQzNHVsOHJZN1ZUejVOTXNkUUdxTEVXblE3cHMvKzNOKzg3Witjdk9LVm45K3VJTlhkL084OUR3VVNZV09rL3NlQUJPL1RQNTcvUjZBOVMvMmZFcmNBeWkyc1ByZkcvWndJMUJ2SGRhUFNPOXh6WEsyVzFuNzlIZDlzYUFmMWNITlFHNEtNbmRtbW1ZMTcxTHhqR0FPQU9mT25UdXpkdUgrTDJMNzcxL3MwUTdnaWw2dHhYVmJWcGlwdFhjZ1hPTXFYdjBrZ0dCd0wraDhrTG5ZZ3IreEkyMDVpUGRld0xlMk1KZkc5d0J5RUdJTHRwK1dwQjg4angwQS9hQUJ0WHord1MvU1R6YWYxVTlQYVdtY3oyWEFyQUlBUGs2L1o5Nzl4OS8wVFUvdHJhNS8xbVU5OFVjQTRGZDcrTkVPQnVGcFQ1NHNVcEw5R2VybVRxRFgreDR3SXBWbHdIRlVXKzRoM2RPR1VkN2FNdkdBWXRqMUtTM012S2ZjUFVnajN6Y3ZmUm1nS2IrMHN2NVpELy9SYjM3Nms5L3k5YjhrclhMZXBDSGtKNjcrTEFNQW5rWHB1djEvMTIvNExlL1pYWnRjdUtwSEh2aDEzcXM2K000MERLY3hwZWZSRGM5NzBnc2dYOUlnTTcwd2didG5rblJsbTh4MitkN1pNdC9hdTJsTDJyTkhoK2gvblBaNEFtZVVwckNOT0daVVJFWHZBdlJwQUJ2K3M1TUxhNS83eGU4UjlBczZtQmFwTFBsTTFKeGxBRURwUERCbTcrTGpiLzQxbXZQeEE1M2FBVnpYVzFQb3Axa3FvZVpPSlBHcUo0eHhyNVN1WURkQXQ5eXFkMmJTYTNkb0VUbzU2QXBnc1dUczNhc0ozN2VKUHNsK1NkL2JWdUU5R0ROd3U5VFd2RHV3QXdDL3RDeWw5NlRvOGtOditseHA4ci9xOEZCVDNwb0luR1lKdlBNMGk3bVhDcFBuZ1RHcksrZlB2NWZmN2RQWC9CMEUrSFhlMDVEUW90VmtBRE5Eb0N2ajRQTm1CaGlxcDNFQzc2bmszWXFVcm5wWDRKNHl3OHFpT3YyUS9ZTlJwY3VxZmVNQUIzOWFuejhqRGlid1FIM2ZSbWwyWjc5RFVBT0tjY1Y5Z0tVekY5Z0JuTkdSOXdIYVlYYmlQVFdMQUlDM1dsODZBSC94Qno3d1lMZXkvdlpyK3NqamhsWi9EZ0tBTmdFRFppcmZyY1ExV2F0NHE0Znh1TDhjYkRXZE1oZWhnb1dVMlVINHBNODlsMEs3UElUQ3dQTng2alE4bEV2YXZ1STYycDJuMlUvZlFFdXJEQ2RDT2Zpa01RRXpKWjYzK3M0cjZUTUFCU3kxclA3d3B3RXJhODljK0xLdmVmRHlEM3puaTlJQlJkcWpWL2FFRkp4VkFFQzlnZUx2L2ExZjh1VDJaUG5oNjRwcitpRWZCNERUOUxZZjN1R2EzWjdYODJrQVl3dGQ2U2Q5RjZnN3E1QzJvbDkrNDdmaGZLa0pJOXU0ZXlUWkRobHluejVzMG9jdzNVUmZjcnFYRTlwZmtDMFRIVmZWSjllMHNPUVB4dmhudmQwL0RFZzlmU2Q3V1pFS3ltYm5yS0lMd1pNU0Y2WFpuZWtMZ3BkamdCYkZwWlhsaDgvK2UxL3lwQUlBandXalRxcUVFc0FucXRwSkI0QlcyVlRZU2ovMnpEdmZwcDlMWExucGxUOVcvNG4yUFNldEFJMmVWR0xpNndubDdyd215enN2VHJvbnowKzY4MUo0YVcxSlBjRXdHaVU2YzRSeWNTcnlBTjVwOVVlNHNaTkg1T0dRS1VUWEdWVjB4ekQ1ei9JN2xpVWQwWWFtV29KSHprZHFEZXRQSVJvMXdsTmtBbTgvdHVxZDVldDZ2dVNqK2dHWjUvVTdFbHl1RVFqd2VGd09SR1hPNEd0UDFuNENDQjVxelRMUmtvTUFnTWFhM2hPd3N2clVwNzlOcFovUWtVcGtMdFRKcGxuTlB4VE9BLy91bm52bzRiZnhJZ1FtMUpaNllYTjhZWGF5ZGgxUld2UzhvN0JxbHI2d0FlKytmNm43TEMyVlRQd3ptaWZuOVZLQWRlWDhJaXdHdWdNUGFBMTU4SkNpaFlCbmRSNjBwVUtXNzdROWRNOWQwVHpzUU4vVTNlM2R4aFo0NFdPaWIybUJ1YjQ1NmE3cGVNZjVwZTRGZmNuc3AxN1o3bDdTZXliV05OdERyaGdGc09lakRrTVJQSWQzQjJaQ29nSGxzMHUwRVBjQnRBZFZrOTZGUFBEUTIwcUxWcWZBWmoxcFRVNDZBT0MxR2xBRm96VEg4c3FaODIvbDVoOFRQNFBBYWJqKzU4b2RwUWRKQ0xiNlgvREljdmMyRGFJSGRFdm1NeC9xdXZ2UCtsTE5BNGJkQWNlK3VrWFFRZmhCTzNNbzRQempwdE5pQS9vZnhnNzA1V0JDWDFjZ2VFRWZONis5T3VrZVdsdnRmbFN2bmZyd2xkMU9QNG1vRlBzM3JyK0JYVS80N05QczFMZ3NQRXpMeUR4K1d0Yk05K1NYSXVSTGErZmVLbWs1K1ZHZ1ZRSVlsVThrblhRQVNFVlQ2Y3hYbGxmWG45aFVwM0J0UmhEZ3l6KzdzaU1ybklnMXh4Q1NDckxDSmN3ZDJjOS9lTGw3KzRXbDd1MzNkOTE3SHRIV1VrU05uMjVMOXpENDhvWnZPcFZ1b05NT2xaTC9VTXlIWTJyOTExN0RVcHZtV3ZyaEpCNkNxN0czQVE5UjhkWXNyYTVqVzI1ZFUxUXE2NkRlbm5ablN6cmVwTDQ3cDZEOXk4OTMzUmMrb2tzRC9ZNzNDM3JaN0xJNm01SEhoR2VTOHlLUnZLbUxQVDZLTW96UldhY2xLMTBhMXR6UXczSnZWbWxOQjUrYUYwMEV6U0NkZEFCb1ZVUnhLLy80NDQrZjBaWE5JNXN5aDV0cC9GcktMdGYvOHUxTXJXdTFPU1NNZnF6NnoyanlQNmtmZDM3Zm8vcStndXBlMGRPTHUzcHIwWkowMTlpeTNsTjFsMDJ6SHpLSE5LYXdWVDByY0p2NnA5Q0cxTmdtSEdBSGZpZDRxNHY4bWZxMlJ2ZXFwdEZqMnIxOTRxV3UrOXlIVjdvZmZHN1QyLzVsSmo1OG12dzdpdUJjSExBN1FMVEZ6N1VUbXgyQWxGOWFYbjJrZStLSmplNzU1N1hVVkpVT3NGb2NkNUJtR1FCUXkvNzh6Qy80Z25ON1M4djNiMnIxZEFEUUpPUFhWS3V6NzhDQUU2bGFCanplNXFiUVordTZuK3Q5Vm41KzB2V1N2cms0MFMrNzZLMVQzVXE1d0duSFIvYU1jUTJoQVU5RXphTUtTYjFxUFNGYVhPcTNENWVFVW5GVXJPTG1CYlQ2dWMyUkhlQmFIWUVaWjN6a3ZLVkZoL3MxWjNVWjk0aTJjYzhvdVAvOEczbzlaOXdWZERCbkV1eHFWN0N0bFppMk1zQVBuQ1g4ekJJS3M0MVUrL3kwdUNMQS9lYy82d3ZQWFhuK0gvQ2pZcTM1d0sycEt0NVptbFVBUU5FOHVzYys2NzNuTmQzUGMvT3ZEd0RpT0ZGVGp1WUkrMXhWTkU2c2hqMHI1T01iays1KzNSbC9RcXYva3J6RCt3cjIxQTM2K1hrSEIvZlRxS2swQTlwcFN2dlVFV0xLazdCOU40aStyODRwTUdpZlR0aUJYajVOVnpBL3JtVzNlVTNIdXZyeXFtYjIyODR2ZC85T0FZQUp4ME5BclA1OHBzT2s1NTRBWDB6bmNvL0VaU0h4bnVJdG1vTDFqcFBIbGRyajBsSjZuVjkveDdzdlhQbmhmOEN6QUtTWk5UK0xBREJXZHUrUk56MTVZVyt5dEpHVDM3bU1WVGZjdFpSSzBza1o4ZEhyTVFXQUZSRWZQcStCSSswMnRmWG5iY0FzR0RuQk14OHJmeEIrekhkWHk3TDN3T0hFQUx5cnloMis4VnVaWVNucUw3YjBYRWl2cWw5NVpvUDdBZzhvdUNzR2RGYzArSmp3VEg2K044RHFEejlqZ2U5SklKL0ZRYy9uT00zU0w5YURCckxSbGFXTmxVZTVBSFZDZ3p3SzZ1U3lXUVNBMUs0cWZlN2hSeTdvMm14VnIwYVBhelRsK1dXVVpMN2JPY3B5YStnOEgvRnBzS3dxMXlkSDhUVk5FYm0ycElQSWFnNmN5WVFzRkw2K2VOY2c3R3BUNnQvaURvSkhKaDNFTmpmOFBsdGFCUnNpSUNSeWdya0R2QkFUK2xXUi9LeG1PaStoSWFycmJEcjM0ZmhVYWtVMXVTbElvbDUwT01Ec2t4ZVFzR2wxNytLakJJQTBZMmFObjJRQUNLK0ZxZ21UNzIyY1AzZUJKMzU0N0pRZ3dMYXJmUVJ6WnRiZFFuQXFpSXZ4TXJkYkdRd2JHaFIrd2srOXp5VUwxMlFNbk9UTFRvcCtFajVUZzJqQXBONjFQSFdwOWg1U2s2eDNTUGE1c0tWT1UyMkJtQVRsN095WTFDUmdRT1kxK1lZQ0FKLy9yNWtuVm44bXZ0N1k3KzAvbndnNGFKVDZ5QkJxdGtrRGE0TENOS1RHbDgrZHpSMUEyeTRhbmFncUp4a0FXa1dCcS92V3psODhoMjA0blpXVVFKQ2RNcTQwanpJZXpJTkp6OEhYZTdYb2U4Vmd1NC8yNkFrams5NTlVMkJoKzhzQkZ6amRPdEdlVXdVU2NVSzU5RVh0ZzlKSk5WdmxWT0NnRnU4QWYweGJCdlpUU0IyVkp3aWErd084TTREeHlLUm42MjlZT1o5TThkSGZscUpGKzlndzlUaG1sVHpHSkp5Y2hwWTJMcDZqR0tYWk5UM0xBQ0RkUTNHOTZPQWNsbmoxMTZRaTE1T2FweUpsdExjeTBvbjd3S3dVVEhoL1VhYm82UTRTVE5HZFZPQTZzc0JQczJpQUhCU21jUjhmWjMyYUlkcUFZNkhUU0xmVmJNQXdLSXpGMzNtNXRXV2FzcVdGQVlrQ2FwVzhncFlWTkhEWmQ0ekJmdUwzTndTWG1maUlLZlh5aHFCUU0wMXIwaWUvRTRDZTNlbzZBWUNVWm1ZZTJCTTZuM1FBbUtya3h0bTFzMnU2RzdQR1k3UWJmQ1F6NlM3cWpzeFU1aE15N0RCaUdBem9nTU41SUlUeWlrWUZPVGdmT3JGcllWZVFaUThpNkVZRVhrVXdrUld3S2ZYNG1VSk5pd0x0MzMxT3h0S0Qwb2hTaWlQc1FaVlBHRDlzZkw4dFF6c3FuV29VU3U2K0ZFd3grKzNNaGg3dDNsbnlUc0M4bXZScytibmhSOVhvNi9oSTBHSXNYSVFacGlVMXluMm5GYzNJZGQyQTNyNndxa2VZRGt4cDRZRU1oeVdjZEFBb2JnKzNTZ203YnUzTTJzYUtBc0M2amcwRmdETXk3Wnp1dE0zQnJ3ZjZJUld0REVLQVcyRWtGSmdCbzhEc2daTjVTK3RoYXZhSkVpdElwQUJxTWRFenlzT25jWGFibkFhT1Bwd21ycmFQbGR1azgwdGpXNnhUYlQ0MUtUczJGZUhuTUY4QmZNa3BCRHM2Q1BUTCt2cHlkMEc1UHhrQUxab3Yrd1FqZ0IzQTBHY2dacHZRaFFEQXdkcS9kV0ZOTTZXYWhQWXpTU2NkQUZCeW43SmJ1NU9OaVY0RWVvMTNBZXFobWl0WDlycXIraTJBZll3ek1YRy9VUFc5QndrNUFCL0RKTHpEMHo3U3JQSUlZUEo3UWdzMnZoREhjRkRqbkZ0SW1waC9RclBvaURyd2o2Z0VFaktJaGJRakNqZ3g5c2FXSXJNZk4weCtkbTVORUlDb0ttUUZkQUJQRzhEZHVMN1RYZEp6M2F2dTZxZ0xONWQrcnNkSnlTK3JUNXpLQlczYVNaOTRNR2xWSDFud05YTjlqNm5idnI1RUFKaDVPdWtBTU5WSE96dEw2emYwUU0xMWdvQStYTCtpSHdHOXBKY0NUR1dldWNsOUE3UWZnN3dFSTQyU25RZU1OVk91SHI0RUVJWkIxRzc3V3hpaUI1bFBCUTZNWlJXMDRWbWR4djYwVlFOOTFQS1lxVlZtcEdSZm5BYTFGVThlSHF1NXp4WXh3SU5tQitZaXVBOExYM2JIcHQ1R2MxVnZwZVhiZ1o3MWtnREl6M1d0SUUzL1liRVdnZ3FmdkkydHhGVnRBVmEwL1dRSHNLM0F0SHR6d3VNbk0wOG5IUURHQ3N0OWVpeGJEemYzUXdpTVArbHd4NDByekx2c3FDOTkwSSt2SzZOd3J0NU04SG93RUpveWVycE1UZU4xQWxmS0xzejVGQnEwamU3SHRGUjNUb3NBdm5XVk1mZk15dnZWYUREMGsyWW12dGE2clVtcW5KbWFCbVV1N1FnQTBVL0ZOSlVoYzZWSFloT1ExLzdnR0FPYWcwNkpMOFhaWnlpbVJEYVpMS09HUVhDelNyTU9BT2c5bVN3dHIvQXhTMDZnV1JseldMbkZ6NTdvd0F3dGZ3OEFCWnRFS1hjQm9FMHVkbkJaUUVYWEtMaktBK0JrYWhiNi9BQjB6M0JFS0EzYVYyMUlvTm5ZOGV4anJBanoxRklDUTRVcnp4Q2R6SGVXRDFVdXN2WWpFK05jZWhESVNXUXRqVDV6RUlCWTlHMmZRQVhGSjBGTWRnSUFNSGYrbVJqNVJDQ3hoVlNxUitHa3p4TGU5czFraWR1QjFSUmFTN05PdE9WWkJvQkc0UWtmcjhZRVFuMFZjRzdEY0tKR0hWWVlPbTJqalA1WkNlaDhyLzZCc3I3akFOQUdNYi9Jd2J4Um9WLzlEWVVhSXMwOFpSdjdIT3FOODZENS9aZ0JXWVZHZDVkRzlHeHJoRDZ4WXNvZjJCTElRTFhuTW9hRXl0OEN5R3JrSE5sL0tSWTl3Yk1nc1MwbGtMUDlkNzlDOHdEUUEwR0MrWmpRdHduYXlzTFBKS0VVN2Vnb3VyUnpFeXFKUERtTnVOTlQyOGlkeW1ycnA4TGdlTFNPZHg3VUNaWE9iaXZNRTY0clFtblVYcFYrdnROdmhYdGRjd0RCbWpiMHNHb0t5YVNLSnh2N1BIam9VVU1sbjBYbVRiQUVvMHVSYisvN1ZGR0hiem5xN2VQSCtKckM1aWkyK01wd1RDRGE5am5GdWhCNG93VEc5bDlOYU5tUFZSTWYyQU45dTBLZ3N2dGF1YS9sbGNNZmRjSmRCSDM5bDQvK1loR3dNT0g0eGlvM0FuMnJvSmM4RXloMVFobkRtak16YVdna2RGWUJJSnR4ejJseThQWHJHSXpPNHlrc0U1Tnp6cmtIVERPbzR6dmh4ZmxGMXh4QURDSVNaVmRwNkdHWEpvUjVnaENnejJGempxaVE0dlB3ZERSUGpMbjNyZW8wWFVjVUxmVTFlbWlvQWFYUXVNVVh6RDVDSzZXRjI3ckhod2ZOVWJBdE1jbVJhcFRGSnhTNXo2Z2pnSXdqQTNqMkc5V1k5QnpRK0s2QWR3R0NTZHdEWUx0SzBVRkRlZlkvOUZrbGRodHRCMmdwSVFDTXNDZmYrcXdEQUJyckU0NGxmZ2F0TjdBNCsrVE5DWStONWJaelFZNDFPVlhJYTNtMmVwREFlNklyOStBUmczNi84UllUUHlxeEp1NExBdGxXTmtZYlUxUFBRSTg3VlNBUjQzdy9RNHRCRjVkOTZ1WDNVZ2JjUFhvTXFTcTFiODg5clkyeHNJUEtyZlRnMlk4SkxRSlB5QXNvK2FibDRPaEQ5eWM1b25WcUp6d3dsdzk4QXNBWTRDTkZnb0JuWDZrenIzc0FxR2NsVVZTM3psMmU4V2tlQVFDSDg2aDkzeEdDNTMwUEFKL2kzVjMxWnNBTWFtL2U3WFFHUWlnSVlGUjlGSmpIUm5PQVZUdVFvb0xMQlhiR2lmck9zcVVvcHd3ejVBa2tiR05pcmRvVDhrWlhWSzBNS1dtVWwzckpwbUl2Q2RZa2pLb2xaVUFlRlBaWHVHUE1yZVJMYTVIRGRnSHF2d3JMb3VoRExFT0d5c2xiY2dkeHFrSG1LSWtiZ2VzcTArLytDQkM4eW5FL0lMNGx1Q1JoU0c0WEVOaG1rV3hUMGMrNlJqeWFSVk1EbVhNSkFHclJZOC8yNldTbkpuS2d6cDBYb28yYzVLekxPVFNRYlRVYzhYTTBtQjZ6VlNpVitDOUg3Z0JZRWVxTm91UVJvNi83WFNVcTZPektrYnZnOW9HY1RCQVVhZ3h4aGRhVEJMa1FCTUJVMDRTZU1lVHNPL2Yxeks5aXJtVDdXRnRFMFVQY3h0Wml5ek5IT0hveSt6TmNram94TWJFcFhXRWZTYmUyUEFnQVJXL1RFYUlqNnNSczh5Y0I0SVVrWTdIZ2owQXc4MVNhb0NuYnRjY1BoUlgxWnRqNFhBS0FKb3AzQUhqVmRzcXg0ZHlUczZ6NHp3S0JjOGpZb2FVWndrRzBIOXd4b1pqSU1PZ2tJSDZzTVZZR3ZnekVTMElJQUZrM0puM0lxVEJWczM2MjFjOVdpeTRjaFJvOTJ4YzhKUHNpVUl4TTQwd2RMUDlhbWNLRVdxY3NpMzE1QU1WS2hvcVdHNmNCUnhSc2lNRjk0b1VkNDNvQkIxTjZubHRCUS92SG5ObVhLSjhCQVo2RS9RbUEvSk5TMm54d0NTQTE4ZHRTMmRHeCtyTVRaZUw3eFNDTVM4SDU4Ujh3bG5GWlFJcXp3Uk0vc2NCNENCWEowbk9XelZYOTV4UUE5T0dLUElrejAwaWNmeElXdGpKaVVzVExIa3RUcFUyMi9ucStXaWUyODB4YzVwUHJlcUpxK2hZRnQvVDVFTytLNE9VUWZvVzV5cHVGSHg3ellVYkM1S1hzTmxWMkt2Z282R3gwMEFxSFVibkNNQUFHdjFOWERIT0dza1Z1eTFObEF5UWRlQkFzUUlTdHZRcEFTRTVONElnMEhSdTB0RDE1VHk2Zm9zZllCckZVbEd4TlA5Zy9Vc1Q1Rkh6ZEFUVEtldXd4RG55VnJacWE0R2hRZDNsQ0lTOERRWm4vdmx4b3hKd29XQU02aXZod1NLQU5tM2FpalRYQzVoUUFpb2N4VEFsalozTVBJQnF3L3d6R2hPYzNDQi9RRjVIZTkrQlM5eG4zVGJxbnp1bGQ4WHJROHB5ZXRlTHVLeDVPTHordWwvOXRDSzhmQWVxMjlWcnBYYjFNY2tVakx3WmZXV1dLYkJ0VFRtWCtxUlNoT3pScE9aSXhQb1BlMU1pOHF0L2xlazJ2SFhwUnI2citwSTR0YlRsNFkwME03aGprMXFzb1p4MGt1TWNWUWhGTktWUkxKZ2hEbmg2elg4TURNZnNKaUhHNkJTbFpEcDIzbWtaWXBXcGd3elphaXo3SWRzRUhiWHBlQXdBVlNpVjZDSkRYY1h2MVYrZUJ5M2hBSGQrVkw3THI1RlI1Vm9tK3BSMXNjWnFnMmV6VFBBSUFwcFdCS1lOYUkrL1F2dFpEckU1RTlwcFU1Z2RJSDlNRS9xcG5WcnJmOVpZbHZSQnkwcDNSN2QzOGZJWDZLU056QmtZZUUzMGRRMTlqcWp6SVRyNGhGc3IrbEx6N0tYVXN1aTE5TDZwN1VUOWg5YS8xNHhVZmZHVkxyMDNYdStzSkJQeVZrVkZoMVloQWdQUndKclI5Q1NPY0N2ODBubVNaa25zQ1ZobGhkMU9jVXVQa1VMWXNHOU9zcVBZSjV3ZDF3QkJ4UzBTMGIrekp3dG1UdlBOREZPekZYZmFFTDBHRjg1aFJnMHkrM1A2VDg2Q1F4MG5qV2tUTUt0VWdReU54TkMzUHF0VjQ0bkYyMGh2SmRFQzFUWUNmdW12b1J3V1JSYUlEYzdYSUNNb0RIRGUwaC8vU3A1YTZiL3ljbGU3VDlidCtlSk5veHdFOGw4OVkxTTZ0VXZwRHIwZm8zbkp1cVh2NjNIcjNub2RYdXgvOHlQWHVlYjIxY3MzYmt4amVqZ00yVUdYMnBJSnRGVUlNMHhLV2pSSW9PU2tuem9nNnBSaWU5VG5BS1R3dDZsQk1iWVZid0ZQMEYzZGU2MU94NVVqWXVkUndQTkJvQ0k4RjgyQUhnQUR4NWRoalRESU9HRU80bW5zK1hCYjRHUUdWK2FRQWw4TkRHN01jTTNTcGc1VGFtV2VheHc1Z01QRXA2UDlFZnZLRVRrR2E1MFdBaXR5NlpsZjQvaU9mdnR6OStmZXRlTVhuYTFYNUJRL1lUa3RDLzdBaE5HTEE4YU1rSC9pTXM5MzMvTUwxN3BkZTMrcFdOVExaQmRTRE9xb1VnNzNrakI3ajhXejQxOEVoQ3lXUElFQWhlQUtLYzZ2SHRJRllnMnhiNmNUaGJBVy9GSTFrVWs3c0J1dVdIUmhrZXdhM3RLSG1xc3RLVGhEUXY0K2srZWFmY0V3QTAzU2lIYitXdXdRQjQ0V0xSY1pOenV4VWZ5UW5GWjFaUzBQQjh3a0E3WWZ2eGNDTXdrTjFEbGZLVHFUckRFdW1PMGtqOTZaVy92L3dyY3ZkTi8zcWxVNjc5MDR2VjhtaGREamhkNUdMTFNmdXVhakgwLzZqVHp2VC9lMS9zOU85b0pmYTgxWFJuUFI5THVOWStjdHV3Sk9EeXFUZVFWRXVad0tsMHdGME55NkdaQ3ZjK3pIN0dYcldPNEVHZXNWS1RsUFd1OUFDTnJhYW1kVUlDTzIzQXZHVlYzV3h0MEVOR0FsZTZjbDE0RVlIaFZMSDl3QUUrMUtqdEVTZG1TVzFOWEE4QTNvT2FaWUJBSk9jN1BDbUV5RGtVVmlPbEZtd2hKSjdpMGR0bGZuSTdxMjZ6di96djJxNVd4ZVJHM25tUFpMMHU4dU12Z1NDKy9YbXlpOTkrOW51YjMvd2t0NU92S3V2VTdEU1JTRGcvbkFFQW9BYzlBelBzbTU2cE9wVWpRK2dGazJmYnVlUVZFcEQ1TlNLaDJDWldnL2tnWG8xRVdzdzhXbXMybTNRUW9JSDBBeVdPNzRFb0MybzROa1ZlcDZCVUNJSTVQWWZPZ0VCSVNaWEpjMTY0cWRxS28zcG1IRnpWZjlaQm9EYWlGZm5VaUlZWU9DeWtNY3hrdW9rY3JiTTVEaVBuSS81L3ZBN1Y3b25kWmQvUTRqanlKZVl1NTdRbStNZCtsbnlkejI4MXYzVUoyN3FsMjAwK2ZVQk5rR0FtMVFFZ0FnRUZFb1F3QXNpVU5jSnB5UmdaRU5MMGlpUEtxVmlyVDlpVW5FL2FUOW1mNjJETUtGeDFUdlpVcVFJcGxIR1ZrcUd3UWZnMVQrNHhCSVZxTU5FcmdzUUNKVTlzV2xEc044R1ZYd0duLzFLSGZIR1Y4UmpoeEM4VkpwTjhrZVN0Ri9FQzV4TG1rc0FzQ1ZZVkt6QzBUZzNqVDJLcGRVeEJmRDJUUUpaL1o4K08rbCt4OVBDQ0Y2RGNBOG5kZ0VFenM5OWZGMEI0SVoyQVhxK1FUYnJXeFVPQWt6K1BaOFl0Sm9TeFpuOTNmRXd2dm9ZZjNtWnVaVmp4RVRubE5SRGljbThVQTVtU01aRDVrVlFHdEhVc3Y2ZW1hRjNhMThFQWdVRTZrbUVjOVZObXpHM3ZRZUEyS0RwTndCRXc3L2sramVlU1U5VHVEWEhLano1Z1Z6S0ZlckVFOWJaOVdyZjNZUlNjMGh6Q1FBWWhqMXBvTzA2cG9IWmdjakFhVVI0T21sYlBmMXJIbG5TeDM2VFRyLys5Q21STU9QTjUxZTZCL1VXMjVldTd2aVZVUkVFWWxCNjFXUHlpOCtEcHNBeEdYREJ5QkgyT1JNRzJ2N2svaG5YcVd5cUhQL0NIQ0NnOGg0VGtIeEw3azlWVUQveHcxNElpVXR0bkNNRG9PUWVIK2l0SXhQamhTSStLNXVGbVBqQzhkUW5lSTh0WUNvMWRTbk9KS21Ob25ib05wTkc5Z3VkU3dDZzJYYnllN0R1MStWUUdBLzYwaUh1U0FtT1FMRFh2VWZ2OCtQbXpkeU1PcFRHeDJmQ3JqTXk1dEd6eTkxemw3YTh3dkVsTWU2Vk04aVpDdjdDQ2lPSHlZK1R5K3dPSDBjWjhpQVYvdzF3bzBKbE1WQkxNNThMMXJWdEU3c2EzWUl1aG9MUGN1d0N5bTVBL0ZtbnZRUm94SGpoZ0FlWDVXU0g3cDJCQ05CeWQ4QXJ4MGlTN253V0p6ZUJXVFFWemMyaW1YMHk1ekpYNnAxWW1zZElaVGozdU83RVB6SDUrMTBBMyt0K1NoK2hrYnlGTTNSdm4vQVBGajJvTnhWekNiQ3M1ZDgvSkNrbjhtVlJ2bVB0RlV5d0I4NDRDR0IrRXhRb2txYjVmZCtZVXoxd0xlOCtIa3ViemFtMjIraWZBYzYwb2x6eWtWZTQxTUVuakpNTUFza0EzcmJvVk9LbEw2L0FNWGI0NGdvdkFzRzMrSjlkMTh5VDJrcjkzUmFLenlITkpRQlVPK1JJK3NaSFJSNGVZRWpTRis1ZjVYUk95TnZ6aXgwZTRBTi9NWHlxQkFCWjQzUmU3Ni9lMWlqZVljTFhQeDVqSlJCb2hkUmc4VUNXN1pIM0s2RUY0Q1NuR0dXRGdWWW9aT2JxVHcwbHdKVFNNTzdqdVRQRUFmcTV3OHRPUUhCYzY3TWVpei9MSlUvYk1tL3ZBVER4d1hNd3FabGp2dGNpMkE4Q1laaG1mUVlGbXZYRFFLcVE5ZTdNdm9OckQ0SVNhaHpNZXFLVXVRUUFqTUdabVFDSnlqajFPTWtkcUlyeGhSekprU3c2a01kOFA1VlMrb2NuQW5mM0JZQ1kvSHg3a1FuQnd6QU0zREpOWWtlQU0xSklPdVlXZnFkZnBnNjlJQlFKRVlSTDRZUXoyYUMybU5wT3JlN29uV2owQVM0NDZsQTJPZmxLUUdDY01mWTRYRis1NnltcnM2eklZa0hoSGtBK2xKTTMvK0FyMWFnMWsrUkZpMFpLc2kxWm1HRStsd0JnQitMRTlLSnlERHlPa1hRMjlSQkY1OUpwZkhQUDEvN2VFZ2p4S1pTd0U5dFkvZGtGOEc2MTlvOGZsTWlQd096VE12RERRNkloZ0dSblp5RlFmUStNOGFJWFZHVDc2V0FzTWtXZFFON0xMSkF5dDZFVE52cjUvV0xINEFHbzByYkhCcWR5Wnc5V3hnaUgwVVdlc2dnSTBIWGtkVC9yQnpzRGdnQndmdzlBaFJtbjJrOVdUbzJSenlITkpRRGs1VXdHQUl6RjBlN0xZeGlKYjl5cHlpMFRiekh3S1RmeWdJL2JSaVBtN29NeWhBQ1Fsd0RldGtvcjRwM3ZDWGdISUZ1THNaa3o2bk5Ia0k0WitNaXo0bGJtTmF0OTQ5Z0VUOXEzZy80cU04TDZsd2I5eUMrVFd5bFhjL0tLeDk2Yy9FVVk0d09RSXplSTZZTnFmakVFM3BUTG1HVlZobFJVRVRURFJGc29PZWMwbHdDUXYzcUtiV0VqQXpNbTdHSHRUZC9RU1JsUUhLMlJDRkVPVEo3RHlreStvOVJqUU13em9SdjI4aDREdjh1QXhqVlN1RkhsU3lEdFUvM0RHSW9HSHF3K3c2U2t5dm1jZkNDQ0oyRVArQ3lVdlBlRm9QZzNwYlc3NXhsVlBvRml0b051cE5UZmVIQUNrc2QwVU1MbnhJMWNZNnNnMkRWNE1qZEtVNThiaWlGT2RBRU9xaUw0L2ZYS29lVWk0KzA1alJrN2JOL29remdSdUdnMGo1T1FlUWdaY3drQTZPRU9UZU9VcDNNUG9hTlpzbXJ5eDUxYUJCZU1janAyMWltYk8ybzd4OVpORFRMUjJ4MEFocUlIT3dCR1B3OEU4WlliVHc0YUVuOU1BR0FkeFVrVkIrb1dpZlp1bThSekNLN2JpbWtaUEdmSHZWajBiM1hIeFBxSkFMcXFvbGRQRVV3clFzSGhGcnNHT2JDNmJ1UlV4WWQ1clE5LzNnTUFWNnI0WVNLeFZjMlFjZElKbVRZRndkbndTVGN5UmQ1Y0FrRGFnNEdaeW5qTjRxRnlkNTQ0NlNqTDFNbWRrWEl6UDVTMGtKR3NSNnlhMVE2VnUzTUxwL1U5VksxZ1FpLzh4dDFzRGh1dTZGbi91QWNnUENRU0U4T1R4YU9wWGdBRXNlQ2lNT1VNZlpRcXhrQXQxZlpHN0hkVXhJNXFTVVNET3VscVVCdlpsV09DZW5HNUVQWmJsb2lJOUtHVHhXY0xLbVMvMUU4RWhHQmg4ajJBd3B3TGM2TlpsUVB1cEZKZW50ZzhDVTFkVDByK1FYTG1FZ0NpQjBJRmp6RlpkeWZQQVNBcEEwaktvemR4bXN2UmxNdDA4cEhUU1hyL0dBcU1tOGRXdHY4OFQrR0VUQnNiOXNiekFCcit3bnZlUUFNdWVWUXE1K3FnREE0SHJPUkZpY2hLSWNTNjZTcXpKMVhVa1lDUmY5STBUM2dMd3BDUW1QYjB1Um92cTMvYTNlZWlhZlppWGI3eUc4VmRGNUpFNXNSbmkyL1hDbWxZT1RzQWRnZndsK1pEaVJtZDBkdTZJUi9sNXBUbUVnQndMdU91VHRZN05NNHJvV1RFUFlBaWJJNU91MFAxajE1ZHR2R2VBOThFWkpUSW9aakx3U0JsbFpySUdRelV2RHVlZVF5bW5PeGl5RlJIbXhBSWFsSVVDM0pFZzYxSDlWQlQvV2pnUU1RQmVzcEFUMEowTnF5Y2lhK1dQT0dGbi9CdEd2eGdaMlJPQUloVTR4NTFRQlVDTURUOG1OdC9aSUpqM0JJUTVwSlNIK1VGbkV1emN3a0E5U1lnbHJYSEVVMTBJQ2wxTW5wWGVWTTY2aUJISmo1emkxUmhVRDZpYmdleGU4eENsSDZvbUcxTVVmY2dFYTdqbTRCVXhnbkNNTTRacER3SE1IZ1lpSFk4Q1RSQnNqSFY4RVNKb1krQVhwRW8xYlAzQTY0WEd2WWlnSFJJTmxCUTQxd3JIeEhvWlVmRktxMEIwZ2JybjVPYjFsVTU3d3Rrc0t1VHYrb1htbkllQkFEcUNzZDJ2d1pRVkZDWkp2SmpRZXF4Mk1DYkIyd3pTVFJBZzVuY3oxbVlYVDZYQUpBVHQ3WFBUMWdkd3k1M1JPbVVjYWNlUTl6dHE2QTBqYzQ1alp0bHNISjRrRElKeXdEaEJpQitZRDMwbWdqc3dSUkFWWjI2Z3hHbVlrUUZvVTJFb1VrS0JmdlFWWnI0UkJ6UWd6WkFGV2x0cld5Z3pPVXNEdk1xUklBcVY3dG9VRG83QkpIYmNPVTBFQ1RiUW1CSW5BVnJsdHVXRUdlMU03QkFUNWc2K0ppY0JVYi9FV2pKWVp4aEl1ZzRLVWVmTE02d1NZdWVTd0RBR2pvZ0Q4bzRtSDQ3U21yNVBSbW9MRGsrQ3BFaUtkRlJpbk5MU3p6ektBZEExc2x5OGxoWUxSd2VRQ1VHdWhQQ0MyeDhRU2U1RkNzclFOVlhBTmYvN0FKcUtrSThXSVQzajFjSWx6Y0FNNi84TkI3L1BjcXpvclNUamRWV2d5MVlLckd2MjBJbTM0YW41UWRHLzl1bU1wRlRKeWEyRkVyYlBORnBWazVvY2JEejhhRnhGUGlvVkJtc21YQWx2dzRNam0wK094L2VFa3gvc2VxdlVKKy9wbElEcHBpVHkvR0hHckMvYVdpbWpmVnF6eVVBMko0MGpyWUZZeS9IVVJOMXZCb3FwM09RN1pUeUs2S2hKYzhkNVkzZ0ErVWN4NklEaFEwSXZnUW9BWURQL2YwREpySStYMmpCVFN0V0xnOThQT3VSMityRGdJNDBXSDN4MjZBbENvRUVUNTJnRjY2U3dYV2NsRElQckdzbFExT3Y5REFtVGpZeEtUM2hnV3lqaWdRR3RDU0hYT0ZvVGU5UUNSc282dkRpbzl6VXpFWENoL3lNTlRjTkNRTGNtVWNlZkNTQk0wdkZsSm0yTVUzNXVRUUFKcXdqR3hvVWJ4NW5CMEJWTGgyWUIra3d5ME40UllnNFNxWEpiRHFxSkkrSVpWNVpCSjJjNVdSQjZWdUlyMno1dFZGa2xDRVo5Z29Cem1vS1NIMk1NMjhWWWFDbGc2RE1nUFN1UjdudnFSUTh0Rmp0eURuNnlkQzNGTzJMZFdwQ1JwdmE1d0JNSzUzWDh0WCtiQ3ZlQnNaZXB3cE1MY3BYYWdsalNrclFtSUt1T0pXQlFSdG5tSlA2ekFnRlNlVytaRUtzK0hMOFpIL2dKOTgvRUkzZzZPMi9jbDVhazU5V1VZOWpWc2xCR1FjWEozTnZZaDVwTGdIQWR1bUV3L000emh1QkxFZGVvWU5JZzBGWWNFR0pjL0tQY1cyNWhhZUlxT1JiMFdBYUQ0NldIMXFXRXg3ejE0WkdnTWV3Y08yRFFMNVJaNWxBREhBVmRDSkl4YW9vQkJPZ3lNcTI3WHZxRlVUaWc2M25weDd0a2lPN3pST2ZlZFRkZjdac25jaDVUVHM1N2VaaWtIbmdDNzJLb2NYUXgrM29SRkR3elU1UkFoZk13Q2pvakx6QXhvRTBFTjhqc1AxRmtSM0p5NThCNTJmQi9MR2ZhSkF0UXdEVndXZHF3RVNkV0o1ajJnSlJZazVwTGdHQWtJdE5PZkN3cllVUGF5c2RrSjNBWUVlbUI3MkIvVkxjWnFrRFRCcmtwZUFzQ2NGbXhrQ05DY213UDBlWFBtbFFlM1NHamlaSmVROUM1ZGdCcnMzN3VqMEVIVVoyQUZ3R1VDY090djlNaTlpeXhnMHhsYlNVN0pwRHNsVjVXU2QrYldoTis5bDF2VFJoUTk4czJpRFhzUzU0WFhpK2JRZ2RQZzY5ZnRBSGRRa0FjUVNNUHNqTkhQWDJKUlJVcXJvS0FDWVFNUEU1SE5DVTh5bzN2dVRFK3h5M3RMM2pGNVA0SlNkK2xvMDNQTjhRekc4OGtOOFVqdmNpYk9JSER5QUZCam1kd01BcXp6c1NVaS9yV1BXVW4xQ0FnMVJnOUdDYlQ1RjZmcVRhL3BQTjREeklvRVRLNmxrKzBWeHRvV01kUTdKeEhta3VBUUJIdXdPd3FCanBqanFHaGE0bkdWd0sxQTVObUhaR01yTTh6bUUwcmhDU1BoUlFzU09wcWlzU2d5elRWRTU0eE1EMkRucHVMZDIyY0tZSjMrYklneGNjUjZiNEdGQ0RSTTdrajhua080TzZ3T1U5Z1d2TFM5MVp2UWp4NHZwUzk0QmVJWGEvWGlKeW4xNk5mRUc0czNyRE1KT2RpZTdKTGNGaTk0UmhBakJ4UlBLZzk0dEdKTnAwK0FxZDYyaFBDdEU4MFlweTZFcWltTEFSNVpScVF1UGEybVYxSHYzSHVNQXV4anB3SHByakFZc0FYd1NKbVB3RWd1djZTYlhMT2k1dDduVnY2R2VWWHRkeFJmQjEwUWdtN0IzNFpTVUNGM1l3a1hlMWxOTzJrNVZRUVhUYXhpNUkzbWNJNSs5WkZGMmh3YWQvODZRSTBDZWFpbURyS0JpOTVwSG1FZ0N3RGNQcW9US1RBYWNlSldVbnNIM2ozK3VmOHRKNyswUkJ5dFRDaVR2cGZOeEcydGZpZ2RPT3BOOUtqK1RaMGVDK3FZRTgwZHMvK0xHUUMvclpza2YwcXJESEw2eDJqNTliNlI0NnUrTEpmMFl2RDFsWHIvSlNWRloxOGcyVk9XS1ZaNldQZzhuaGlhL2M3ZWlVN1kxMVNoc3loOTdDWS81cDVXbXlVd2E1eDRkeVB2RWdHTlNKcnpJLzJMcXBKM1UydDNVb0tyQUxBTWZCenVDNnJpbXY4RnVMK28zRmw2L3ZkUy9wZU8zR1huZE51d2UrRUxRcW52WlNoQjBFN1pGNCs0OWNvQ1QvQ3NmT2piR0ZOOWhOb1RkbmN2alNqbEpkbUR0UExDWjE5WmZnd1NYQm5Zcy9VTUo4QW9BNktTYy9tbFJERDFSclB3Rm5TMHgwUzNxZXZJV2JhaWJwbEt0dnNzR1NIWjk1aSt0RlVMa3ZUWVBhK2dNNm5TbEVyTldDSkljT1J2L0FSMDQ1QnQ2ZzlxQUFQNG1QK1o0NnY5eTk5WUhWN3FtTGE5MGplbG5vUmUzZnoycFdNK25QNjAyb0YzU2MxNCtnS2hZNENMRGFzd3BpQmdmdGNiQ3Frbk1mWmxPSGFUcGxIemtIRDY3UURSU2NNcWNEN1UrR29uemFnQStjbEZjUXVKUXpYMUxnZ281dmVNbVRmdDZ4VHJ5c1oxc0lCR1h5WDVNeDF6WW4yZ1VzNjlKQkFVSDRxekx1VlFXQkY2OHBGMDd4UVR1TzNXNWJrV1ZYQVpXeDRZYmtXOThES0FwNFlTazk1WnVxOW9ONGl0YlZEbFVucFpnb0hmT01vNVU4TndvY21ObWU1eElBTUlHSTNvK21LR2RuSHNYRWREYU9ZaUE3SWZzQVlhMHZEZXVVT1hWYjJHVWpnSTZmMEsyS1VjSHJpUkFNSENiTklDL05vRDUxeG1iZ3Q4Zk82dWZDM25WT3EvMUtkMTdMKzBVdDV3K2VXKzRlMEN1UTd0ZlBINjFyaTg5S1RuMG1OY2QxY2lHOHhkWnNRUTRycXlkMTVsUWdrZXNnYy91Smh6WktZLzFHNUFPTFk1SGpzaXVtY09XZVpDVUg5bEVDbWk5VGhGdFdvT0M0b0tDbkgzSzI3dGhKVUdEeVg5Rng2ZVpFdXdBRmg2MnV1NndBY1hWcnFmdkk2OHZkczY5dkM4ZHVha2t5WWc4UU9uR08xWjZjSUo3bHVNR0tEOVY0aytDSXVnM3lpQ0NCK282RkhMRk4yT2NTQU9pVXVwb1UrQmk2eHVCVVJiWkhUUDdCUkp2U0ExTlF0MnoycVB5M0ZIWUN4QndUOStsNi9yMVBiSFJ2MW0rY1A2d2djRWI3ZW1oTWRGWncvYkN3WG9zdW4ranc5bGxsbG5pdjBESUtQM25JNnVSY1pQSThBQkl2OUtoZ3pGeE85ajhuQTVGbEVaTkloZVRWTzRPQzcwOG9FUGhlaG9MRWlrYTFOa2pkZldmMVduWFY0UkxoOGczdEFoUVZYNzh4Nlg3ZnV6YTYzL2lXdGU0bm50L3FmdXpqVzNyak1yKzhGSmRXUkJybXR5ZWsvWUpuV1AxeFMxNEdvRVY0TEdOQjZpWENzVklkeXhJRVBLODBsd0F3K0M1QXNleW85d0RDM1ZHWnp2QktTaEZuY1lnaFFkQ2s5R1BOQytDSlVSaVNsc3hScmxnSmFWdTIyT1lFMzVET0t0SFVqaURWc0FDMnRWb1l3VmszcTZEci9ick8vNXdIVnowSWI4ajR5emMxNGJtMlZRVHc1OXZDTVRRWnRIbDRjcUFkZ2xJWURZeFRhYkQ2WkV3ZmxWTy9FZnBZeFZ1cGhjQzB3WERUUXVxQXpudjRRRFIyTzNRVkJ3SEJRVUdqTzNjSjU4OHBJT2pnbnNIckNnUVA2ZGVZMzNMZmV2ZWIzN3JlL2ZRTFc5MFBmMlJUdXdKK2xsMEJSTUdFTWVhSmlKSldsQk45RzNjSElKcWtCazBXTlZQcWwrVkQ1UkpTSno0Q1VHQU9hUzRCQUZ0c0U1MmtBMFB0dkdNWWFGbFpIM2twQXlDUGdtdUxPY0FQeWxOTUNDeWRYSkV0VUZ1c3JmUURRUFV5WUpRQkFyYzdGaVlWUEVDTkRIVUwycko2T1VVMGRZVmtkWC94bXI0TnFLVnNWOWV2RTIycCtJaHVXZnYrRlMxNzVId001Z25UQ0tHWnRMZEtCRGxPVTNDSmF2VWJWK3VkdjQ4U2lOU2xGWFlBSytoc0s2c041QXRaOFVYR3dONUNwS2xkK1l2QXNLM3RFVHNrYmlCTU5OS1hDQWc2TGlnUVhOUnhYY1NYTG5lNmxGcnRmdlhqcTkxUGZHS3IrNmNmMnV3K2Zqa3VEZGhST0RISjFZbmxZazU2UkdPMGxaY0kzakdvREdXc3AyWGM1dVF4QWsvNjZqYjhKMFdlU3dCZ0VIb2doc2NNYzFsd0hFZWxmOWhCMUNnTmNpVE1mRHA1d3AyVXQ5dzdsanhGSWdva2JhVE1GTzdEb2hqazI3cXI5Y1pMMStJdXZwYW9GUzFyeXhxZE1lazFCR1ZrM0szT29kbW9jdGlHcGxWSmMyNHI0d0RHTVpyT3VFM0NYdmZybUM5bGlWNmxGQngxTWdIbTlsMExlWXcxQ2R6UnJtbExsd0dibXRUWENRYjZaZEFWSFU4ODFIVVAzNmNBKzdvdUc5Wlh1L2MrdXRMOTBFZTBJL2p3cHA4LzRCNEJFUndmdTUxQld5cTRyTjJZZFFsaXc1SnEzVGEzem1ramVjSzNyWGxuREhNSkFMbHF0emExOEZGTXdMblRvbVhGTmNKYVA3bzluY1k1N0lscnFob2M0aWtaNHo0SHlvNE9yTTRGNFV3RHhqd01IdjB4TmNkMXJITUtHVFhlb3FtNU91Rm53cGRqY0NOUkVkWFBBakF3TFQrYUQ1bHQ3U0k0bEt3NkdydHZleEM4eVRwU3FTa2V4REdsM2FaVytxK2lXb2NrVWppa3VBV0xHOHJFdnA0V2xjWiszRmVXQ0g0NGhzZDZkZk0vZ29FQ3dxWWl4SVJBb0k4YUhuOVlsMW9YOVhIcEs1UHVkNit0ZGU5NVpLWDdlejkzbzN2MnRWMC9RSlZCeGpzOE5SQmVSNVA0Q0RHMFZMK0kwZnFsUFlmTnMxTG1oNjEzaDN4ekNRQjR4UGNCRkFseU4wQW5EYnYyMXBZTWVGV1hvR0s1T0F6NVdTWXZLZHVpbUdOOW5MYzBWN01nUXdlZWtpWHp5aWdFZXVaQ1p4aWNBTnIxSUZJT2ZUeElxNHdSZ0F4V0IxWHpoUGNUY01Vd0xnV2dJTGM5d2hralFWbWtTazJEUXNWUy93Qkt6ek1WT2thdFVSWHNUZjhGTUdTd0QybTdNRlgrd2pZdWo5VmtWKyt3ZFFJWUFBQkFBRWxFUVZUN0ErTGYxbVhDbGo0ZFlHY3cwU2NKSzNxMjRzbkhkWS9nQ3BjS1M5MS84cmxudTMvNDcyNTIvL0tYTitQQkluVUVmempiZllnc0ZYbVJTS0dvWCtrUHRPalQwSUllUDRhbTNTc2I4NXgwZVM0QmdHc3Bic1p3ZDVaalRlR1lEMTZHYmpxOGFjUmZUeWdOVStZQWQ3NTV1TVdPTDk0bXl3UEpSdXMwemxzYThMNUVRelhkUW1NUEF0WjZKUVlCbVFZQ2Y3RURLRzBMMzBwSjZTME9FWU1rZWZ3d2lEK3JsclQ2cUsrdmc5UVd0cXVDanhwZEJoTDJGN0xoL1JSaGVtSVBUV1U4VVNUNnU3MCtBZ3ljWmJvWkJEbUNGbktaalgxOUNhTFFaNDFGUGQ3UFNVaWVIeWpTc3dJM3RDdFlVaEE0cHdjUG5ucENZL1dscnZ2cWQ2MTNENTlaNnY3eHMvdzJJMDlkU3JUN05YSVZhb0NtdjBYT3BxT2hRNTZSdVZvdVM4ajN1SDZaUTVwTEFOaVFRL2ZPNithTEl1MTFkY3hOZWZIR2RueVVkU3diMVdrZUkrUTZIQUFrbHlBelRpS0xLYkFseTJMTnN3NzBNbTRTTmRQOE1PMmxQdjVsSUgxVXRhZFhYL2twTmhtdDRhZ1Jxd0NnQUtqeDR3T0ZnWSthMGpkRHAxVHNVY1hkQVQrR05NdkRGQlZzWDRQMzUvTWxhTmgwR0JxNmxabmlFMWc0OG9FcG5oL1kwdXJQemNObEJZSTNhVGZ3MGllNzdrdWVXZTBlT0xmYS9jQXZoMjhqQ0FSc3YwdUdtMVFiTkZPYnFvQ1F0MGtFOFZVV1NPMUVOalJYZUFweUhta3VBWUN0MWk1YkxSMmJjdTZXamsxZGpCM0JQL1pGQ2ZxRzNiODZaUUJnSW5oeUZLKzVjMzBxWXdGZWFGUHlVc1YwNUkzVDdmUTAzWElGK1Q5MkF1anJ4VW1uL0tMSlFVWm5zK08yc3V3ZFFOeHBrbnJpWnZWSFdSMjA0NEhJOGlOYWZyVTEycElFMGNzSklGSUtOcTJuZ2k2b3dqZ3N4ZkFlNHdycnRBeFdsQnVrVzlmSG5ud0V0MVpyUk5SeElKeDNXQmFuVXluYkwxU3NkY1JWbWl4WnRiSEVEVGZEWTlNRTA1dmNIOUNZbmVqZXdFTVBoSnpQVjBWMkN0Ly83STQvS3ZRTldQZ2h5ejc3WHdYa0c3YkU0YWx0YTBpSnk3enNOK1lISC9IT0k4MGxBRnpWOW1wYnEvT2xTenIwc2N2cmwzZTBBeURLSHkzMS9FeDJuTzJUSCs5YzFZVFkyVkhZOWlZczVOSVpISmx5Y285ejAwTlVzcFo4S3JMeVdKL1M2WWxrb09XejVJUTRlTkFob01KbG5oZzhoWmpWRDh6OVRUcXZDaUVOUnV6bmozc0Uxa1YwMnFuUElzQmEwNkJRSjBRbEZ5QzVNcGY0bWdKc0VKVnlHeUFkUG9YTmVpZmVoWDVoeUphY2EvYVlyQk1YVlU2ZVVlSlBJVUpYV0F5ZTlFWjRwRVFWbjZ1RU9rQ3lMVzc2OC9neGp4UHo3VVFlcnJydmduS1ZmNzEyQk0vcm1lSi85dXhOM1JqTVQySHdkMytra3FqVTZ4SUtaaHRXWVhUaUc0MnIyZ0tzYWZ1L3JvVnk3NDBSdzR5S2N3a0FmanBOMXJjT3NJT09ZUlQxR0UvTUJSWkIzd2xIVGl1OEZPR3JZdys0OEkxejBKbUMzeHlKR29zMlBycFVZTU5LaDFQc2cwQzBYOGFnQ0QxN3JWOWJPUmhneTgvWFozbnpyN2YvS3BQN0ZWYkN4d3R4TlFoUkhzRmtkZlExQ3JaTjdFTUhZaCs2clROcmVOUjQrRWhuQTRXb3pNWHFWSlVoQlZJK0taUGQxWFJTR1ZJdk91N0pWRk1rcDZjRkkveDhjWXBWZUVzUERmRTQ5WDM2aEdCTDVkLzF6blU5T2JqZC9lekxPdzRDeUtHK04xL0tDVk51QWJraWdFZFZlSkI3dXdRUEFYMWVhUzRCQUVlMEJ4M0c1RDJPblV4OEJXWFhyMDRxM3FXTk5sRTBxdUNUbmpuRVFtcUFBUmppQ2hQNjlqcHpVeTVLMmZuSXJaMk5iQm5LY0NCbE8zMzlnaXdJNklESko5QXArWGt0T08vL2h5T0dlT1Jjais3cDdtQzhFekNEZ0dxSlArc1dVVk96Y1h0VG1TcFMzRWVyVUd0T0JZci9wdElLMHRPemJiUFVjYkNEcHhnWjIrZTRVV3BVMlIxQVR6OE1RMEhCeWsvN1BGWHFjRW5BUTBXYnVuZUY2eStXbmNCWGZ2YVo3cS8rNkJWL2wyQlpXd1lrdFNyU29sL1ZwcHdidC81a3dMaGkxTFJNQXBnWHlNcnhOSTN0cEhGekNRQk1XaVlIUjNvSzhDZ3BxNUxuRzFUcEZFZC80VEp2NWJzTm4wcjdOTmlVWFN4bFlDY3JtWVZodnA5VmsxSXNjVzBYVTUzcWJSQ2dSeE1YOG5YT0VRT3ROQUhxb0VSOWRsRTdNaEorRHhEQkVSRFVMbmdoOFlGWGZ0c2dpVVhvVUhhMkdIcjFiU1lYZE9DZXIrYzVZY2g2VHBPWnVvZ21vNkxFV1VkUnl6aE9LanZEZUpMTHdvekxoWmpTUXBDbHFJcisybUNFakNENTY5UnMvLzFSb2E0Tnp1cjdCVS91TG5WZitta2IzWGQvOEhvSnZCSU9QMHUzYktJdUY3aStOSk1zTk9PZVJyWUJLMGViR0QySk4yMU9VV0F1QVlEUE44dmlWUU1CRDFUZ21LT2tjRkNwRmJNdXFqT1Fpa2NITWxYSWhjQjR5dFJvOGxJc2hCQlh6MmJPVWhUYVpta1NMTTNueXptTlV6a0hVSEEweWpVZ2trc1IwTExhc3BFRjc1dUFqallTVHFORVZjcksvVEVndVNwNzNLY1ErSlFvRnJDVXdCNlVzbkxtQi9HQjc2WGVpdXR3dEFQYWs4TXJKU2UxTU1iUmZDRTJKS0ZFS0IyRlQxb3RtZXlScU5pWGFpd3FIZGY2a1krWWVSeDdTemNIbDNXWG5zZUt2L0RwdGU3LytkaG05K0hYZC9TeGRwbXRYcEg0aUR1N2huQ2pIWUtFaGI2aExCcWtGcUZMTEdwUU9aQVduRW1kWFQ2WEFJQzFPTGc2dWN6SzR4ckpkZzhuMDBrT0xGUDhnNE45Y0FKV1RudXBRK2JJS0N6bUd4WUNOZUFvekttN3QzakkxUkhYNEVrcHRVVHdtRktPMmRZQjNoUk43c28xMjZjQzEvdDhMTVNEUDdCeVprZ1oxclhVUkVwNDhpUGZCakZCUkIwMDBqWjRTSmdHU21yQVJKMXdIaTFVbFN1UXpRaFJsQmpZSnB6RGdjaXVranhaMytXQ1RGSDJUdmdTdGdFMTZ5RXQvcjJTTTFHNEI2RC9ibDFCZ1BzRFgvS085ZTViZi9LcW45SGdVaXdscFV3K3BzMVdJa1NvcEk2cVRWQ2xKSEFjbnZ3Q2dqK3BzOHZuRWdCd01CTXVEeHpGT0ozbWlGdWJHbDNGNUVkV3JRODZqMFpBb3BLUHNsTUZvbHFpYTNTb2lGc0RqWmpCSUhKN0VMUGhSb3pSQjlCZ2EyWFdha0p5czVQSFdQTW1JTG9hNXZxZklDRG1hSzVNZmtvcERBSndNRlN4RlVpK2lyZ1ZjQ1RtV3dscWFGTVVhNXNST2NKZFU2VkUwNmhaeHBNTGdhazNSR3VWd0VjeHBtWGZCTFJTU21SQnhTVlZQQ3VnMXdaMDI3cEQzeWtBOE5LU2R6KzIyajN6Z040dDhLcStQS1NaeEUzYVByRkk2VEpORTU2eG1ndEZ2WGN4Nm95Y0R6VHJJTkFMbWlrMGx3REFLbzBUT0p5VXQ5MXhGQXVaL1BTVjY2ZThLUUlndWMxQ002dE9XYVhxQXIzQkYvYWVzU0lDOEdvZVZZeklIUVQ0YkNPTmEyMkVWblVlRWJ3aEt2U3FYL0lyQjhlZDZMd0ptTXF4dm5BM2xKdUF0QjlIdE9TZGdPbzV0VUlUZDFKNXlqNkt2TmIrZ1lJSENLbHRsTlV6SFNsOGlBcjdzd095ai9JeUFLa0VrQ3BHNVI1dUtUaXhVSkR0VGxWd0tRTDVQZ0VQQyswb0NQQkVLNjllKzRLbjE3dGYrT1JWdldGWXZjRkE5OUtOVmdUbENGdmNvSTB2YkNFVFhUaG9CeWlTUzdTcFloV1J4Qm5tY3drQStZd3pSc2JFay9tREdYaDdDNm5iSm9JdDJ6SDNsd1VITmNVbUt1dFZmQkxFYmxwaDhQQkk1dHJRRUVIbnBCeFlQRDdJQ3o3R0NaS2lZeDBjVEF4ZTZyVEpza1EzTjAxRnRkQ3JNSUtHcjM4T29QQ0JKSElvTU1RUGc4WndpeW5DaXBpQ2k2RGpaRFIraUhSSXRsN1NxRUl4dTZjbnRJOFFrNm82cUpvWUFzTjJWYVpvMnFnaHk0MnBsMDNBSFAxQVkrSjNGU3JqUXhVRGRCQmdZbkw0Y2t3N0FHNjh2dWZSMWU1QlBTcDhTUzhtbmVqdWRINGFFWjBaN2Z1R0lBMDJUUVFsVUpDaTNTZzdBQmc1KzlOY0FnQ0JNWGNCTnBTeWJNTWZSMDNVb1dOY3YzZ3g1SXlraWVhT0ZUOXNGUzUxUUNhWVFDMmpWRllBVmtLNjZhVVpsNFZ3cmxPV0FkQ1B2R1NsSmtHdkNGSUdzU3dzaG5NWEFBbGFXeVpZZWdkQTFFTUl4bWNTenZjQXlQa1QyVHFNaFNUL3NYTUV6eVlOSmVQSmtvYUUzcTZHN2tsdjUwTldoYXd1QnlhWTdKRTcxRmRVTkNIT3RyOHREMm55YWVrazM4Z1R6S3ZYK0J4NlI3T1V5NEQ3ejB5NnozaDRwZnV4ai9LRklkWFFRSjlNK1NCL1Z4MnpMSjNjSHMwVkRUSlBoUkJQay9NS0FuTUpBQmhwL3dwSVB6T1dNZlk0S2VWUlArUUtFbUI4RVpod08xZXliWExxRXBSSTdwWUNSMVlLcHBtbGRoaUEyNDJLUFZGSTQ2bXF6bVlsWUJJekljbGRqNXhrbmdJVzJLUUNrN1dKY3Q0RDhBVEhnSG93MEtNOVpNUVE2eHNDS21KYmtiZUZiMVVIMnV5U2JKa3F2TWYyME5CZTQ0dmkrT0VnUGJPRnBQZWNSYklKT21rbTVyMEVoeFA1bkp3KzRQa0FQZzFnc3I1YnU0QWYrK1dibXZ6eU5VR0FxbTVmUlAzemNCSUE5d0U4c1UzSHlNQURJVk5rMCtIaGs1MTVwTGtFQUQ3RHp2RnFvNm9Eam1kaU9GaDE4VjlKT0s4dHUxam96blJxYyt0VDZvQjNmY3JpcXZKZE1qSk9Zb0xQY3BUbjVEYXVDRWs1THVya0lPRGF3WURzMnBoZ0JsQ1NNMkJRaG8xa1BWWHcwNVNLV0JwM2xwbDRCbDE4REtqQktWbDUzVW9qVmJZbHplYVVlbzZsTzFDTmtTbzdHSTd3NllJUmVsUlVTL3IzUkN3VmFqMDVJMjAxSGFYd3hVZ0NSZXNyZm5MRGhTZUNRbyt4UElvQ0NBSXU5OGh1ajQ3Z2FVRTE4dGI3VjdwemVqRXJQMnJpajdjdEgwMVVUeks0ODgrQ2h6Z1dwQ2tiQkdGRFgzUjJBREJtOXFlNUJBRDVvdzVrWU5KQkF5U28wOC9wd0t4UDJYSUFpdHlzbVNnY25yUnNPM1B3TVJSQ1AxaHowSXpFUVlyT05DUllqUEM0ZzhtcGlMeVNRNGdoVUhnSzNuekljT1hJS0pLeWF0SUNLeDd4K2tsQTZsRElyUXNNR2xuc05xanJvOGl0c3VDNTA0VE0yNlloMDdEVVZCNFEwSExvQXlNQ2JiQTloVTBTa0RMa3pNb3FYUGdXdnl1WnA2ZEhsZXh0R0dLdkJGL1N3TnFMN3RUU2V3aWpIZm5kOGt1Ylh1MFpYS0kvb0hzQWorZ3R6Ui9WTXdGK0ZvaEFRTCtJbCs1aVFoTW8rT0ZSZ2dIZFo3SENrNEJKTkF0OFVJQXcwd21mNWhNQXBEUkc0d3g3V3dBLzdwR0czODRtcW1XeTR3ckM4cEtRZWRKVWhsN3JKa3hla1VNWTdwYVdJc2s5WElyQ1pQQjVpS2lRWlFBNk1SRGlJUWhvY2hJVUtoNWg2RUFsSmVNTkZKbkNJMko4NEQ4UG5KS0hjU293K1RVUTQzTm82dUZYdEEwYW9sTWZ3M2txN1djUjlvUFRMWWtIVjdzdDVRQzVBM1E2S3N4b1JUSXA4K2s2OEswdm85WkFVRytpMFBaUEVSWmM3dUh3bkR0SFdDWTdSQW1MblpYS0NLYnp4Y05sQUxPYjd3MDhlV0c1Ky9Dck8vbzBJUHp2eHVDelJJdUlTd0JRSk1ueDRsUzA0bnNkaU01alRsY0FjM290dUN6TlR3S3czVzVKUjRDNFRVcW50R3oxVXdUazVGRkErQkxsUHFCYzJuTXVPSW9CdERCMSt4U1U3SXpvc09na2VIeGpLRVNVZ1NGTlVSWWNvSEo0Nk56QUl5OWhKQ2dsUDJEQ1JhYnBPcUd6TDZPa2dIVW9mR21raDI3NUtORGlTek5wcFpWSllabkRjOHQwVzRaYjFqNDVZaGlETDYwUnRwZGtFT2NJQ0pjVVlxQ1N6Ym5yRm94aG5ZYTRDSjFaS1NhOFNzaUdVU2Y2SjRLcjZpb2E4M05qRHJ6Q1AzR2hmQXdvZmVodVA2UGhTUjJoUmlnTGN5c0lrc3pBOVhwUVpxeHhlQ3dvbjNXYXp3NEFaM1BJR3ZkWFkveFJEY1JKS1l1T3lVbHBPVFJRVXJaRlo5QXdkVWpKa21YakVtbU9saXM2Q2JKWmRMSTRuVklQZ0I0V1E1bnNNV2lpb2xHRjVDYVFReVVsNjFGa1dNK0NOdzE2NFdIMTV6TEFDSXgybzhvRjUxM25ySnE1cUU2eHRtVXBjdVMyYVZ3SDJwaW41WjhuWFBZejBXVHhMNFdxc3hRMWJLY0hXNnlud0RFQkErdGl0UXY3V0s5akxCUnBLVlRJZWo5Rk9GOW1JVDhhY2gyQ2NySS9xbDl0OHZZZmx1eFVHbEFxOHozdUExaFdqek1kbnNLYi9Mbm9VSjVsbWtzQThBMHNHV2kvWUtpTzF1RERHSmlPcHJySFB3Q3B5SXBPREZSQnU2TVRYd05CSWJwNmtlRWhrdko2RVJWS1V1bjdhQk9xRUNuZkV4cEdtSlJuZXpGQ0hQY0xLTGpPZnJFWHd5d242NFlJblFOQWJGd0MwR0Jwa3dhMEF2RlpkTjVnb25vZCtLS25iTVRNTGFIc1lSTEtIaU81R20wVTR3WmloSGZaZzJ1b2lGL21XZHFEa3YzV2M1VkFVVHF1VG40OEtxSHhZSlZnS3Fqc0ZSNy9hekFpNno3OUtDdmZHWWhCRncyWlI1VnpyQ09hdmxJMTU4cXNiK3BBbVNEaUhjQ2NJc0JjQWdBRzJ1RUMwdkhob3NPZm1mVHBLSnhJWWxKa3dubmpSRnZ1VHhHeTNab2pqVXAwWUszWVE2QWdtNzhSVHBrQmtVR29qTU9lcnpEa1FFRU9xREt1TEhRZ3R6U0puSlJ0L2xJSGNreitZcThReU9iTFFZd2lMaThBa2VsRE1BQXc0TnhTTm5iYmhndGpkc3cwQlpGeFFLb2tuRVJpZ2dYVW53K1FuWUUrVlhYdUUzdU1USUt5TXlUWkU5OG90Y0kvenVlL0hEa0d6K2wzR2ZscGRUNEpnSmozZnd5cllzWUdaR1RBVGpYUm40TkVEdStjNXYrYzdnRTBEc05JbkplT28zellsRTR5djJTUTNCL0F0QkVaNk9pZ0xCZGE4Z1JkMHFpZ0U5dkFVZ0F4VEcyajhMZXNDU3RQTm91MDRJSVJJc1pUQVpBdUIrUTFaZzRDcXVTNFF3WkhUU3JFeDREQzBGWXlsTHg5SjJCZHFaQlFoVmRKQWFTeUkvU3cwVEZ4WEtieEtla0E5SDdPV3pCVzBraFJiQjhMd3BjdHJpMFVPVldjK0JoN3BNUkZ1YXorS2NrT1JwQzRDREFDdmEwbnB5d0s0NWMrTVl1eStQbjFlSk1RYm05RndNU3V6emN0VmJ2ZTVXOTBRUThtUGJKcDcxTXFBR0JjSHVsNUREMU9zb01ranh1d0thdUNPSlNqWkc0eml0SHg2RUdaVlgra0FMemhmdkpNSUUxd3AyVEhCcXNFQUNBbldGeUp6Z3U4T3QwVnN0endWUjVWVjkyUTEvT2wzc2JyeERqemdCT0J5VTQ1MjJVTEdsOEdpb0dKYU1zRWFCVnpGU1BIYUJpZGFLOXcxUEtCekZGbHhtZDd3RzJFT2MxSzNTcGF0QWllb1VwVmdvQ0V2VFV2Yk9EcTVZRm5MUWdrOVVHYW9Kb0JPK0RvRDhJRzM4TkFNS3MvbHdBZVJ4WnF3VWp4MklHQWpHZ3ZKampOVUxiZXlpa0FaeUFBTmVzMGwwc0FJcVVIdFF4TUI2V3ZEMnRnZFpJcU1BR1FBeTdsMlpPTk1CenJOZ3ZPZk1tdmlsRkdvV0FvV1MxWElCdXVET0xQaHAzcmxEeUlnczk0WlRrVFZYWjdOcHBDendPdjJSdGM2ZzNLaHhEY0FQU0xVSlF6Z0NNS3FLNzNrMHgraHByS0pVcEZMc1FnSWExTjFDQ0JiMkVqVC9aVW1qNUlBemRtUnpUTnBrb1ZGYldOOWlTdGhGNzlSQTNhaXdKdUsralMvMWxPZWpUb2FVb2tGenI3a0tKaCtZbHVkRUNtTGNGTVdENE5XR0dDRTVGSmJveEt3RFZ6a1poQm91c0syVHpnS1Bzb1BPQm1tZVlTQUdTbkhZWlAwaG5IdGErZC9NZ2lrWTNsbGFhQ1JRV1hPWkVvSit3eXNieE5NWm1NYXdkYVJxMWtEb2Ftb3JSQUVmQTFWMEV5UEo2eW5ta3FsRUZtQVpVL3F1ZjRjUzVXZ2lqZkIwZ1JqRUlDd1JJM29taE85Zk1Ba1FQWHNnODh3YWgvQ3gzNzRNQktzeU5ZajBiOHVGeEl1S3A2SWdxMVdGaGNicXNYRTZ2LzJ2N3YrWUNLUUdjcXk2bUE5aWV3Q3BRZEFMVHFaekF3VHphT2NERmFXaEZac3NiWC9hUEJiVjFnQjVTVU5lTjhQZ0ZBMWpzd2ttTVF1WUdqV1ZkaXF5dmhlRVI0OEFJVWVTVUx3U3BVRW5BaHRqa09KeVd1Q2dwMGY0WXhnMEhNbUo2R1hOTUxZRGh4NURSZWdvQ05GMFBMZzZRcVF5RHNCV1dTQ3J3VWRKbFJWK3I1N2pNOEdpMThUWmlQQWlGUnVXNVhMVVU0UnUxQmlZWk9PdlhPUEpSa1ZMaUZoaUhEREZPNGJxTi9yd29CTTBTUkdkU3BvSG9OM0xkcUIyWW12SFAwQXdiRmlRQ2dDUzYvYy9uZ0tpbUlYQWZWV09Hejd3WFpSb1lRL09Ud2NDa3IwTHM3OHZaUWNlWnBMZ0dndlFTd2MyUldPNW1QWXFVZGhHT1ZjT0FnVVU2YVFPWUw3UmlsVS9LVEU1OWpQa0hJYWdKS29wMUk3QWJFclVwNURWZWY3aE1EQTZLTUNjYUxPaDBaZlcxa2dJbDN3eUNwVDZ5NVlCSkg1Q2Nod2dld0RteGc5ZmNMUVJoMFlLbGtva3BNZnVHVm9aQXJXMm9LdGs2dFZpSWtUVldja0RWSSt4QnVEcGFzdXA5aklPQmtDMjRNZjQzVGZvejlrMnlxbDNxU0YxZjB1Q1I2Rmt1V3l6clZ5UzlQUnRHRzB4cGxKaTZzMldjQys0WmNLR1dZU0tsbWtZVU1Cd0dSWU9GSUZycHdYbWt1QVFDbk05azhxSXUxOXZjUnJCejdwSFpra1ljSEFVbEdsVUxMWjVSTzFnTStZT1hJYm04TXFWZzYxaldnSmhNa3c5R0Jxa2t2UWkrc1RGYS9xTU5vbmZnWGpldSthbk5VenJtS1JNTU9TT0pEVk9ybVhBZ0hBQWszelJVaUVQanVzckFFSjdjaDJSRlN4Q2xaNVJRZ1JTZWtOTWw4S28vUURjZXh3TU9MUzg1V2tZU0hUZS9IWnQyZUx6SE9kYXBsbkttVVpZQStwRWl5T3dqdkFjTXBxRFJJSGtjQUhzK2EvWWlFaFRLN05BdFhadG13QXNOUVNNaHduVUlycEdoT1BQQ0RHd1FXbFdlVjVoSUF4anVBTlBJNFJ0bGg2VXpsVERodzR5UlNUS0xpNFN4blIwUWVna3hEQUlDVGRnZktVMjdkdG9GcjVQa3F6NGdCMHUxYURJYTZzdW9aTE9YU2hsdUFRRXNsczE2d0NjdEJ5c0hGQUl1L29MSEY1T1lUZzhVN0VTczhITFM5RkJNdHI3QVpkaU5KeWdhekxJNUVCZk1SemxNclRrVTJRbHQ2Q3ljTGlvRnZGRXpTS1BjdW9JaElTVEgvbzI3aXFCYXd6ZzdtUlRwc09ySjdYQlJMdlFRUTBiVFM3cmI2WnF2NXRTdTNnbUNBekNtV1pzak40MVBoS2V6dVQ4SHpTSE1KQURqZXdSSGppMVcrUGpxaWhkVGw4T1FzZ3V6UUpCUTZZczJuVTBaU2RJZ0JRRTRoZU9DRm9HSkpQYzF6RzZ4UUtTZTVhc2U2cG5veG1TV0xsYmkzRDhuUVE4NGdSMWpmTUNVbnF4ZHFtRXg1dkFPZ1dudXdBL0MxUDAxQlVBcVZhSGhLYXREQjN5UHNuMUlGTE9MTW8wSVJEVVovZmFtd0J5OTE5cE5jSi9tT24vZDYza3FHVi9haVE2b3l5S1ZnZlNLekNvSWo3Y0xZMkZtRjdjQkJoZDJYaEw3bWlyN2UzTjZMbnhNekVRWWRxTnJtMEpBaG5NY0lSY0U1NFdIUEk3L2NSWlZacHJrRUFFOSt0cTg0UXdjNWsvZ29xVlIxRlp5R281Q2JpWEltOCtxVU9YamFwSnp0SjQ2Y1pOMkNJeEFGbDNLdHJ3cE1iT1FZenltRlVxc0dnZExCeVdqaFRGRGFFZElBRlpxVXN1QVIydm9LQU1aT1hrTzFwQXRQQnN1MEkzY0FERjlHbFlPQjZubkZLcnVRcHJVUWZHdkVnT29DeXRUa0tWWkxMVEJnYXdsakdFYnNEaWVXYzJHcXRGSldadFp5N3JFOU5HaFhoUXpyeHJzODRvMU9MOGlRYnQvUmh2amRuYzZSWU05Nnd1SlRYdlBGeDdMVTRyaTJ1YWVmRThNblJRNVNvMXFmZ3hMT2NVTTVRWUJFWmxtTnZFYUtlV1oxbWtzQXdBOTFRRk1vNVlBT2Z4NnN3cEpqVVJhT3dPWklFSjdpeWVTMUhqUXBJSENaZzFReU1rQ2ZpVFpLOFNTWE9rMXdEZ3dUT05FR2JBalBuaE9vMzQrSUNGL29KbU1Fdk1ZVmdEYktKTFYrRkJ1UjRQcWJnTkNHZi9WSEtOeDJtZncwa2JwWXZoQk9pZXhWVGNxaDhyNzZvZGh0aURpekg3SWNGa0pveExSd2d4NkFwVDhHdUZFQmY3V0o0alJjeTJORlNtQzJpV3FuUGxPaHpuS3pJc0FTN2xRQWtBREtUTjVMTjNiMTJ2QTl2UjI0OEFxWC9yYzh5dWpoVTlEU0ZQUnJFeXlEc2Q0U1R4aWVUd0RRck1tQjdRNHZ6amlPTGVsTWYzd2lPV1BucFV6d3RPbVZHNzdDV1BVb2RQTkRIMGdxekNKbUp5SEFuVjl3TVJEVTJWSUluWHdBcTJyRnFYRmdFdHRscjhxT0lMUVdhNFhwK0llNndWcDlsVnJFRG9EUC9IV29Kb09Ed1ljb1lIQnhBNUQyUWk0VzhlOVVjWlFTR2FTcVlDbU9zOVNwNGtmVksvNDJRUHEvZGtUeUkwK043Qk5iSzZDQnFHbkRQc1lRTkVDWFF1TGN0eU5jMUJwWlY0cDViOGRGbmVnakgraGttRlBvVFgrem9yOThaY2RCZXJWMEpHU1N4MDloenpKOTVZZTZsS2VPTmxFTTlLZmJnbmtPYVM0QmdBR003OXlueW5GT25WaEhNSko2SkNaL09zeDlvcE5sZzFmQ3FmVUFLR1dRYk1HTkFqYWl6NFB6OW1mM3NlcXpGWXhyL2RTc3Fac284WG5PcTh4bnl2bWUrQnhrS0o3UGlZZG54STlzNnVuQUxuSmZBa2hRVG5pK2JFSkE4THZuNWRFNlNOMXVCS3VVaDRYUSszS2paM2pEZlFKV1RWWFlVTnJSVmprdWpIQ2xra1VoRWRrdlBiWkF5WjE1UVEvMEtnV3o5SHdWS2tBdDF6WVNVK3A3VURhQldlVjhvaklucGYwb2RxN1JnYU0vOUt2QmIrdzBmb3NHUXB5WXNobWhxVU9STVpHWEVKU0ZyZ200TFZmQ0RJQzVCQUEvdENJckdjd1l5K2s0QmxJWHh5R0gralVYbkRla0xGOWwycWp0RlY3alJuRGlxQUpjVGdCT29LeXJHd3hxcTdzbnR5b3lFTXhaK0N3TDJHV2RpckxtVHg3WEthY0dsM3FuTFFRdEFzQ3lJaCs0aW1jUXVzd0VMMEVBcWtkcHpXb3J2aDhRMWxTY0FZU1UxSUNCeWNhU0lmUFVWL200anF0TXJSZkkvZlNEOE5uWTdmTDlqUTB3cFREQU5TTHJqN2pDd0tRdkZqR0JjV1hreGNmVUU1NmY4L2FOT3NGY25qM24xNEdWNE1FSzBXN3BFRXU5a3BDbi85aTFLVGNOUklFZFZOb0tRWnJKZVM0QmdCWE1GbU40T1l3N29rbkZSM1pZT2pIbE9rZGVZU0tqclppZ2ZidUIxem4rZzFCNGpVVEdJREVnbE1RZjgwcWRYT0NhQjFsQklIZ1pCblhnaU1iRU00NTY4R2h3bUc1K0tPeEZJb2NEbmZOVEJGWHhEb0NQQVBtb2lSK1pvQjN3c2Zwb0Y0QThWUWlaeUlZcXJkMnVRT0NhMFZJdEdEcTRXT1QwWEFFaEFCSkplWkdlUmVlRFUvS0tNelNQZWkxUFphbEFTejBjUEsycTI1dEdhTFcyQWRFRG9GMHNmZVp5Z2RPdHZva25aNi9vT294Vi9QTE4zZTRGL1dTNFh4aytVdFYxd0NHMDZFRS9rVExRbDJLTUsrRXBKdzYrV2FhNUJBRHN6bDFBT21GcW54ekNVanRIbFpra0tTdXJwVVBkSG1RQkxld3E0SXdzUXhGWWlhMTA3U3hqQ3NGd2V4SWVKU0NySjVGRmtjbm9pYXZjZ25JRmdJL0RNMXFjQmU5SFNHbFRLTnBGaGhNc0tuTms0QVQyRGtBTkNQVEJtYis0QVlqdVRIekpRUkM1dVF5NEJ1SEZxV1FocFdJYkJZSXR6NVc5QXFLZ1JFMk5qSXBMbGdHamtRT01Db015OVFzaXNuM1Vwb1ZXb1FhZEFoSWxFZE9sSkZaeWlpaG5wVmo5S0RiZnUwazh1eTRSZWZTYTN3UmRFZjNqcjI5M2IxelhEVUIrS3J6MHIyV05ZR1RTYWgwS1JVZVA1ZFIzenZsY0FvQmZuaWpMTWQ0bkFjUEpkbnVyN2RDV0RSbUlRNmdGdDhUQWV5S1pxVFJiZUkybnRzcTVRbFF4QW1MeURPV1ozYlRBd3c5ZkRuODZNWFdNRGc0T2MwTXdnMXBqOENESGVtV05NbDJOYTNSMzVRZ0U4U21BNnF1dVgwa3RtbHZRaVU4YldKV1FhYmxGckRQYU0yZHBsRXBLUVJQZ1FTcGt3WnNJM1lLeUJGK3BZMVEyMU5DbmdyU0M3QkFlWisxZlhJNlNwYXFjcFY2TU1QdVJQYmtRWWJFdGhUS3RDcjAwVEQyWEtmaUFwS3hPWVB0RnZqTk9lUHpJb1g1YzF0N2ZxNytxOEhOaFAvZkNwaThEZURsb3BKREh1WWNLUlUybnk0Tld6QlErK1ZsTU9PYVI1aElBTk9oam5zbDVaU3pzNjVLakdCc0RpTTdxNVhrODlQMWFpM1VWVlFQUmRwa09SUkYvbnh2MTZCWFhMejNSYU1qei9iU1ZQZFRhNENCQUZWV1BEdTNQcG9HWDdEcVFrS1BleFFZUHFGS1h0cE9QV01FQks0bjJIQUIyaXU3VUY0TUhpazc4TWhEcW80RGI0VVJ5Mndtb2FJR0ZCamxCOUlPTmxJQUZCaXJ4RFZldlhGc24yVlB4ckZpRXhpQm9Lb2d2V0xHRVBrZ0JrYnM0d2cwNURsZmFMeUtON00ydHZoSXArN3JtNE5RVTVXVkZXbGIvOVZYNVgrVXREYkNmL2NTV2RnUG1zRUxCV3lyaFJ4Qks5QzlGN0RRcThVRU9IdmpLMGFCbkJzNG5BSlNKWHpzWUIrZzRTa3AySmdhSitnd28reENpanVKUHdEZ0FTbkxiS2pQeFRDOG5zNkNmK2VKY245QW9kWGZMVEtGTmZ6dE1lS05nejk3S3FwS0VWZ3hwazZpamlrd2V5djZoU0UzWU92bEFwcHdDVXZSQlhSMEVNUWNBOUJRL1BsaVdOUE1JUnBiSEdiSjA1RDJBYUFPdWFOc0txRVNxK2tjeFNOU0h2VEJTckhWb0lJc0JacW5VTVhsMHNqRFRBeW9OcUJBOVp5Q2FwR1lVaHpLaW9uRU5PT1M1YldsY3N4cFFhMlovREhLeHVjL0p5N0VzWUVVWCsydWFPVXllajcyMjNUMzNtbDRITGp4U09aT1RFcktNUU1TNEZRTjk2SjBpZUpKVVREN2FXaHIrMUhEd3pPQTh5d0JRdmM3UFdybVh5UXh5N1hyMGhFQTdHVURKa3pyQUtCY1lzdHNwZktETnEzTFErdFdteWlpMElxTEpncGQyUGJVQmxHS2JyMExUUmxBNHg3VTVyQVNDbW9SZ010UEJVWS9LckFxYURwN0JnUWZiNmc4Y2x3Q3FMOGZGVGpNQ2pTV2doZzdMTFRsTjFKRUlDQUptcFo1bXlBaERaWkticDVBc3VGUktWT0pjcmtpWWhzbVR2TFJKNHdiZHhoQ21WcnlWSjVpalR4QmN5b0tZSE9NMEJUVmk2ZXUzaEFpZGplS04vOTJPU0RVdk1QN1RKYjd1L0M5MTYvcDVjQ2FPM2dQYS9ZUitFb3duQU0rc3RUMmRVNy80dW1uY3JVb3QzSkJ6QUp6eEpRODRxVTNsR1lDekRBQ3BybDZTSW5mS0huZXNqTGR6Yjk5N1dkOTU2eVFRTVVoNm1jbWMrTXFqaXVBU1grR0NLMFBSREZVbEE3WGt6b201b1k2VkFBWUQzY05BQ3IyaXcxUEh5Sm5VTUNWTmQrOVY5ajBBMXd1OGg0M3hLYStzN09DS1VlaE1BUENOd01RcGg4N0I3cFAzQXRBdUNFOTJnWU1jUnBLWWttOEFsNEpwOE1GZkJGVCtoaWRsNjdaWFljdWE4cWpxVXQyN3JRSzdWUWpna1ZOZzhIbEoxK0xOV1lLRks5M2lGRkl0dU9HcTJBYTNIN1Fkc0VxbE91bWJzdW1pMFUrczhpdUtBbWZYRlF6RWMwVlAvLzJrQXNCYXVmMVBqOFlmNHZnYnBaUUxEYmdrZ3pyQnowRmJud283Z0dLZUI0TG5tZnU4R0w3UE9aWDcxZ0QxY29CNWxDVjc0MUJRbFlmQVkwU1BDejF5Rldyb0tXc2dPT2g5aC9YckJ6aHY3eVdRZ1pMWDhJWWxLMjBrYjJFM0EwTDFIVWdLREQ3TllLZkF3VUFEUndCZzlTZFJSbUQvVWhDMVh5NHJRbytnNTRDbWd0dUhPSVpOUUtCNFJNdEFad1M4cmhKTW5DbnpNTk95SnNLS1ZzTmxEWDQrRXdkUHdyZThzWmlQTFhlazlMYU9zSVhBVUppa1JJVlZ3UlBmT0NTSXh6aGdFblVrbElSK0FSM3RYT3E1OVZRaEpZam1HNTdPbzQyMm5OT1lJTHVzbndNK284blBZcThmQmU3KzVVZHZkaTlkMnUwMjlETEE1QXV4MlFoNUhPbGJqeG1hU1phbzRIT2k4T1dFdDQzTUljMWpCMEJuOHltYk84OVc0ZXc3TUM5bDJEOFVrTmM0cTZBWVI1R1V0N2pFai9QVXNSRzFINlNoSXBkT2pFa2ZxM3N6ZzJvOWY3eFloZ2ZWaU82SWlNL3lHVFlNZi8wMUk0VEo0ZDFDMFRzbVVBU0Vhb2lDQVEraVlBT0J3SU5HZ3JuSFFNSCt0YTdJRG5VcURoMVFwdENoQm84UUJWK3FxQnoxbVFCTTlGWGQvbDdUNTE5cm1nWGNDRnZWQ0dKcjNDWitNV2RMRHkzZDNGenVibTdwYTdJcWJHbjdzaTFsdVJ5TXlVOUQ2RzhsYXQ3aUF1WWNQRUNERkNLTWFzQ0R1S09xR2NNNm40dG8yKzhPRGQ4NENLZ0dmdkpEUC9vRlZtdyt2eUY3NWU4dE9lcEhmdjY2YndxaUgySjhVemZobW90QW02VVREQmE1eW1vS2paQVVCMTFiaVRNRTVoTUFtQVdZbzhNRDc1Z0dGUkVoQjNHdGl5b3hoSHRpQ0djVzhoYW1yanF4MG9CY0lDc0FZZ3BJM3lVMko0NDdURWhvZVhlWFNSczMvQUlIamJrUmQveWhVVXNUWGdQTlk0MjZ3bmlRQ1RCT01uQVhuKy9UWnRyQkRvRERPRXZSU1luNktPRmZDQmJJaEhJenlJYVpCQnduQzhqQm5aUGJQRm1QZ3V1RkhHUng0MnRWazM1OWRiazd1NkZKY0VZcm9DYi9paHF3N2pUUnRDVTFkUjkxMHUyYzdicnJteE50bFZlNjZ6ZjN1aHMzQ1FRN0pSRElQdGZoQkp5NWlsWWdjWlNWY0E2Wi9nSXFhaG83NVZUNFc2NVFzZmducTZUZEl0cHZveHdjazRUQXgrVGYwQTJZcytyVUgzMzJadmVoVCs3SUo2eitKRHpNWDBCR1JZTWduUEFSYXVHZjRBczhaOHlIbm5oSmdtM21hVDRCZ1BHQU16aEl5dTkwZzJOblN0UkFib2gyTXpSRkc1NkFpUyt6Q1JvSFhvKzhMeHZOcVUxbWFoRUZwcmNhV25Rc2c0QkJtZ00xQmtYV05vL3FEVHBiWlE4QU1hWElvcXJGTTZsWlZmTVNJSmlvcEoyQ0JNWjdBYU15QTlZdFNxK2M2TWdrMlZkaXFMbHd0T01BMHNBQ1BSblk2cTlxaXg4VGY3bTdUeFA2Z2lZQmcwYjN3Znd1L0UyOUJPUDE2enZkVlUxdzBubmRHYnRmdjViTHp1Q0dkZ0hyMmpJemNhN2VuSFJ2WEYzcHJ0NVlpa0RBNVFIK1owYUVFckpWTXZ6ZjRpVFVkSk5VU0d0NnZDQ24wQ0JMbVRmOGlSSmp4UXFvL2dBdm00czY5cU92K3pYNUNYd1hGZmhXNU8rYnN2a0gvcjlyWHYzeE5YWDRjektNL1A0UFBHMWdxdHRTR1YwNVNPU3BEN25oZUNBMFdXQ2JTWnBQQU5pTG9XdHJUc0FrVmxvbVV2VmdDeGY1WkQ1MHlod2c0VEttY216VlBIa1FHWWthVFZJSFcwaURvc2VRbDUxSDF4TjRZUFNFRnhRMEh1TUZRdWIrM0ZpaGtaV0hHTTBkbHdFTVRqRW9HR1RpZllDK1hCQUNyQ25vSXFCeXFVNlVBNVA0TEpGbnVFSXUyMzArMTE1anhWOWY3aTZlblhUM240dTczbXVTdmFGUjg3SFh0clFLM3VnKytQRk5mUk51VjNmQ3FTbmE2cVI3VkQrVStkNDNyM1ZmOE14Rzk4UjlXdjBWQ0ZZVkJNN3BlUDNxVXZmNmxhWHVtcEEzZEduQVBRSi9qUWJqbGFKZlNtQ1FWa1pqTTdRb0dRWnNkYVowVUlJU0VzWWM5RlFrOGp5QURPdkVUYjhOUGVHRC9mcnhuKzZjYlAvZW43N1dmVXkvQkx5aFM0S29nMytwRTM5dGE5RFp6WkVpQ0FSc3hPaVVGSExkQS9BUUYzaXdZYVA2eHluT0l3RG9VNjRKdndaZW94K2hNRDlQUDRyUzZTQThraE91ZnNUWUNFbzZQTHhJaytTQkpaaWNnVlRMS0ZadzVIM3FDd25SZmc1Q3VocCtUeXdZVklUdVEyWEdMRnQ5SmxOT3hsd0ZCampxRkRrSXBBN0plaUtud0R2Q1l3dVRQWkNSVzZZQ2dtL0VxZlVjZ2t3T3k2SjlzNGJjaXJPQ3RrTHlnb21neGZVOHEvNlo5UlZ0OVplNkJ5OW9CZGR5djZwMnoybjcrL0xsN2U3di9zeTE3c2MrZEVQYmUvR1htNERZUkxxNVBlays4c3B1OSt6TE43ci83ZC9lN0w3d0hldmRsMzcybWU0aFZiNnFRUERveFFnRW43eTAzRjBpRUNoeTdIRi9RTVBkRTFxRzkzbkl4Tjd3ZTJrRUh6aGxiMUFvTk1DR1RwRlVVY2xYMklmK29DOUVVSWZ4VVNzM09UZjBnZi85NXlmYTJlaXlSN2lQZkhLcit5Y2Z2S2I3SU1YWGRHNlJtYjR2bEI2UC9tTER2L1FYcWRjbnloNERBaHRwOHRiczB6d0NnSzYzZDNkaVJaUkJzcnczOG5nR01qbVFNZkRpMktPUUU2ZmNFeXFyTkdWa21DMXo4VXdMVHRtQmd6WlJvdFN6UGlxU2tKYzJBcnZqaFVrZnhLN0FVMVRZekl0TjFGZGw2dm5RaVR4M0FFR0VJUTdmL1dmMktRaDRGZEtBZEU0OUJxZHl5cGtqaTVhRXFUaEExckpsalFhdWFWbjFHZlFQbnRlS0xrYnVlTVA4VC8vTnRlNzdOZmw1N3AwSnNLN1YzckpGZFp1d0tTM3pmS3dTay9xZi85eE5mVlMyMWIzL1BSdmRiL3owalc1WEFXS2lkalllN3JwUGFrbDk5ZEpxZCtXYWRnUGFCL0JPUGI5dW04cFdGTzlnQ0Foa3FoUUdnRkFLSE5BUUQ0WVVlZ1E4T2t0T3VDVjhFYjFBQzlGUEs3S0J5WC9mT2ZtQjFaOEFwVm42UC8zZlY3cnJXL0tUNkZ3aSthL2tDQXhwMFZhMjdoeTlFekVFQjRyQmdsN3EwRStkQUtBSW9EQXZtN0x6Y0g3QzJIcUlsT3hNSGhJK010ektLa3hrT2VHenpjUlJqdnNQWlRDcERJMlQ4d0RCREJMNjFyYXpJN01DNVFLVEpUa0ZVSStnd29UTVlNRFF6b0FRZkZHVGVZMHNkTXhCemJZL0QzL3pyNVFOcTdXNEpDcURrYlo4cEJZNUpQdWM5b0lhT0cvM05hRFBhT0t6Nmora1ZmOCtMWGVyVXZ5Q2J2WTkrL0pXOTNkKy9ITDNieit4cld0N0pyN0NSUm5zREZaTGFYTGtPd25IemNJcnVqL3dYVDkrdmZ0L0ZRaSs2dGVlN1o1NlVQY0NkTW53K0gyaWEzZng4dXZMdWo4dzBZM0NIYjFYTDE2dTZVc2RPL1gvYis5c2dDdzdydnArNTgzMzU4NStTR3ZKdHJCazdFaE9RRFlRd0NUQlpRcENnZ1BZVUU1VmtncEpwWkpLa1pTTFZFd3FUaWpLVUs3WUlWUkNnWTBEd1NZQ2JGbUlzdVVQWkRuSXNtVFpzaTFMU0VMU3JsYUxySlYycFYzdGgzWjNkcjduemN6TC8zZTZ6NzM5N3J6NTNQZG1aK3piTTMxUDkrbnUwNmRQOXpuZHQyL2YrMmc3MUlKOEFCYU5WMjlKZ2ZlOHhzRWFGNWNIV1dKWWN2VVZVRkQrV25hVlZpd29QNnVnVzZUOFQ3OVUxMjJPem1GYSsxV3lEQ08xSUYrbDAxY3hRbitsZmU1NUFnZWhKZURNYTFHa1lHZ3FHVHJrdG1zRm9HNk5MbmFnSzVPajE0SjVXYy9rQ0VHRVpWRmRnTG5TZUJpOGU4cDdHT2p4Q0FIQjVWUXRTc3o1dGFGQ1daQnlCaFFQaWxEZ2JFbW5SRE4wZ3Jic1Y0ME1iQjdWTVhDZ1liT0lEeUtLV3dONFlTWUVnVGI3c3dsSVdTQ1ZVVmhlMXh3U0JoT3hxMElycDh3TTlqNWRiTmJYSnRjNHM1MlVmMGpyWDVhNzNUcUU4TG5IWnJKUHljL3FjUjdQdTJrbzFWc3RGallPckQyd1lva0FlYkd1UUVOdnpLRllEYjAwczVUOXQ3dW1zcDk3VTMvMkV6Y05aZ3VhU2NlMXRCNjRTbDczMCtjbnU3THBXVWw2UVovWDBtcUFweDQ0ZjBJUXduYlZKZFJMelByVUF3YVROSXUzdnZqeW4vTDBCK2Y4T2RTRElSd2Y2YzRPeWtDSnZXeE15di9GcDJheUx6dzVxNW0vTUg2Qmh5RHY1aXYxRlR3d0J1Z3VuSStqRUF1NVRFNFJRVGJrcTZWUzNGWHhuSjJCblRZQW9XM0w5WG9oamxRMEcydFVXcFlTSnA4SVcxR2dVbGNnSHh4U1BVTTYzaGhUcEJtbTFJcGFMUS8xQ1VVNGxBbDgwTEdXMHpNNUNmSUtSeGtHQUIwUGRCck1CRll1UXNJTVNPdDhoU21icmdMWVNMS1ZpeE5RT293dzhCejZsaFJKNE11UThneDBqQkd6UG9ONVVMdjJJM3F1dFYvTGZYYjUyZVFiMWFnNG8zdjlXeDZZeWg0OVViZFozNVFmcWlydk5HQ1dQNE0wZ0hBWkdCTVlQbTR2Tkx1TGlZODlPSjg5SldQd3o3VWEyRHNzU1VnNDErNlYwZW52eXM1TmFHOUFHNFV6V2czTTF6VU54dHVDUUJoaWNwSlREQkV4RklEbGUrR0tIQVhPUXlHZlh4RXB1LzNJWTBqUCtmYU4xVXo1dFJqSzlrajVIMzV1UHZ2amIwemJoaUJIZ1RIYXdYQkhZeUJja0VSeHBYYVRUYXd5RFRzWEtTVGR4b1I0QWFybE1vL1d1TUJtbXJtTjRVNFpnQ2JwajQ1azgvM2pzdktxYlVFYlJ3djFibGwzbXJsRlo1MnRza0I1QmphVEV4dFNDcG9Ea29iSGVkamk0Qk9jWmRqQXhXbDVqMENqVlJnY3lrNmlLMzBPWXhsTVQ0MkJUQjRsaGdGVjNJa3kyeHZQeWcrMHg0QmtWdGlXbFFxRFkvUFBsNWJjTklhNk5ad0lHUEdRbndUcVlLQnovODdPOWpDenZoU2ZlLzBoOVkwMjZhV2tPdDkrdkpIZDhVU21lLzNoN0JWWE1jZ0RZUU9LRUUrOVVrTWVhekN4a2xNREVBY1hiOU8zTGpXeTMvbGFscjM5YjJYWm02N1ZJMFBOZC92RXdKQVU3cHdNd1lYSm5teFNxNEU1clFZVzRpYWhHVUFqQkNrUHdKVzdpRk0wTndZRkttUktzcU4wR2pJMjY3T3NIeG5zenZhUGRkbXluNzJQY2NuaThPa3N1L1V4UFFrWjIyc3ZBVm03SlhPTWFBajdLcTZRaVlraDFoT0JFcDNIMW5CSSt5RjdkTHV4Unl1d01mbUZtV3krZGM3MllqdGxBSnE0bExyUGQydFp5WkxUb0N3K3d0K3E4OW1Vdm1WQWhYZTBDMnFPdDhFV0I0Q0hIWkk3RFJlbDF3N0J0WkYwOWhVaGJuaGRUUEVoa1dja1V1UUo3eEpFQlNXL0RkVmd1TndrVXBUQlRqdWRSek1JY2ZsdlMxY3BOd3BOUGd3Sks0UWcwMERMNVF2a3hDQXpQb2Q1bU1tWjlYbTBoK0tQU2VsWTVqTHJuNXZSN1B5WGpleXhGNVZmSFRVa1JXU2dpMFN6d2h2ZkRQeVFadWtFaWJkeTRnOFowUllja1BmcFp6VEgvY2tqV1hib3BTejdSemRKNFhUZndhZlByOUhTbTBlRzV5N1ZiRFV3cXkvdXpHazFZS2NKSlJTT0dydUNCNXFSTUl5VW5aSTh0NVZSSEQ3aFBaeHhrRHhrRE1lMENqcWdldmRxRmRTdlBNejhmL2xDSS92NEk3b1YwVE9Cc09HcHNwS2xsWSt3S2F5NlRRYWlEU2ZSL3JiaXFzeWx5UU9ab0IvQWhlV2wxQUI0QXltWGhsZlEyU3lpa3dZZ1ovVEMrWVc1UG5YdS9KUzhPcjJ1emx6Mkc3eE5jQXpCY0xSV2dVaWQrMFBPbmZmcUhuTnhzVS9DRG1wRXNubGRBdFFnakFqYlVDT2R1RGwxbDRWemhDZXNnSlpEV3U2SzdpWG9jSnpEd0VXSU93Nlllc3FTejNCaXhsNFVVb1JCaEdKN0czbjhCODRITURNL2hleWJBQnJKRG9VeVdyYWFVQWlEeTNQc3NHUGZyVm0vS3h2VmxqNnpQb3F2QllEZDczTXMrUXVIWnJOUFB6YW56MXVGR1JFYVZPcEwvaEJ0amxzNk5lcWZSVEFEdnFXTFFySlptM1lxVHI4Rm4yWDNuRzlrRHovVHlINzI1cjdzTGEvcjArTk85YUptMzhGOVdvVm8zSEJ1WUdxMnBzZU9PbStnc2NQaEk3czFrREdBcHZkblhyZlZGeXJsbWh0RHRkY1YzL1krdE84d3JDVS96L2paK0dRVkpMdG9LOVU3SHAzTzduZ01IUXl2Lzdvc1RMWVNCcmNDaFd5UVFUU1dsRUJZY2k0UDZnY1RzSmEwNHJLZ3poalFpUzQxTjV2aUJPWGt3dHlLVERTM3phNlRCZ0JXVGY3MStiblpiaW0rVG9GbVMxcnFMY1dkM3EyMUpkcCtVYWJ6R1UxTDhzdWlpWEhCV2FYQWtHeHhEMXNSWFloYlFnRVVXcXVMbEJ3TDJCS2NxT1VYUHlvR3VVQTBvRkZncU5rc0VNTmt3WkVYQTJMbi8xV1k4dWJCUjIvOEtvekRWZzVybHVJOTlFYWNncm9FYlRCcVJQT0JDc0pzWW5GTHdHeVA0dnVPUFJ0c0hOL2xKQnNuK1ZCOFBEdjB6NXhaeWo3MjlVdlpZWDNVZ2hrUkdoaVlZSXpnTFhweGx2TVptWFNlWVpyYkR4VTEvbzNwZUtHdGVKZU5LejFZd3VBNVVzeWp4VDk4WURaNzhOaEM5czd2Rzh4ZWQzVlBOcU94d2dHaVVTMVJNRXlYWm1wMmtwQmp4ZmEwUUgyT0lXQUNDTzhZZUYwQk9uKzB3WXloR0tTTmZYRVZOQ3A1N0pVeFpJZGZpeDNiN0x1Z3d3cS85N1dwN0J2UHp0dUtDWGtzNlVNc0xnZUVnT3oxaW11Tzh6Ujc3S3FtSWg0WGhMV2QrRHB1UUFMazZJOTV0UnVkaVVXY2hNTjFLRzB1dWQwR29DV1RqZnI4dEN1Y0NVZlNDWEJ6ekhwdWxDZXRpRGpQbkhuY1pQVW9JM3FDSTE4Y1p4WnBpdWRjUkdyTndNbzM4eGxpYnRuSlFFdnlPalU0aklUVEVXUHdoa3NOUVVwVGJCc1g0SUlQcHdXZERuQlpTOUFEZXdaTXlURXNZYUNoOUpxRjJKVFNJQ1hNSGdodjZUSEllL1dNZmtBS3psSWFwVWZaR2VUTWN0cmt0bzlZM1B0c0xYdncyYVhzbkQ1cVlXKzBNYmo1czBIZUdzSmtrVWZNQllTdEFPQy83QnpIb2dYaFFCdkRUYnVnRTBJeUFsckJZUWdPbjF6TzNuOTZLbnZ6RGIzWjI3NW5JSHZsZUhjMks0WGdubnlQREFGR1lXcXVLNXVSbjVQQlgxQjhVWVlnR0FGVkFXRmtwRDlWWlRLeld5QmtJajhnWlVjbUhFOGVqaklCc2dxNi8rbTU3UGFIcDdOelV3MTdNZ0t2WVNVVVpudkNablFoTEorbkI0bFkwMDAyZ1lVOGJvRjFMZ3hYdkZnMHVMdzRQNjJvWXJTbWM2N2RCZ0JPbldHSFhZMjVTOVBjME5JYWQ2NFlIdDhLaEFZZERsMVdGM1FjbFM0cHJOdGRNd0k2Z1dET2pZQXhKVzBNT1pWa2lJSXppK1pOS0JwVDVQQXlrYTZBcGVuaXZKQUNuVERBWTdvdzVHdnBsVG1PS1lNYVpaQXd4NHlBU1hqTjFVTjJuNzhvVGVLV3dLajdJRlJibWVHNGYrUkxOWGlVWDRmNTdLTVZmTGhpU0hHWSt0YVpoZXp1dzdQWlk3cS9IUmdaVjMxNkRDaGhtZExEc1RGWURHN0RSK1pDSHFvT2l1QnRMTGdOZkxtQkxQbzRHalZsWk5ZM09pb2M3MlJNSnRCQ1FnUDZ5aVlydXZ1ZXJtZmZQRmJQZnZBMXZkbVAzZGlmWFgrZ0IvWXpMUUpzdjJKQnkyUTlLTEFqeUp3K1hOUXN6UmlnRDFKbk0zK1VDL0pnSTFvTElqT0dLRDRqNFlrWEZyTFA2RkhuSVoxellQWFV5aGk2NHVmeVFGYjZzMzZJb1dEbFErMUYyMU51Vmc4SHVoZ3NVVlFiRnVlbWRNUGNlU2R4ZE1SNU54aGNuSnVleEFDNGF4NHdqdDA0TktKZWczV0NPbDVUNDdOblF5VjFLVDFLd01tMmVUMTFjRWNSUDJCaTZwZ1Fjbkx3RmxUVlM2MFBLUnM2UEZMeEJqWVJqVWdCTXhTQ2xBRmI5Z3dDWmkzd0dJQ2U1Ym5zbWtHZG1kY1JPbFlEeTEzZFlheDVQc0d3eE1Yd2FZbXJzcnBqc01FT3JmTmExajcwekh6MlZmbWpweGQxRDYwWlVDZHdVQWllTnZ2Z1JySHRMeW80ZzlKd0FuQVQwcGlod3FhanFnbE1LcDY2bFlNL3BLTnMwS0NYSU0yM0RxekhJbjBrajJNV0hOUXluYytnMzNlMG5uM3RXL1hzOVZkM1p6L3kzYjNaOTc2cU45dXZnd3FzaE13QXFDMnMvclFJTU1Qb1cwdE9FbHA2NkdHZWxROXRabktZME9uREI1NWJ5TzQ3TXBjZGtVd1lGd05tQ09FdHROWGw0Zkp4NVRlNXFCM0lJYlFJcnEzRzBJUVl6SEVrcitISWJuMnVBSkE5bllXWlNRd0FTWWdvQ0VhQmRqdUpvK091YTNucXBTa05ldTdRdFRDVlUzTU1iclpxbFd1U1JCS2hVeDg3d1hGU3ZYbW03Wk1oUFZMaFRiU1ptU0JReStvenYwMVJ2Z2FJbklRTVJ0L0pwanc2cmhYTDVMTjBEUnlnSzRDRlk1cm5jWnFtL0lxRU9JTXBoRzNvS2RMSDdDUUM1L1NUVS9jZW1zNWV0VSszQVdNTjdjd3Y2LzUrT1c1Q2FRaHlDOENBWmVTSUdrdmhHVzJXOFVNVno1NWR6QTY5V00vKytreGRiK3lGUjQxOHVwcmJBVjd4RFlNT3FBcWhnZWNQdnNJbHg4RW9PUGkwL1lISTcrYU1KZFF4SUx3a0JhM0FFOHBzMVVGYkh1dG1yMVZMQURXZEhXRFZjUGpVVXZia2k0dlorTkNjOWdlNnM1dXU3Y2x1MEtyZ3FsRzlwYWpOVFc1L3pCbUJFUFFyOU5sQVBIdHBLVHNtbVR5cEY1aU9hTFovZVRyY3gvTjBCR1htSDFuQ2pQMEI1UzNOTUdTaEhtUVdvRiticWxVazVJc2NrR2tOUnpKOVljdC9RZjNYRnk2ZW1WeWpTRk4xYStSYk42bVRCZ0FtOFYzekYxL1FDbUI1VHN2TjN0RERVcFF0TkNFdGduSVljYUE4RzJTSGRQOTRWQWRNYnJwV1gyNlJJUmpUN3U2MDdxVG1aQkRJaXl2cURjcWFJSlJLVnhUT3l4U1kxaUh5R2JWWUlNU0ZFemxEUmJ5Uno4TkJCdFNJRDQveFFqdnNtM1BTTk83WjczNWlPcnZsTHlhem1tYTlNYjFRczNla1I1NW4rT0hESEJnQWxKQlZEM3NnRi9Ycy9LSWU1L0Y2THJ2bHRpa28yZkNXbnYxUm1VSmhWZ3M4Y2hzQXI0VUJzRWpBS1M4S2orS25nem9vaFhCcWo5bFR5SzdqeUl1RERsejc3TW5nZHlOQWF0RmJHQXNreTdzSEZGYTc5Q3U4RHorL2FMY0hQQzRia1pERzlRanYxVmVQYXEramxpM016YWhMMWZseVRBWXplb1NJOGJzZ1paK1FiSGhya1JvWUwrRmRmbkZEYzhFcTRISWdRTjBtazRDMHNHV3ozTmJqRnFLdVZBNjB5N3ZaMDRDck9lcFFVNElSa0tCcmplVzVpYlBIZlFYZ3BCeXVSbVpMK0U0YUFCZ3lwdXNubjVpU0FkQnA3OW9vd3Nmak50dWlGUy9weEprY1dneFFYdEw0K0lQMTdBTS9wN1Bsc3A4Y3FKalNMaS8zaG5YZENnVGxqNTJUVzRMbXpncE1iWll6MmhKYXhWakJRYUVZOERIdStCUXFZNWhsMUFZR3BWWXRROXFnWWx2OW9nYnZIMzFaRGRIYWRWbEtlbkcyeXhUODJEa0thV1dJNXFoQ0g2UW9OYmNPQVdxbTE2Z3lkc2dqa2pqeUJzaktJWkFJeGlEUXlmUEVNcm55eDNKUVJOYXA4M2FtdVBYQ0JVZkJES0FBckhYaGpxcENENUFyck5TSWs1UE53bTVWYUhIMUlUL0x6YmY1SmxXWWhjejU4M1gxdDdROE91aDVPekYwN0kyQU03bFpIdHBkeEUwK1FnVGxqM2d5eUR2UHlBdFhZQ3lhOTNmUjJ3b3BhMmhMeU5QcUNyV3drWXRoRXQzRzh2VHA1eDVQRGNCNkpGcVIzUkN1MHdiQW1KZzUvdlVaUGZpL3FKdnlWNENnd1NiTVhBa3QyNll1Wm5FcElkRkFEd254aHRiZGh4ZXpINzhKMzVOcE1zajI2bGFBKzF6V1V4eXVaS1loYzFCWUl0RWx3VUF4NEIxTkhlczdEVXd2NEpsVkVKU1Y5elJubUVHbE1NdDNOdkJRL0RGdGJ1bmxhVnVtLzlhZGw3Sm45WGl1aXh0WHk2djgrWkpmUTFRNEc0d3hqVXJ5UVdrVm1wUkJHaDVvRVYzTlNJQTNHdEtjUEUva1NRZ0dMNHFBd2dmV0F6M3BvRzNnUVcybHMwcEthRzk0Z1NZWG5wV1A5WWFBSFdoU3g5cEJwNERPK1hJelFMOFJEbi9LcFB3OHFrTkVHRC9iTzlDMys1eGpCUklYNVFHR291RmlFWWtoeG92MkIyTWdQUExWbjhzakVMVFNwdlEyRHdWa3ZNSjhjSXpUdFJ6SjhDM2JIL1p4alBXbGk2ZWUxdG5qbFc0ZGFpc0xySWRwcHdHQU9Wb09USDAyZituc1hHT3BmcmFydC85R0dBcmlKTFJKSjBuVC9UaG1DNXhWR0hzZ0RJMnU3QU9mbjh1dTFiR3ltNjdobTNSNmZLUmJBV2FCR2QwS1lBellLRUpSdzRaZ29CUEp4c2hXQWR3ME84TkVOTURqUUp1WjFPRjhQWWVQVGZLMVdiN3d3KzcwN1EvT1pCKzlkOUtVSHdOaGc5Q1ZYek1aTTBZWW9ERU5xWG85SHFDK2x1RmdPRWlDaDNTQWh6QnRDSW9mU1ZvY3JEdU1nTHNROU1vZG0wRHJuNlpjU1NMQjBLdGMrYjBEK2hacThHZjlKQmlNRUZoTVFPanBZQlRBaGJ3b2tzMms5c3d4NEMyeGRHa2xFOGRaKzExbWdsQUpWM2dJb1RCNUJLS1dIbVdSaUNRMG9GVHZhbEdNTVh0WTVqRUEwcFdKMDZmOUpDQmszYTlHWXN2NGRocUExWmlBK1hxalBuMnFhM0RFQk9vWjE3T09ucThNWFJwcCtSRFdzMTRKOG1VOUR2eWxUOHhtNzN2N1FQYm0xK3JWVXkzL2VmN2RKMFBBZlNHZWxRQTc3R1VIYlRvVnVLcHJrYmpxY0lzSk5sQ2NvQ0lvbmoraTBqSDA4TjA1OGNNZ3VPWCs2ZXo5bjcxb3kvNmFNdm1nREVwZmJQbzUzb2FsNkRuTWh5eVZ5aFg0UEVVMHd5MkEweUJGVlVlbkVrYVBhQ0NDZk5Gam1vNlBwTWtRNkZ0SWx4YXlDVWxlb3NpUWl0LzdEd0xJSnB6dWs2cWhoQ3BDM1VENGdnTFV3bXFBY05oTUpJME5UZnN3YXFoMDVaV0NjaXRrSWp3NGFCajFHQmNxNUxaNERFZCs0TU41Q1NuRjFSS0lic0Q1N0E5a01saWVuenVwWXNuenF3MFEyV0tXVGhrQWwwME9sK2VtbnU4Wk8yaHNJbVNHR3grRDJwVFRLQWhXMzdvb0ZxV0hxS1p3SEgwOXE4ODF2K3ZqTTlrLytjSGU3Si8rY0g5MlVHOTQ2UlJwcGx2R1RJK05iUlhBKzBpK1pHK21VTkM2M0JEY2xSMEQzQTBBQm92SGRpZ2Y3NXAvK0l0VDJWMlB6V1kxV1FJK1N1RUtDaXdmUDAzVHFJTjQ0WHd3Qnd5RE93eG00cUpGTktKSW8yUTRZQlI0U1RJSEFwU0tRZ0tFWUN6cENYbk8xUUxxdjF6UVRxR2NGMDdnSVR3cHNGeEM1YmNkUXBpQk1KNkwwZUF5Tlpsb0tXRHRLU29MTFF5azh3cFRtVmc1cFlUNmdqRk01VUhld0hFbzdrMEdGL0NibFVYT2h0M0NwQ3VBK2RtSjR6blpzTmhOcXk0S3RpSFVLUU1BYXk0YllGZjkwdW5uZWc2ODFqcUdSQk9vTFEySmJjWloxK1lGdkNPc00zT3NsRXJLdytiZlIrNWYwRHZ0QzlsYmIrekozcXpueU5jZjBHTWpuWWZuNVE2YlVaTXlIbHhOMmpaK1l2V3I1WEVhcGJIbWFJT1U1UWdyUjFwZjBHTytwL1ZJNmt0UHpXVmZlWHBlNzhQcnZRWlpoRlM1N2NTZnROVnZCVmd5bXJKSDZHMUhvWFBGVFJob1RsZkgySFFhaklBWkFnWjN6TThTM0p5WWRGeEFwRmZ5aEh3bWg5VXpwb1ZpT05LM1dHc3BoajROU3VnZmxLWStqS1JYWlhsRXlxblI5bURVYUZmQWVydXRLcy9ZeEFWeWpJaElpWGhham1TTHcycWUxOHM0RExrMkw0dFEzbDdVWWhVb3o5bUkrUXRuajBYS1J0SnJFU3pIazZTdEJUdHBBT0FJaHZIZEM2Y1BQemR3M1k4c1NzQlN6YTA3Vi9pVWdtMGFSZGxBTzBoSkcyc2FNVU5TSmg0QjNmcU5sWWxHOVFBQUdDOUpSRUZVaGV3MnZZYytyS09nSEkwZDF2MjJiUnlwUUZGR0pVUGhsTHlGZVJZOU5EU1VEUTRPNm15QlBwQXhPeHVVY0VYT3RSSGNldkNzbm1Pc2s5cTludEFqdTFtV0pYSWMzKzNuMko2RTVFcmViQWdZc0lVbm54bUNXR1ZUT09JTUtKODdDMUd1YVRTSGRCUXNkYTFremR5TWMwVk04Mjh1TEE2TUNHMWZSZWhLWVM2M2o0WmFubkQvYi9YRVR2T1NOQkVVK2YwZVBlVXh0TkJLaGt0WkpwUnV5a1FFbytNMUtGWUVJNkdRSjYwbnFXSGRvSlhXeFc0QnBmd2NYdFBEbmNWekx4NStUb1ZKNWk2Sld0MHIyRjdYYmdNQW96RHVERHVzVFIyNTgrVFk5LzNMbDd0cVBRZkpFR2FlbUZOZzQ4N0poeExGUmw0WUhNWUFXWENSRzU3NURtbFp5R2xCbm8yZm1kVHljc0pmSUZFbSt5ZHpMQk5DOFJyd0dJRGhrVVkyb3EvbVRPb3J1RFA2cGxXcWNFMUYxb3lJdWZCdk1tQjI1M3g2d0hsYVVPeFUyVmZNL2lvUXhuQlN4amtXcW5DRnFqczZ0dFE2S3VCUVJyR3djb1FYWkpMY0lOZk1tcFJhUHdnSGVMaHl6cHBMc2Z3UFN1MzVTRGVHN2RhQW1MWERTT2tTbGR0d0pLNXdMV1NTRXlCektHa2JuYXNTSVNFa1hvNHNtS1RzM1EzQllBQVdYLzdyYi80NWV3QllXcDVudGhhS0V0cmgybTBBa0FnTU95UnMvdUtoVDErNFpuSDJXSzEvOUdDdzFuU0NaOXRrVXhLVDY5S0JGbmVFcHBRUlNUMWhvMGtiUTZTcVJ6bExZTC9RYTZNcTNFT2kzTGxUT0lubEhKS0hNK0o4TUdOQkpudEpmck1HSUcwdFlSK29JV2lZbkdhVDhxc2h6WEVyWWZLTFl4MWkrYXdjS1Bud0pLKzdtRWZ5QzMrT2o5RHdKWnhIaTRvYzAxNlk5R21aY05vZlJhdThsVVVxR0ZZQTRkRmltVXFJZTZraTFlVzJNb1U4WVpWUzVNNURiWkFIblBNSUU4WEhjd0NzSVIwNWRPOGQ1Mk05clZZQVJZTnpaclllYUxjQktITUNzOTZJdWFXNWlTZTZoMFovR0ZFalB3YmhNZ2VmdCtBZzNDUUpHN3htQWtRMU9NWVVadFR6RnBCT1Z3eGxCNmt3d0M1VzJHSmdjb2NCWU04QWkwMm4rWVpjbm1HVmdQT3lNam1tQ0lSUUNKaGlFclFCcHBnZ3F5VUVaampEczRJeUpBbjZEL3pTMXVCSVMxMFJiNXF0U3Mya0p6eW53NXlLQ1NxUGJVc0E5a29zTnRVYjJvTEVtdDFLVEhONmlCV2xYQ1psRzBUZGJGT1RzOGdkU2llN21SR3hOY0IzQ1ZCK2JnTllDZFl2VER3aFN1VkhnRnNqdm9GUzdUWUF5QXhaZWQ4NVpHelZGbDcrMXFORDQ2OWlMQWVoS3VBWk5zQnJrWVZDY2lzNlJSZzYwMjRHbE1pWXRUeFdIM1hGUDJVS3R3NkNsc0VLV2VaSU9sUmcxNERCQUFURmx3RVEzOTNzTkpzU0psblhEVnBsSzNJRk1uSFlLaEo0Rm94OFUwOVJGL2VsdENYUTRvb1A4WUJiVVVFWmdWeThvV2s0NWlPcHJBeGxFaDJQUi80MjJLSW9EYmphYUltVkxjaGxVa295ZVZ3ZTZSTEZFTVZnczFuTmkxc1lBUjREbmo5MVROOUlVbmNXbnN4UkdnVGI2OXB0QU1yY3BRMnBUVDk5NTVPRDEvMjlLYzJlSXd4dVpqWWI3bTJhWFh5NWhwcEQyWmI5cWloOGV5L2czQXpBS0t1QVVMWFM0cmhaeVFybDZJSHdyQm1lN2JDSjd0MExwYlFzRzdqRVNtSk9aRkM0b1BERVRlRmh5TklkSCtLbS9MRWd5Y1JOV3kxdm9CWTREdUd0WEkzVTVSTFpTc1dYVVFhZUV4RmNCcVdWUlhPNmJaUUpwTUlKUnA1SWhkZTN1K3JMVTg4K2RPZVRTc0kyYUpzNFh6MHJhSU82alJ4QU1wdy9DYUgyWG1IVVBiTy9yUzdQUHZqQkYvYS85YjFIYW4zRFA4QVlSdm41QzFtM3dFQVVSOTVCT1lsQUV4TUFiYkpaUFdiaWkvcHMvYUZvMHg1QVRpeVU4MkdGWVdEWmJRWUFxT09tVVEveldqY2FnSmZBVTFHaU1DWml3UDRESTZHT1psd29GVnJuRk5MWks1VDBsQUNqcVBJSWVTaGp2am5yem80MU5TU3dhdTBGTHgrM2RqYlVoaGFraW5LdGhGaWtYbjVJbFljdk5vV25VWVAyL3NmY1U5KzQ0N2RmRUhGcWp5M0tJWFU2bm5CYlhDZFdBRENlaW85NE1BSnpjN05MazZjZjZMdjZoaDhJaWhTVXF0V0p2SzIyanNwdy9vakpURXdxTm9WSnN6MkF5R1pnMWt1RzhselRoaEF1RElDK3ZxTjM4amRyQUx5R1ZEaWhOcGdLSWE3QldDWHhwb3FVS2tLYlhhSW41RU5Wb2tHbndGTnFQSXBhZDFmSVpic1pybE9ackNpM0ZZSXJpS3lPb0c2K1ArQWZic0VBekowKzg4RGNIRyt3bVBQdWdaT09jVlBzRzhWYTJ3aWM4YUQ4Y1Q5bDl2aFh2Nnl2Tnl4aEFCalh4V2JXRm12MldnU1pwZkhGZ0ViTWVOVmpvUmlQOWJKOERnWkNWeTNwN1hVeW1JcmVadVZTM1BuMlBKdUJ0clJQNklXeTRWWUNQdURIbHZUR2N1QXRQNWlqTkc4TDdURWprTFI5SzBNRUdvV3NvTHA3M1c1ckM4dC9QZ1hPdHhuNGRhVGFVbVBweEZQU2pUQlVYV2U4aDcxamlMZlZkV0lGa0RMb0RmQUcxYzcrdjE5K1l1d05QLzlFZDkvd0cvbDBGd1lBeGVCVHo1dDFHeTNoZXdPMko2QksyREN6c3VoNlFtVGx3cnpnaUd6b0xub0l2OEY0Rk9sYkQwRTBPSi9WWXpXbThsUUlqNTdtZVlId2xMQnZrWUphbXJNNWJQc2NTVUdMTjJmWlZiRzB6VDRKN1BRRzhFaVpsNy93STNwSHBhcysrL2dYUC9wdW5nRFFITmNYNElwdWJtZmJPbVVBZkhnNTgzbUQ5R2JnZFAzc2tVLzF2ZnI3Mzhoc2FtOXdhZllOUno2OTJPYWFtQTRBS3huSnJNQ2pUTW9ROEp3MWwzUVZLWXpBeWhJcEo2U0dsUVRZdGZPbTVUWVNOajRpMWNCbFVZcWFuTWRjUXFYcUhlK3dLTDB5UkI2ODBWUmdJMlZXVXRsWkdOcXlRa1k3aThXY0c1NGlEZXZFSjZkUitTRVVQbEI2NmJtam41dzRjNFp2QU9CNCtsanVsbkxjTWw3dXBWTUd3UG1DYWZjMEN0OTM1djRQM1BYS2Q5NzJpOTNkUGRmd0c2Z3NoK3hUMUZ0WUJYaEZtNGVheGFOSVU4bW00WlUwWGV0TUpWY21id0hqRkoyWDlleUs1eThQanh5L0FSN1MyeVRLNVhWdm9PeE96NElSMk1udFlYenh3eXg4bWRobWY3Ny9VRjg4OWVYYjN2OEZKZW1Cb0wwRm1FK1lpdnVRcEtzOHJHQjdYQ2YzQUp4RG1QWUdtV1diZVBLVHArb1hqLzFaTi9jK2FsWllDUlJ6cXhlOExFaXQ2L2xZQVpKMUR4ZnVIZWN3WmpmZ3VNMUNwKzNReStlMDErT1o5RFk0cTlmcmFnTzlLMDBpWFFGY2FWN1dxcDhYZi9oMEdlK2pqR2dGc0VkZnJKbysrL3p0VDl6N1p5ZFZqaDVCUjJ4eFdxTFRwcDV2cHNvNDdLVHpJUWFrVVRTTzg4MjFsKy83NzdmcFlQNFp2dHpMYlVENFNLV0daVnJpY3NLcVpMT3VYRjI1UEVxRDg2Vm1pRzN1dWw0ZEc2SldKcktGdU4wcnF6S0t0azNtVytDakhYWFRIMTUxSG5ERURvT0Rlam1OSHlSaDJjODNLN3VYbHM1OC9YYnBRcGgzWFBsOXdreTVwNmZhN2pwcEFHQWVCL1FHMFVCODQveWpmM2hpNGR6UlA3SlZnTGl3dllCNHVpNXQ5UlVMcTJMZlVIS1lEeTRhMENKOXd6aktYMkd2NnEwTk1IS2xlV2xML2JRRFFyUnJoM25uaVM4eWora25oNW45OGVQNlhOM1VxV2R1ZWZDdWp4d25qeHlUb3hzQmI0WWxkT3JTU1FQZ1BIdEQwaFVBcDV4cUp6LzM3MjV0ek0wOTA2TkhJZmtaZXg3SGVZbHRocjZNTkNnR2ZYbnUwQnNFZE55V29OcmxkVjJwdGxxOTNxQnRsbk5IMmh6YllrWmdoN1VIbm5ocU5Dcmw1eWZZUitWUmZuMnUrcG5QLys0djNxb1E5LzdvUkQ1Qkt1eXRVTEJ6cnRNR2dFYmd2REZ1Qk16S1RUOTMzem41MzlMRTM4QUEySzJBTHZhZCtsQnVaMTNWQ2hTM1NYbDJGb2ViNHViYnJTM1duazFKWVBzeUQybmpiMXkvUE1wSFgvbU5SdDBDTkU0ZXV2OS9IWDMwM25QaUFuMUlaMy8weEhXbm8weDIraWxBeWp5TllzTDB4bUx4QnA3LzQzLzRoYi94bjE3NmJNK2Vneis3ekk5NHlCYjI2TUx2dlRVZDBVMHBYWWt3eXAvVWF6TjRFdDlWd2NTSTJRcG1XNGJhOWtqSSttVUh0UWRXZU9hL2QxaXp2Kzc1TVFBSDltcTZ2M2o2cy8vM3YvNGtPLzlNd3J6OVo1T2lvUGVPdDhLaGt0cnZPcjBDZ09PMFFZUjlGWURGczJYUG1YdC81VGV6aFlVVFBYb3FZTGNDTWdMZCtrNjJuY1NEUXVVcUNleENDVERZK2RqSHVIN0loWjhneHdEczM2TUpibW5oeEpjKzlxdi9ROGsrR2Zyc254b0JXdHhSNWFlQzdUQUExSU56NVM4YmdPVUxEMy8weE5Rem4vLzE3bHFqYms4RnpBRG9PYjE5M3owVXJxNlZCSGFiQkhqa042NWZjOXFuUjMzajhudjFReldqQTQzNmM0OTgvdGNmdXZNUFRxZzk2QUtUb0JzQTR1aEp4eFZmZFpqYlRnTkFoVzRFVXN1SEFHclAzL3FPZXhiT0hQbFFyNTZOOGlNWjV2V3VOQ3VCeWxVUzJHMFM0SWc3UCtXMlQ3K0ZaY292QTNCZ1hEOUtldUxJaC83a3ZlKzRXKzFCOTlaUy9tMHhBdHRsQUx3eHdMSVJRQWo0cnFOLzhLYmZYN3A0OGpOOWVrU0MzdHRYVW5WUFVLdU1nTVJUdWQwaUFWZisvVkorWnYyOVV2NnI5L08xMzlPZi9yMTN2ZWwvcXgzb0hkLzlYOHNBYkV0enQ4c0EwSmkxakVBUXh2ejh3dkZQdlAzWGxxY3ZQTkNybmRLd0NzQVE2UFhieWdoc3k0Q29Lcms4Q2ZDeG1EMjY1ejh3MXBYdDE2TStsdit2T0NDYUd0TzN2KzluZm0xK250K3FNc1ZQbGQvdi9ia0Z3TG11aEZnSHI5dHBBTHdadmdJbzd3VmdCSmFtWDN4bzRvVlAvK3RmYnN4ZWVyUlhLd0ZiQmVoWlJiZmVuZGE3QTlYR29FdXhnanRPQW54OW1sOXV2cXFrL04wTFU0OTg5a1AvNXQzSERuMXpnakV1WDU3OTBZbHRVL3BVY0ZmaUJ0dWZwamxNK1FIWFBYL3VxZG5GeVZOZkdiN2h4OTdZTTloL0RTS3p4MVh4ZmR3cjlYaXdUOGM0Ky9RTzk0Sys0MSt2NjZYaVZpMUlXN09EdzkwYXJJTTZtTUxIV09iMCt3UzczZEVXWmwvYTRpY0N0N05OL05UNFB2MTBPelAvUGkzNzhkZGNwUWxzL3RJamQzMzRsOTcxNkQyM3ZpUitFRFRLajA4My9zQzdBWEFvVk9mZGxUQUF0QXJWS1RjMFZhZnV1WmYrYW5yKzdOUDNqNzMyNzkvWU16UjRuWDA4T0ZnQktWNVl1R3kzSWFnTVFPY0g1RlpydUZJR2dFZlZ3d1BkV3U3amcrTHZaOWt2NWUrYXZmalZ6L3pPdi9vUGo5N3pDWlNmOGM3ei9yTHlnM2RkY0NqVTlyZ3JaUUJvblN1OHczS0x1eGZPSFptZGZ2YUw5NDY4L3FjUDlvMk0zb2lZTExNdXdRaXNWclJNcWozeHlnQzBSNDZkb0hJbERFQ3Zia3YzYUtmL2dINTMwbWQ5bnZOZnZVOWFmdkhVcDI5OTcwKzk1K2hEOTV4WGU1bmhVWDYvL3kvUC9vaGsyNVdmU25lQ0FZQ1AxVnhYZmZMVTRzdGYrNS8zN2ZtYjc2ejNqVjcxL1YxOGpBOVJtUkVJWHhPaThIWklyeklBcTNYVGxjZHZwd0hnK3hVam12WDNqV3JXMTA0L3lzOXUvOVU2NGJkM3VGR2ZlT0h3QnovNEwxNzdHK2ZQbnB5VlpGQjJYL1pqQU5nRDhFMC9IN1lPbGJTOTdrb2FBRnE2MmhUdUFnRmFudlBmL1BBM0I2NTU0NUdCZmRmZjNEM1FzMGUvb1JidXdiVUU2K0l0d2tqS0MzWkNqSlVCNklSVTIwTnpPd3lBZmNldlg2ZjZ0TkhIOC8xOWNjbVBBVGlvbmY3QnJ2bmp4eDc2OC8veWY5NzlsdHVrNGN6NktIeTY3UGVabjJIcXZqMEMyQ0tWSzIwQVlIczlJK0JONjVsNDRrK2ZsWG45MHNncmYyaHY5K0Rvalg1UUVBTGNpM0ZiME1uanc1VUI4SzdZZWJBVEJzQm5IM2IzQjZYNExQZE44WFdQNzgvM3I5TGhIcDd6TDAyZStzemRIL21QLy9tdWo3em5NWWFqdk0vNndQTE1mOFUyL2NvOXQ1cnlsZk4xT3U1OEFObmh3Mk9jOEhwWjJMemVGTWp3aHIvK0Z6Ny9FNFBmOWFQdnF2VVB2MjVSNGwyU1owYzc5OW9LNXNkQTJTaGNabHY0TXJlR0tUNGl5eitzbHpyQ2o0UHFOMnVkYXpHMW14eHQ0WmVJOSs3dHNhY1pGeTh5TWUxdVIxdDRzbkhod21LMnBCK0EzWXFqRkYxS3Z6TGJvL2k4eURQWXowWmYrSVFYRU0vSFBNWTE4OWNXWm8rZWVQSytEOTN5S3ovMUZ5cnF5M3RYZmhRZjRhWXovNDVSZnZHMTZ1eEwyblk3VnllZ0d3RWdieXppVTBOQWVIbndOWC8zd0t0LytzUC91SGYvamY4czYrazlpQkZZa3FneEFqdzFNS2hleFFBdzZCdENLQlJzQVloTk9MSlhCbUFUQXR2bXJCczFBR212KzREajVCNnZvcVB3K0g1K3B0MjgzdVRUbE1ObnUvRkRVbnplNVIvVGpOKzlWRDk5NmRTUmozL3V0Ly85bng0NzlKVnphaTVqRllYM0dkK1YzNDJDSzc2ejRIQ2JKZFZjbmN1Z0dYdmxZczRQRU8rR0FBT1FyZ2JjR0lCZkhyLzVGMTU5OVZ2ZTgvTzllMjk0UjliYmZ5MGZHc1VZbUJHUW1JRm1BQWliandaQkVmN3Nud1M1L0JvQ2hqTzg0cFVCeU1WeDJRSEU2NTFkRW5VVGJmS3NsZTZaOTYyeUFyQTZkR0dQaUpuZFozZi9vVmNVbnQvbjQ4QlpuMFpWL2t1OU1jd1Bkd3pvL1pSUnpmak0vTFhGK1pPVFo0NTk2b0hiZnVPVEQzL3hsaE9xbnpIS0RJL0N1MDluZlJSL1J5cS8rTXI3Z1BCT2N0WnZZc2dOZ0VOZkRhUXJBb3dCNmN1anIzL2JOUWZmK3FzLzNuZmdwcCtwOVkxOWp6NHIwSTB4V0U1V0Jia2hVQUhUZVkydXFQdUNaZzd5RVplZU0rQ0R4U1BEV2dyS1QwMDFzdWxwL1FpMWN5bGF1STBNMUpEenlsNXByOTBDak5mQ0xjREV5aC9VTGpYTkdBYVgvajZCeFlWcmxkZGI2REpDTnF2bGE4SjdwRVVCVHpJWUNSTW1PTDYzWmtvOE1kR3dXNER3ZXhNYUdFcGpkamVGVjlpT2x5dXVKM2dXNWxkNVVmNWVqU2ovbFY0TUFUL1Z6WXpQTC9iVWxyUzBYNXA2L09LSnB6NTMvKzN2dS92UVZ6LzNVbXdPaXUxS0Qwd1ZuNW5mRlIvb2JrY05FK1MzVTUzekJrVEIzYXU3N0pZQWlQSzdVY2dOUWRZN1BITHRQL2pOTjR4Yy82Ti9wM3YwMVQ5VTZ4MSt2WHA3bEJGb0JrRmRZNnNDZFl2MWhpNG9oWWRGYzBXWS9DTmErZzFySnBqVTE5dW5wOFBBSTY4NUsreVJuUTJEQWREbUZSK20wTENkNElDcW5BbGNGNkFyYmc3WHdLWGx5blNJUTlEeUpPRnlQQ2JsR1QwOXJUK2xBOTd5QU9YSDlmeWRWOGtuMVJadS9WQjg4S2I4Z3NVWHAwTFlEWUROL0NnL1NxK1pIc1hYZ2lEcldsNmVYSzVQSFowOS8rSTNqaCs2LzRFN2YvZmRoK3YxYWI3Ynp6aEVvWDNXZDZWM1NGcnFmV1E0VlBMT2NXcnFqblVwYjRRUnZFUENHQUEzQm00RUhJSjNnUS91Kzl2Lzl0cXhHOTkyVTkvK04zeHY5OUNCTjlSNmhyNHJxL1h1VjJtOVhCQ1ZYMTNtdHdxVU5JUGdGR0ljNWNkUHRUSUFxckNWY3hLdDBxNFVqcll4NEZNRGdHQk5xUlJ3NVhJbGFrcEw4NjBYcG9IUTgzeWJpYStSMTJnNlhXaHJOT3pSSXpsbTk2bkphQUNFODluZlBqS2pPT2tvUE4rZ1pNWW5ySC9VZFZHZm9uaDVlV0htK2ZucGM0ZlB2M0Q0OFdjZXV2T3ByMy8yOTA4cWxkL3Fvd2s0Wm5WWGRJZmczSmNWMzd2ZklUUjJsUE9HN1NpbVNzdzRqMEQzR0FEQzlGL1pZd1RBT2ZTOGRBNWwrclV5MkR2eStwOTh4ZUJWTjEvWHMrZFYxM1gzNzN0VlY5L3dLN3E2Ky9kMzFmcjJOR3ExNFM1RjFHdTlkdXBZcGVoQlZnRDRTUTB5WHdHZ1RPdTZqZVJabDBqN01wZ0IwRXlYR2dCVEZyWFRaczBFdWhGWUMzcGFXdGFOU0JOT1RUQjhwQzlRMUplbXBlRlNYaStUMDFGZVp2a3g3Y2lqNE16UnJBQXNIM0tYVjdpZU5aYm1hNDNsNmF5eE1MRzhPUC95MHNMMFMvTlQ1MStZdW5EeStYUEhIajl4N0xHN1R4MTk1SjZMS3NGemUwcENBdWZLN2NxZlFrOXp4WTgxMmdvZ2xBNjBQTHpqb0RkeXh6RldZaWpsazdCN2xEdjFaV05BbXVNODdHV3BnZzdEa2RiYk83U252Ly9nelVPOTQ5ODkzTFBudXVHKzBZTWpYUU5qSXowRGU0ZXk3c0doNFpHQndhR3hnZjdaK1o3K3VibGFmNjI3cDBjZks5QXFRZytndW1yYVRxcnBSMmthZ2h4STBQZERPWlRRMEYwemYxVFJXS2J1SGVIRWViWkh5K1pGeldOVGx5UlFzU2ZHRFpwQ2kwdFRYdUVSanVFSWswZnhwcndSaHlLYVlwS2ZzSmZ6ZE1VaFpuUVZOT01LVkxyUWVWbkpVcUpqajZXcm9mclVSeEtpQkN1MEh1TjBMVW1PVXJqbEpSWFR6OHd1TERVYWk0dURBOHZ6V1dOeGZ2TFMzUHpTL056c1luMTJabUhxd3N6Q3pLV3BtWW5UVXhObmowOWZQUFhNOU9uamZ6VXpNekV4cCtxNFowZHhjVlNQWXp5NE1xUGNoRjNKVStoNG9KY0J1bGZRSFBFZDdlaWozZVJTZmdtN3B3TnRERVdJMGpzT1dJNm5hZER3c2dvYVRTRE9PNVE4M3BrZUJ1SWNsc09XV0VwM1hBVTNMZ0dYZTFvaXhYbllZWnFQc1BkUDJtL2tkZVgxTVBIVXV3RndYRG51NVlEdUZUUkhmRmM0Rjg2dVlEWmhNdVdiY09wZG1WUFlTdUU5bmJKcE9LWGxZYW9takhOWURsdGlLZDF4Rld5UEJGb3BWaG5uY1dBNTdEaUhiZ1JTV0E2N0FTaVg4VGpRWFJwMjNJNkc2V0RlMFl5dXdsektQK0gxZktyb2FiaFZPYXAwdklkYlFYQ3BvMHpsT2lPQnRSVE0wMXJCRkVlNDdGM3B3YWRoajlNYThMaTBiTUFVaHNianV3Wit1d3pXdEIwZUJwYkRhK0hLZWVuRWN2NjBZejEvaWl1SE41S25YS2FLcjVRQVNyY1JsK2J6c0NzczVWdUZIZWN3elZmR2VSb1FSL3F1ZHQ5T0E1UzIwQ0hsTm5rY21JYnB1TlZ3cExrcmwzRTgwTk5TWEJwZUx6M05XNFZYbDhCNml0WXEzWEVPb2U3aGpjQnlIdWZPOFI3ZjFmRGJmWUNXMjVmR054S21jOU44YVdldmhrL3pWT0h0bFVBcjVVeHhhUmpPUE80d3hhV2NrMDUvcC9uUzlGMGIvazRaeE41NWE3VzNuTGFWTXJ0MklPeHl4dGRTek5YUzFzTDdXRmd0enk0WFY4RytON1RBZkdlRkxyZjlsMXYrTzB2YW5XdnQ1U3JxNVpidlhNczZUTGthd0JzVGNDV25qY2xwcCtYNmpsWHNuZFlSRlQrVkJDb0pWQktvSkZCSm9KSkFKWUZLQXBVRUtnbFVFcWdrVUVtZ2trQWxnVW9DbFFRcUNWUVNxQ1JRU2FDU1FDV0JTZ0tWQkNvSlZCS29KRkJKb0pKQUpZRktBcFVFS2dsVUVxZ2tVRW1na2tBbGdVb0NsUVFxQ1ZRU3FDUlFTYUNTUUNXQlNnS1ZCQ29KVkJLb0pGQkpvSkpBSllGS0FwVUVLZ2xVRXFna1VFbWdrc0RHSmZEL0FiUEhaeUY3ZWlnRkFBQUFBRWxGVGtTdVFtQ0MiPgo8c3R5bGU+KiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94fWh0bWwsYm9keXttYXJnaW46MDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59PC9zdHlsZT4KPHN0eWxlPi8qISB0YWlsd2luZGNzcyB2NC4xLjE0IHwgTUlUIExpY2Vuc2UgfCBodHRwczovL3RhaWx3aW5kY3NzLmNvbSAqL0BsYXllciBwcm9wZXJ0aWVzO0BsYXllciB0aGVtZSxiYXNlLGNvbXBvbmVudHMsdXRpbGl0aWVzO0BsYXllciB0aGVtZXs6cm9vdCw6aG9zdHstLWZvbnQtc2Fuczp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7LS1mb250LW1vbm86dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLG1vbm9zcGFjZTstLWNvbG9yLWFtYmVyLTQwMDpva2xjaCg4Mi44JSAuMTg5IDg0LjQyOSk7LS1jb2xvci1lbWVyYWxkLTQwMDpva2xjaCg3Ni41JSAuMTc3IDE2My4yMjMpOy0tY29sb3Itc2t5LTQwMDpva2xjaCg3NC42JSAuMTYgMjMyLjY2MSk7LS1jb2xvci1ibGFjazojMDAwOy0tY29sb3Itd2hpdGU6I2ZmZjstLXNwYWNpbmc6LjI1cmVtOy0tZm9udC13ZWlnaHQtbWVkaXVtOjUwMDstLWZvbnQtd2VpZ2h0LXNlbWlib2xkOjYwMDstLXRyYWNraW5nLXdpZGU6LjAyNWVtOy0tbGVhZGluZy10aWdodDoxLjI1Oy0tbGVhZGluZy1zbnVnOjEuMzc1Oy0tcmFkaXVzLXhzOi4xMjVyZW07LS1yYWRpdXMtbWQ6LjM3NXJlbTstLXJhZGl1cy1sZzouNXJlbTstLXJhZGl1cy14bDouNzVyZW07LS1lYXNlLW91dDpjdWJpYy1iZXppZXIoMCwwLC4yLDEpOy0tYmx1ci1tZDoxMnB4Oy0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7LS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpOy0tZGVmYXVsdC1mb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpOy0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyk7LS1jb2xvci1wYW5lbDojMWMxYzFlOy0tY29sb3ItcGFuZWwtYmc6dmFyKC0tc2VydmUtc2ltLXBhbmVsLWJnKTstLWNvbG9yLXBhbmVsLWJnLXRyYW5zbHVjZW50OnZhcigtLXNlcnZlLXNpbS1wYW5lbC1iZy10cmFuc2x1Y2VudCk7LS1jb2xvci1wYW5lbC1vdmVybGF5OiMxODE4MThhNjstLWNvbG9yLXBhbmVsLWRlZXA6IzExMTExMzstLWNvbG9yLXBhZ2U6IzBhMGEwYTstLWNvbG9yLWFjY2VudDojYTViNGZjOy0tY29sb3Itc3VjY2Vzcy1lbWVyYWxkOiMzNGQzOTk7LS1jb2xvci1kYW5nZXI6I2Y4NzE3MTstLWNvbG9yLWRhbmdlci1zb2Z0OiNmY2E1YTU7LS1jb2xvci13YXJuaW5nOiNmYmJmMjQ7LS1jb2xvci13YXJuaW5nLXNvZnQ6I2ZjZDM0ZDstLWZvbnQtc3lzdGVtOi1hcHBsZS1zeXN0ZW0sc3lzdGVtLXVpLHNhbnMtc2VyaWZ9fUBsYXllciBiYXNleyosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkO21hcmdpbjowO3BhZGRpbmc6MH06OmJhY2tkcm9we2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXI6MCBzb2xpZDttYXJnaW46MDtwYWRkaW5nOjB9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOjAgc29saWQ7bWFyZ2luOjA7cGFkZGluZzowfTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkO21hcmdpbjowO3BhZGRpbmc6MH1odG1sLDpob3N0ey13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO3RhYi1zaXplOjQ7bGluZS1oZWlnaHQ6MS41O2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtZm9udC1mYW1pbHksdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1mb250LWZlYXR1cmUtc2V0dGluZ3Msbm9ybWFsKTtmb250LXZhcmlhdGlvbi1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLG5vcm1hbCk7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWhye2NvbG9yOmluaGVyaXQ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7aGVpZ2h0OjB9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHNhbXAscHJle2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtbW9uby1mb250LWZhbWlseSx1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLCJMaWJlcmF0aW9uIE1vbm8iLCJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtbW9uby1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MH1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOmF1dG99cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1vbCx1bCxtZW51e2xpc3Qtc3R5bGU6bm9uZX1pbWcsc3ZnLHZpZGVvLGNhbnZhcyxhdWRpbyxpZnJhbWUsZW1iZWQsb2JqZWN0e2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31idXR0b24saW5wdXQsc2VsZWN0LG9wdGdyb3VwLHRleHRhcmVhe2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtvcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjojMDAwMDtib3JkZXItcmFkaXVzOjB9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbntmb250OmluaGVyaXQ7Zm9udC1mZWF0dXJlLXNldHRpbmdzOmluaGVyaXQ7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7b3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6IzAwMDA7Ym9yZGVyLXJhZGl1czowfTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Zm9udDppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtjb2xvcjppbmhlcml0O29wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlci1yYWRpdXM6MH06d2hlcmUoc2VsZWN0Oi13ZWJraXQtYW55KFttdWx0aXBsZV0sW3NpemVdKSkgb3B0Z3JvdXB7Zm9udC13ZWlnaHQ6Ym9sZGVyfTp3aGVyZShzZWxlY3Q6LW1vei1hbnkoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cHtmb250LXdlaWdodDpib2xkZXJ9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OmJvbGRlcn06d2hlcmUoc2VsZWN0Oi13ZWJraXQtYW55KFttdWx0aXBsZV0sW3NpemVdKSkgb3B0Z3JvdXAgb3B0aW9ue3BhZGRpbmctaW5saW5lLXN0YXJ0OjIwcHh9OndoZXJlKHNlbGVjdDotbW96LWFueShbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3VwIG9wdGlvbntwYWRkaW5nLWlubGluZS1zdGFydDoyMHB4fTp3aGVyZShzZWxlY3Q6aXMoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cCBvcHRpb257cGFkZGluZy1pbmxpbmUtc3RhcnQ6MjBweH06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue21hcmdpbi1pbmxpbmUtZW5kOjRweH06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue21hcmdpbi1pbmxpbmUtZW5kOjRweH06OnBsYWNlaG9sZGVye29wYWNpdHk6MX1Ac3VwcG9ydHMgKCBub3QgKC13ZWJraXQtYXBwZWFyYW5jZTogLWFwcGxlLXBheS1idXR0b24pKSBvciAoY29udGFpbi1pbnRyaW5zaWMtc2l6ZTogMXB4KXs6OnBsYWNlaG9sZGVye2NvbG9yOmN1cnJlbnRDb2xvcn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpezo6cGxhY2Vob2xkZXJ7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGN1cnJlbnRjb2xvciA1MCUsdHJhbnNwYXJlbnQpfX19dGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsfTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZXt0ZXh0LWFsaWduOmluaGVyaXQ7bWluLWhlaWdodDoxbGh9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXR7ZGlzcGxheTppbmxpbmUtZmxleH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1maWVsZHMtd3JhcHBlcntwYWRkaW5nOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXR7cGFkZGluZy1ibG9jay1zdGFydDowO3BhZGRpbmctYmxvY2stZW5kOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQteWVhci1maWVsZHtwYWRkaW5nLWJsb2NrLXN0YXJ0OjA7cGFkZGluZy1ibG9jay1lbmQ6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tb250aC1maWVsZHtwYWRkaW5nLWJsb2NrLXN0YXJ0OjA7cGFkZGluZy1ibG9jay1lbmQ6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGR7cGFkZGluZy1ibG9jay1zdGFydDowO3BhZGRpbmctYmxvY2stZW5kOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZHtwYWRkaW5nLWJsb2NrLXN0YXJ0OjA7cGFkZGluZy1ibG9jay1lbmQ6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUtZmllbGR7cGFkZGluZy1ibG9jay1zdGFydDowO3BhZGRpbmctYmxvY2stZW5kOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtc2Vjb25kLWZpZWxke3BhZGRpbmctYmxvY2stc3RhcnQ6MDtwYWRkaW5nLWJsb2NrLWVuZDowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbGxpc2Vjb25kLWZpZWxke3BhZGRpbmctYmxvY2stc3RhcnQ6MDtwYWRkaW5nLWJsb2NrLWVuZDowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1lcmlkaWVtLWZpZWxke3BhZGRpbmctYmxvY2stc3RhcnQ6MDtwYWRkaW5nLWJsb2NrLWVuZDowfTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye2xpbmUtaGVpZ2h0OjF9Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9YnV0dG9ue2FwcGVhcmFuY2U6YnV0dG9ufWlucHV0OndoZXJlKFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF0pe2FwcGVhcmFuY2U6YnV0dG9ufTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257YXBwZWFyYW5jZTpidXR0b259OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnthcHBlYXJhbmNlOmJ1dHRvbn06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfVtoaWRkZW5dOndoZXJlKDpub3QoW2hpZGRlbj11bnRpbC1mb3VuZF0pKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbGF5ZXIgdXRpbGl0aWVzey5cW2NvbnRhaW5lci10eXBlXDppbmxpbmUtc2l6ZVxde2NvbnRhaW5lci10eXBlOmlubGluZS1zaXplfS5wb2ludGVyLWV2ZW50cy1hdXRve3BvaW50ZXItZXZlbnRzOmF1dG99LnBvaW50ZXItZXZlbnRzLW5vbmV7cG9pbnRlci1ldmVudHM6bm9uZX0uY29sbGFwc2V7dmlzaWJpbGl0eTpjb2xsYXBzZX0uaW52aXNpYmxle3Zpc2liaWxpdHk6aGlkZGVufS52aXNpYmxle3Zpc2liaWxpdHk6dmlzaWJsZX0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47Y2xpcC1wYXRoOmluc2V0KDUwJSk7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlci13aWR0aDowO3dpZHRoOjFweDtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O3BhZGRpbmc6MH0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LmZpeGVke3Bvc2l0aW9uOmZpeGVkfS5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0uc3RhdGlje3Bvc2l0aW9uOnN0YXRpY30uc3RpY2t5e3Bvc2l0aW9uOnN0aWNreX0uaW5zZXQtMHtpbnNldDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS50b3AtMHt0b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTJ7dG9wOmNhbGModmFyKC0tc3BhY2luZykqMil9LnRvcC0ze3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS50b3AtXFsycHhcXXt0b3A6MnB4fS50b3AtXFtjYWxjXCgxMDBcJVwrNHB4XClcXXt0b3A6Y2FsYygxMDAlICsgNHB4KX0udG9wLVxbY2FsY1woMTAwXCVcKzZweFwpXF17dG9wOmNhbGMoMTAwJSArIDZweCl9LnRvcC1mdWxse3RvcDoxMDAlfS5yaWdodC0we3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMCl9LnJpZ2h0LTBcLjV7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LnJpZ2h0LTJcLjV7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5yaWdodC0ze3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMyl9LnJpZ2h0LVxbOXB4XF17cmlnaHQ6OXB4fS5ib3R0b20tMHtib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uYm90dG9tLTBcLjV7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5ib3R0b20tM3tib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0ubGVmdC0we2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubGVmdC0xXC8ye2xlZnQ6NTAlfS5sZWZ0LTJcLjV7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LmxlZnQtM3tsZWZ0OmNhbGModmFyKC0tc3BhY2luZykqMyl9LnotMXt6LWluZGV4OjF9LnotMTB7ei1pbmRleDoxMH0uei0yMHt6LWluZGV4OjIwfS56LTMwe3otaW5kZXg6MzB9LnotMzV7ei1pbmRleDozNX0uei0zNnt6LWluZGV4OjM2fS56LTQwe3otaW5kZXg6NDB9LnotNTB7ei1pbmRleDo1MH0uY29udGFpbmVye3dpZHRoOjEwMCV9QG1lZGlhIChtaW4td2lkdGg6NDByZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjQwcmVtfX1AbWVkaWEgKG1pbi13aWR0aDo0OHJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NDhyZW19fUBtZWRpYSAobWluLXdpZHRoOjY0cmVtKXsuY29udGFpbmVye21heC13aWR0aDo2NHJlbX19QG1lZGlhIChtaW4td2lkdGg6ODByZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjgwcmVtfX1AbWVkaWEgKG1pbi13aWR0aDo5NnJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6OTZyZW19fS5tLTB7bWFyZ2luOmNhbGModmFyKC0tc3BhY2luZykqMCl9Li1teC0xe21hcmdpbi1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSotMSl9Lm14LTBcLjV7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uLW15LTJ7bWFyZ2luLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqLTIpfS5teS0xe21hcmdpbi1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5tdC0wXC41e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9Lm10LTF7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5tdC0ye21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0ubXQtXFszcHhcXXttYXJnaW4tdG9wOjNweH0ubXItXFszcHhcXXttYXJnaW4tcmlnaHQ6M3B4fS5tbC0wXC41e21hcmdpbi1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5tbC0xXC41e21hcmdpbi1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ubWwtYXV0b3ttYXJnaW4tbGVmdDphdXRvfS5ib3gtYm9yZGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH0uYmxvY2t7ZGlzcGxheTpibG9ja30uY29udGVudHN7ZGlzcGxheTpjb250ZW50c30uZmxleHtkaXNwbGF5OmZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5oaWRkZW57ZGlzcGxheTpub25lfS5pbmxpbmV7ZGlzcGxheTppbmxpbmV9LmlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0udGFibGV7ZGlzcGxheTp0YWJsZX0uXFthc3BlY3QtcmF0aW9cOjE2XC8xMVxde2FzcGVjdC1yYXRpbzoxNi8xMX0uc2l6ZS0xXC41e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMS41KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5zaXplLTJcLjV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LnNpemUtM1wuNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMy41KX0uc2l6ZS00e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LnNpemUtNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpfS5zaXplLTl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KX0uc2l6ZS1cWzJweFxde3dpZHRoOjJweDtoZWlnaHQ6MnB4fS5zaXplLVxbMTRweFxde3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHh9LnNpemUtXFsxOHB4XF17d2lkdGg6MThweDtoZWlnaHQ6MThweH0uc2l6ZS1cWzE5cHhcXXt3aWR0aDoxOXB4O2hlaWdodDoxOXB4fS5zaXplLWZ1bGx7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uaC0yXC41e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LmgtM3toZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uaC0zXC41e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSl9LmgtNHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uaC01e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpfS5oLTVcLjV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNS41KX0uaC02e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5oLTd7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNyl9LmgtOHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uaC0xMHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9LmgtXFszcHhcXXtoZWlnaHQ6M3B4fS5oLVxbMTNweFxde2hlaWdodDoxM3B4fS5oLVxbMTRweFxde2hlaWdodDoxNHB4fS5oLVxbMTZweFxde2hlaWdodDoxNnB4fS5oLVxbMThweFxde2hlaWdodDoxOHB4fS5oLVxbMjJweFxde2hlaWdodDoyMnB4fS5oLVxbMjZweFxde2hlaWdodDoyNnB4fS5oLVxbMzBweFxde2hlaWdodDozMHB4fS5oLWZ1bGx7aGVpZ2h0OjEwMCV9LmgtcHh7aGVpZ2h0OjFweH0uaC1zY3JlZW57aGVpZ2h0OjEwMHZofS5tYXgtaC05MHttYXgtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqOTApfS5tYXgtaC1cWzI2MHB4XF17bWF4LWhlaWdodDoyNjBweH0ubWF4LWgtXFszMjBweFxde21heC1oZWlnaHQ6MzIwcHh9Lm1heC1oLWZ1bGx7bWF4LWhlaWdodDoxMDAlfS5taW4taC0we21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubWluLWgtXFsyMnB4XF17bWluLWhlaWdodDoyMnB4fS5taW4taC1cWzMwcHhcXXttaW4taGVpZ2h0OjMwcHh9Lm1pbi1oLVxbMzZweFxde21pbi1oZWlnaHQ6MzZweH0ubWluLWgtXFs0NHB4XF17bWluLWhlaWdodDo0NHB4fS5taW4taC1weHttaW4taGVpZ2h0OjFweH0udy0xe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnctMlwuNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LnctM1wuNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSl9LnctNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS53LTV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0udy02e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNil9LnctN3t3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS53LTh7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0udy0xMHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjEwKX0udy0yMXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjIxKX0udy1cWzIycHhcXXt3aWR0aDoyMnB4fS53LVxbMzBweFxde3dpZHRoOjMwcHh9LnctXFszMlwlXF17d2lkdGg6MzIlfS53LVxbMzZcJVxde3dpZHRoOjM2JX0udy1cWzQwXCVcXXt3aWR0aDo0MCV9LnctXFs0MlwlXF17d2lkdGg6NDIlfS53LVxbNDZcJVxde3dpZHRoOjQ2JX0udy1cWzQ4XCVcXXt3aWR0aDo0OCV9LnctXFs1OFwlXF17d2lkdGg6NTglfS53LVxbNjJcJVxde3dpZHRoOjYyJX0udy1cWzY4XCVcXXt3aWR0aDo2OCV9LnctXFs3MFwlXF17d2lkdGg6NzAlfS53LVxbNzRcJVxde3dpZHRoOjc0JX0udy1cWzEyMHB4XF17d2lkdGg6MTIwcHh9LnctXFtjYWxjXCgxMDBcJVwrOHB4XClcXXt3aWR0aDpjYWxjKDEwMCUgKyA4cHgpfS53LVxbbWluXCgzMjBweFwsY2FsY1woMTAwdnctMzJweFwpXClcXXt3aWR0aDptaW4oMzIwcHgsMTAwdncgLSAzMnB4KX0udy1mdWxse3dpZHRoOjEwMCV9LnctbWF4e3dpZHRoOm1heC1jb250ZW50fS53LXB4e3dpZHRoOjFweH0ubWF4LXctOTB7bWF4LXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqOTApfS5tYXgtdy0xMjB7bWF4LXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTIwKX0ubWF4LXctXFsxNTBweFxde21heC13aWR0aDoxNTBweH0ubWF4LXctXFsyMjBweFxde21heC13aWR0aDoyMjBweH0ubWF4LXctXFszNjBweFxde21heC13aWR0aDozNjBweH0ubWF4LXctZnVsbHttYXgtd2lkdGg6MTAwJX0ubWluLXctMHttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubWluLXctXFs1NnB4XF17bWluLXdpZHRoOjU2cHh9Lm1pbi13LVxbMjAwcHhcXXttaW4td2lkdGg6MjAwcHh9Lm1pbi13LVxbMjIwcHhcXXttaW4td2lkdGg6MjIwcHh9Lm1pbi13LXB4e21pbi13aWR0aDoxcHh9LmZsZXgtMXtmbGV4OjF9LnNocmlua3tmbGV4LXNocmluazoxfS5zaHJpbmstMHtmbGV4LXNocmluazowfS5ncm93e2ZsZXgtZ3JvdzoxfS4tdHJhbnNsYXRlLXgtMVwvMnstLXR3LXRyYW5zbGF0ZS14OmNhbGMoY2FsYygxLzIqMTAwJSkqLTEpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCl2YXIoLS10dy10cmFuc2xhdGUteSl9LnRyYW5zbGF0ZS14LTF7LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjEpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCl2YXIoLS10dy10cmFuc2xhdGUteSl9Li10cmFuc2xhdGUteS0xXC8yey0tdHctdHJhbnNsYXRlLXk6Y2FsYyhjYWxjKDEvMioxMDAlKSotMSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KXZhcigtLXR3LXRyYW5zbGF0ZS15KX0udHJhbnNmb3Jte3RyYW5zZm9ybTp2YXIoLS10dy1yb3RhdGUteCwpdmFyKC0tdHctcm90YXRlLXksKXZhcigtLXR3LXJvdGF0ZS16LCl2YXIoLS10dy1za2V3LXgsKXZhcigtLXR3LXNrZXcteSwpfS5hbmltYXRlLVxbZ3JpZC1zcGluXzBcLjdzX2xpbmVhcl9pbmZpbml0ZVxde2FuaW1hdGlvbjpncmlkLXNwaW4gLjdzIGxpbmVhciBpbmZpbml0ZX0uYW5pbWF0ZS1cW2dyaWQtc3Bpbl8wXC44c19saW5lYXJfaW5maW5pdGVcXXthbmltYXRpb246Z3JpZC1zcGluIC44cyBsaW5lYXIgaW5maW5pdGV9LmN1cnNvci1jb2wtcmVzaXple2N1cnNvcjpjb2wtcmVzaXplfS5jdXJzb3ItZGVmYXVsdHtjdXJzb3I6ZGVmYXVsdH0uY3Vyc29yLW5vdC1hbGxvd2Vke2N1cnNvcjpub3QtYWxsb3dlZH0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmN1cnNvci1wcm9ncmVzc3tjdXJzb3I6cHJvZ3Jlc3N9LmN1cnNvci10ZXh0e2N1cnNvcjp0ZXh0fS50b3VjaC1ub25le3RvdWNoLWFjdGlvbjpub25lfS5yZXNpemV7cmVzaXplOmJvdGh9Lmxpc3Qtbm9uZXtsaXN0LXN0eWxlLXR5cGU6bm9uZX0uYXBwZWFyYW5jZS1ub25le2FwcGVhcmFuY2U6bm9uZX0uXFtncmlkLXRlbXBsYXRlLWNvbHVtbnNcOjFmcl8xZnJfMWZyXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnIgMWZyfS5cW2dyaWQtdGVtcGxhdGUtY29sdW1uc1w6YXV0b18xZnJfYXV0b1xde2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmciBhdXRvfS5cW2dyaWQtdGVtcGxhdGUtY29sdW1uc1w6YXV0b19taW5tYXhcKDBcLDFmclwpX2F1dG9cXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byBtaW5tYXgoMCwxZnIpYXV0b30uZ3JpZC1jb2xzLVxbNTZweF8xZnJfYXV0b1xde2dyaWQtdGVtcGxhdGUtY29sdW1uczo1NnB4IDFmciBhdXRvfS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uZmxleC1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcH0ucGxhY2UtaXRlbXMtY2VudGVye3BsYWNlLWl0ZW1zOiBjZW50ZXJ9Lml0ZW1zLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6IGNlbnRlcn0uaXRlbXMtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNofS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZ2FwLTBcLjV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5nYXAtMXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0uZ2FwLTFcLjV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0uZ2FwLTJ7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMil9LmdhcC0yXC41e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LmdhcC0ze2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5nYXAtNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0uZ2FwLVxbNXB4XF17Z2FwOjVweH0uZ2FwLXB4e2dhcDoxcHh9Lmp1c3RpZnktc2VsZi1lbmR7anVzdGlmeS1zZWxmOmZsZXgtZW5kfS50cnVuY2F0ZXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm92ZXJmbG93LWhpZGRlbntvdmVyZmxvdzpoaWRkZW59Lm92ZXJmbG93LXktYXV0b3tvdmVyZmxvdy15OmF1dG99LnJvdW5kZWR7Ym9yZGVyLXJhZGl1czouMjVyZW19LnJvdW5kZWQtXFsycHhcXXtib3JkZXItcmFkaXVzOjJweH0ucm91bmRlZC1cWzNweFxde2JvcmRlci1yYWRpdXM6M3B4fS5yb3VuZGVkLVxbNHB4XF17Ym9yZGVyLXJhZGl1czo0cHh9LnJvdW5kZWQtXFs1cHhcXXtib3JkZXItcmFkaXVzOjVweH0ucm91bmRlZC1cWzdweFxde2JvcmRlci1yYWRpdXM6N3B4fS5yb3VuZGVkLVxbOHB4XF17Ym9yZGVyLXJhZGl1czo4cHh9LnJvdW5kZWQtXFs5cHhcXXtib3JkZXItcmFkaXVzOjlweH0ucm91bmRlZC1cWzEwcHhcXXtib3JkZXItcmFkaXVzOjEwcHh9LnJvdW5kZWQtXFsxNHB4XF17Ym9yZGVyLXJhZGl1czoxNHB4fS5yb3VuZGVkLWZ1bGx7Ym9yZGVyLXJhZGl1czozLjQwMjgyZTM4cHh9LnJvdW5kZWQtbGd7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbGcpfS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKX0ucm91bmRlZC1ub25le2JvcmRlci1yYWRpdXM6MH0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy14bCl9LnJvdW5kZWQteHN7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMteHMpfS5yb3VuZGVkLXQtXFsxMHB4XF17Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxMHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjEwcHh9LmJvcmRlcntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItMHtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0uYm9yZGVyLTJ7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjJweH0uYm9yZGVyLXR7Ym9yZGVyLXRvcC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci10b3Atd2lkdGg6MXB4fS5ib3JkZXItcntib3JkZXItcmlnaHQtc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItcmlnaHQtd2lkdGg6MXB4fS5ib3JkZXItZGFzaGVkey0tdHctYm9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItc3R5bGU6ZGFzaGVkfS5ib3JkZXItbm9uZXstLXR3LWJvcmRlci1zdHlsZTpub25lO2JvcmRlci1zdHlsZTpub25lfS5cIWJvcmRlci1cW3JnYmFcKDEwXCwxMzJcLDI1NVwsMFwuNlwpXF17Ym9yZGVyLWNvbG9yOiMwYTg0ZmY5OSFpbXBvcnRhbnR9LmJvcmRlci1cW1wjM2I1Zjk5XF17Ym9yZGVyLWNvbG9yOiMzYjVmOTl9LmJvcmRlci1cW1wjNWY2MjY4XF17Ym9yZGVyLWNvbG9yOiM1ZjYyNjh9LmJvcmRlci1cW1wjMjIyXF17Ym9yZGVyLWNvbG9yOiMyMjJ9LmJvcmRlci1cW1wjZmY0NTNhXF1cLzUwe2JvcmRlci1jb2xvcjojZmY0NTNhODA7Ym9yZGVyLWNvbG9yOmNvbG9yKGRpc3BsYXktcDMgLjkyMjY3MyAuMzMzMTM0IC4yNzE1MS8uNSk7Ym9yZGVyLWNvbG9yOmxhYig1OC43NjI4JSA2OS44NDY3IDUwLjM4ODYvLjUpfS5ib3JkZXItYWNjZW50e2JvcmRlci1jb2xvcjp2YXIoLS1jb2xvci1hY2NlbnQpfS5ib3JkZXItZGFuZ2VyXC8yMHtib3JkZXItY29sb3I6I2Y4NzE3MTMzfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci1kYW5nZXJcLzIwe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItZGFuZ2VyKTIwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItZGFuZ2VyXC8zMHtib3JkZXItY29sb3I6I2Y4NzE3MTRkfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci1kYW5nZXJcLzMwe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItZGFuZ2VyKTMwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2FybmluZ1wvMjV7Ym9yZGVyLWNvbG9yOiNmYmJmMjQ0MH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ib3JkZXItd2FybmluZ1wvMjV7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13YXJuaW5nKTI1JSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGV7Ym9yZGVyLWNvbG9yOnZhcigtLWNvbG9yLXdoaXRlKX0uYm9yZGVyLXdoaXRlXC84e2JvcmRlci1jb2xvcjojZmZmZmZmMTR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC84e2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOCUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXdoaXRlXC8xMHtib3JkZXItY29sb3I6I2ZmZmZmZjFhfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci13aGl0ZVwvMTB7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMCUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXdoaXRlXC8xMntib3JkZXItY29sb3I6I2ZmZmZmZjFmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci13aGl0ZVwvMTJ7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMiUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXdoaXRlXC8yMHtib3JkZXItY29sb3I6I2ZmZjN9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC8yMHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTIwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcLzI1e2JvcmRlci1jb2xvcjojZmZmZmZmNDB9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC8yNXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTI1JSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcLzMwe2JvcmRlci1jb2xvcjojZmZmZmZmNGR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC8zMHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTMwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcL1xbMFwuMDZcXXtib3JkZXItY29sb3I6I2ZmZmZmZjBmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci13aGl0ZVwvXFswXC4wNlxde2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNiUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXQtXFtcI2Y0ZjRmNVxde2JvcmRlci10b3AtY29sb3I6I2Y0ZjRmNX0uYm9yZGVyLXQtd2hpdGV7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jb2xvci13aGl0ZSl9LmJvcmRlci10LXdoaXRlXC82MHtib3JkZXItdG9wLWNvbG9yOiNmZmY5fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci10LXdoaXRlXC82MHtib3JkZXItdG9wLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk2MCUsdHJhbnNwYXJlbnQpfX0uXCFiZy1cW3JnYmFcKDEwXCwxMzJcLDI1NVwsMFwuMDhcKVxde2JhY2tncm91bmQtY29sb3I6IzBhODRmZjE0IWltcG9ydGFudH0uXCFiZy13aGl0ZVwvXFswXC4xMlxde2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjFmIWltcG9ydGFudH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5cIWJnLXdoaXRlXC9cWzBcLjEyXF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMTIlLHRyYW5zcGFyZW50KSFpbXBvcnRhbnR9fS5iZy1cW1wjMGEwYTBjXF17YmFja2dyb3VuZC1jb2xvcjojMGEwYTBjfS5iZy1cW1wjMGE4NGZmXF17YmFja2dyb3VuZC1jb2xvcjojMGE4NGZmfS5iZy1cW1wjMWMxYzFjXF17YmFja2dyb3VuZC1jb2xvcjojMWMxYzFjfS5iZy1cW1wjNmU2ZTcyXF17YmFja2dyb3VuZC1jb2xvcjojNmU2ZTcyfS5iZy1cW1wjOWE5YTllXF17YmFja2dyb3VuZC1jb2xvcjojOWE5YTllfS5iZy1cW1wjMjAyYjNhXF17YmFja2dyb3VuZC1jb2xvcjojMjAyYjNhfS5iZy1cW1wjMjIyXF17YmFja2dyb3VuZC1jb2xvcjojMjIyfS5iZy1cW1wjMjYzNjRjXF17YmFja2dyb3VuZC1jb2xvcjojMjYzNjRjfS5iZy1cW1wjMTAxMDEwXF17YmFja2dyb3VuZC1jb2xvcjojMTAxMDEwfS5iZy1cW1wjZjg3MTcxXF17YmFja2dyb3VuZC1jb2xvcjojZjg3MTcxfS5iZy1cW1wjZmY0NTNhXF1cLzEwe2JhY2tncm91bmQtY29sb3I6I2ZmNDUzYTFhO2JhY2tncm91bmQtY29sb3I6Y29sb3IoZGlzcGxheS1wMyAuOTIyNjczIC4zMzMxMzQgLjI3MTUxLy4xKTtiYWNrZ3JvdW5kLWNvbG9yOmxhYig1OC43NjI4JSA2OS44NDY3IDUwLjM4ODYvLjEpfS5iZy1cW3JnYmFcKDEwXCwxMzJcLDI1NVwsMFwuMjJcKVxde2JhY2tncm91bmQtY29sb3I6IzBhODRmZjM4fS5iZy1cW3JnYmFcKDk5XCwxMDJcLDI0MVwsMFwuMThcKVxde2JhY2tncm91bmQtY29sb3I6IzYzNjZmMTJlfS5iZy1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1hY2NlbnQpfS5iZy1ibGFja3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLWJsYWNrKX0uYmctYmxhY2tcLzkwe2JhY2tncm91bmQtY29sb3I6IzAwMDAwMGU2fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLWJsYWNrXC85MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1ibGFjayk5MCUsdHJhbnNwYXJlbnQpfX0uYmctZGFuZ2VyLXNvZnR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1kYW5nZXItc29mdCl9LmJnLWRhbmdlclwvMTB7YmFja2dyb3VuZC1jb2xvcjojZjg3MTcxMWF9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctZGFuZ2VyXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1kYW5nZXIpMTAlLHRyYW5zcGFyZW50KX19LmJnLXBhZ2V7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wYWdlKX0uYmctcGFuZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wYW5lbCl9LmJnLXBhbmVsLWJne2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcGFuZWwtYmcpfS5iZy1wYW5lbC1iZy10cmFuc2x1Y2VudHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXBhbmVsLWJnLXRyYW5zbHVjZW50KX0uYmctcGFuZWwtZGVlcHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXBhbmVsLWRlZXApfS5iZy1wYW5lbC1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcGFuZWwtb3ZlcmxheSl9LmJnLXN1Y2Nlc3MtZW1lcmFsZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXN1Y2Nlc3MtZW1lcmFsZCl9LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmJnLXdhcm5pbmdcLzEwe2JhY2tncm91bmQtY29sb3I6I2ZiYmYyNDFhfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdhcm5pbmdcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdhcm5pbmcpMTAlLHRyYW5zcGFyZW50KX19LmJnLXdoaXRle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5iZy13aGl0ZVwvNntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwZn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvNntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk2JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvOHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxNH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvOHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvMTB7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWF9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTEwJSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvMTJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcLzEye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTEyJSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvMTV7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMjZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcLzE1e2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTE1JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvMjB7YmFja2dyb3VuZC1jb2xvcjojZmZmM31Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvMjB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMjAlLHRyYW5zcGFyZW50KX19LmJnLXdoaXRlXC80MHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY2fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdoaXRlXC80MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MCUsdHJhbnNwYXJlbnQpfX0uYmctd2hpdGVcLzUwe2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjgwfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdoaXRlXC81MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk1MCUsdHJhbnNwYXJlbnQpfX0uYmctd2hpdGVcL1xbMFwuMDNcXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwOH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvXFswXC4wM1xde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTMlLHRyYW5zcGFyZW50KX19LmJnLXdoaXRlXC9cWzBcLjA0XF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMGF9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcL1xbMFwuMDRcXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvXFswXC4wNlxde2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjBmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdoaXRlXC9cWzBcLjA2XF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNiUsdHJhbnNwYXJlbnQpfX0uYmctd2hpdGVcL1xbMFwuMDhcXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxNH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvXFswXC4wOFxde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTglLHRyYW5zcGFyZW50KX19LmJnLXdoaXRlXC9cWzBcLjEyXF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcL1xbMFwuMTJcXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMiUsdHJhbnNwYXJlbnQpfX0uYmctd2hpdGVcL1xbMFwuMTZcXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYyOX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvXFswXC4xNlxde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTE2JSx0cmFuc3BhcmVudCl9fS5iZy1cW2xpbmVhci1ncmFkaWVudFwoMTQ1ZGVnXCxcIzI1M2E1ZlwsXCMxNjIxMzJcKVxde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE0NWRlZywjMjUzYTVmLCMxNjIxMzIpfS5iZy1cW2xpbmVhci1ncmFkaWVudFwodG9fYm90dG9tXCxcIzFjMWMxZV8wXCVcLHJnYmFcKDI4XCwyOFwsMzBcLDBcKV8xMDBcJVwpXF17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoIzFjMWMxZSAwJSwjMWMxYzFlMDAgMTAwJSl9LmJnLVxbbGluZWFyLWdyYWRpZW50XCh0b19yaWdodFwscmdiYVwoMjhcLDI4XCwzMFwsMFwpXzBcJVwsXCMxYzFjMWVfNTVcJVwpXF17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzFjMWMxZTAwIDAlLCMxYzFjMWUgNTUlKX0uYmctXFtsaW5lYXItZ3JhZGllbnRcKHRvX3RvcFwsXCMxYzFjMWVfMFwlXCxyZ2JhXCgyOFwsMjhcLDMwXCwwXClfMTAwXCVcKVxde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KCMxYzFjMWUwMCAwJSwjMWMxYzFlIDEwMCUpfS5vYmplY3QtY29udGFpbntvYmplY3QtZml0OmNvbnRhaW59Lm9iamVjdC1jb3ZlcntvYmplY3QtZml0OmNvdmVyfS5wLTB7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5wLTBcLjV7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0ucC0xe3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ucC0zXC41e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpfS5wLTZ7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5weC0wXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5weC0xe3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnB4LTFcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5weC0ye3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMil9LnB4LTJcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5weC0ze3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMyl9LnB4LTNcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpfS5weC00e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqNCl9LnB4LTV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0ucHgtXFs1XC41cHhcXXtwYWRkaW5nLWlubGluZS1zdGFydDo1LjVweDtwYWRkaW5nLWlubGluZS1lbmQ6NS41cHh9LnB4LVxbN3B4XF17cGFkZGluZy1pbmxpbmUtc3RhcnQ6N3B4O3BhZGRpbmctaW5saW5lLWVuZDo3cHh9LnB5LTBcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0ucHktMXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnB5LTFcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LnB5LTJ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5weS0yXC41e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5weS00e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ucHktNntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqNil9LnB5LVxbMnB4XF17cGFkZGluZy1ibG9jay1zdGFydDoycHg7cGFkZGluZy1ibG9jay1lbmQ6MnB4fS5weS1cWzNweFxde3BhZGRpbmctYmxvY2stc3RhcnQ6M3B4O3BhZGRpbmctYmxvY2stZW5kOjNweH0ucHktXFs1cHhcXXtwYWRkaW5nLWJsb2NrLXN0YXJ0OjVweDtwYWRkaW5nLWJsb2NrLWVuZDo1cHh9LnB5LVxbN3B4XF17cGFkZGluZy1ibG9jay1zdGFydDo3cHg7cGFkZGluZy1ibG9jay1lbmQ6N3B4fS5wdC0wXC41e3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5wdC0xe3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnB0LTJcLjV7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5wci0ye3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0ucHItM1wuNXtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMy41KX0ucHItXFsyNnB4XF17cGFkZGluZy1yaWdodDoyNnB4fS5wYi0wXC41e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5wYi0xe3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnBiLTFcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5wYi0ye3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMil9LnBiLVxbMnB4XF17cGFkZGluZy1ib3R0b206MnB4fS5wbC0ye3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5wbC0yXC41e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LnBsLTN7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykqMyl9LnBsLTd7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykqNyl9LnBsLVxbMjZweFxde3BhZGRpbmctbGVmdDoyNnB4fS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0udGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0fS5cW2ZvbnQtZmFtaWx5XDotYXBwbGUtc3lzdGVtXCxzeXN0ZW0tdWlcLHNhbnMtc2VyaWZcXXtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLHN5c3RlbS11aSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLE5vdG8gU2FucyxVYnVudHUsQ2FudGFyZWxsLEhlbHZldGljYSBOZXVlLHNhbnMtc2VyaWZ9LmZvbnQtXFtpbmhlcml0XF17Zm9udC1mYW1pbHk6aW5oZXJpdH0uZm9udC1tb25ve2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyl9LmZvbnQtc3lzdGVte2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtc3lzdGVtKX0udGV4dC1cWzlweFxde2ZvbnQtc2l6ZTo5cHh9LnRleHQtXFsxMHB4XF17Zm9udC1zaXplOjEwcHh9LnRleHQtXFsxMVwuNXB4XF17Zm9udC1zaXplOjExLjVweH0udGV4dC1cWzExcHhcXXtmb250LXNpemU6MTFweH0udGV4dC1cWzEycHhcXXtmb250LXNpemU6MTJweH0udGV4dC1cWzEzcHhcXXtmb250LXNpemU6MTNweH0udGV4dC1cWzE0cHhcXXtmb250LXNpemU6MTRweH0udGV4dC1cWzE3cHhcXXtmb250LXNpemU6MTdweH0udGV4dC1cWzE4cHhcXXtmb250LXNpemU6MThweH0ubGVhZGluZy1cWzFcLjVcXXstLXR3LWxlYWRpbmc6MS41O2xpbmUtaGVpZ2h0OjEuNX0ubGVhZGluZy1cWzFcLjM1XF17LS10dy1sZWFkaW5nOjEuMzU7bGluZS1oZWlnaHQ6MS4zNX0ubGVhZGluZy1ub25ley0tdHctbGVhZGluZzoxO2xpbmUtaGVpZ2h0OjF9LmxlYWRpbmctc251Z3stLXR3LWxlYWRpbmc6dmFyKC0tbGVhZGluZy1zbnVnKTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXNudWcpfS5sZWFkaW5nLXRpZ2h0ey0tdHctbGVhZGluZzp2YXIoLS1sZWFkaW5nLXRpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXRpZ2h0KX0uZm9udC1tZWRpdW17LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmZvbnQtc2VtaWJvbGR7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpfS50cmFja2luZy1cWzBcLjFlbVxdey0tdHctdHJhY2tpbmc6LjFlbTtsZXR0ZXItc3BhY2luZzouMWVtfS50cmFja2luZy1cWzBcLjAyZW1cXXstLXR3LXRyYWNraW5nOi4wMmVtO2xldHRlci1zcGFjaW5nOi4wMmVtfS50cmFja2luZy1cWzBcLjA0ZW1cXXstLXR3LXRyYWNraW5nOi4wNGVtO2xldHRlci1zcGFjaW5nOi4wNGVtfS50cmFja2luZy1cWzBcLjA2ZW1cXXstLXR3LXRyYWNraW5nOi4wNmVtO2xldHRlci1zcGFjaW5nOi4wNmVtfS50cmFja2luZy1cWzBcLjA4ZW1cXXstLXR3LXRyYWNraW5nOi4wOGVtO2xldHRlci1zcGFjaW5nOi4wOGVtfS50cmFja2luZy13aWRley0tdHctdHJhY2tpbmc6dmFyKC0tdHJhY2tpbmctd2lkZSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tdHJhY2tpbmctd2lkZSl9LmJyZWFrLXdvcmRze292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0udGV4dC1lbGxpcHNpc3t0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LlwhdGV4dC13aGl0ZXtjb2xvcjp2YXIoLS1jb2xvci13aGl0ZSkhaW1wb3J0YW50fS50ZXh0LVxbXCMwYTBhMGNcXXtjb2xvcjojMGEwYTBjfS50ZXh0LVxbXCM4ZThlOTNcXXtjb2xvcjojOGU4ZTkzfS50ZXh0LVxbXCMzNGQzOTlcXXtjb2xvcjojMzRkMzk5fS50ZXh0LVxbXCMwNjIwMThcXXtjb2xvcjojMDYyMDE4fS50ZXh0LVxbXCNjOGQ3ZmZcXXtjb2xvcjojYzhkN2ZmfS50ZXh0LVxbXCNkMmU3ZmZcXXtjb2xvcjojZDJlN2ZmfS50ZXh0LVxbXCNmZmIzYWRcXXtjb2xvcjojZmZiM2FkfS50ZXh0LWFjY2VudHtjb2xvcjp2YXIoLS1jb2xvci1hY2NlbnQpfS50ZXh0LWFtYmVyLTQwMHtjb2xvcjp2YXIoLS1jb2xvci1hbWJlci00MDApfS50ZXh0LWRhbmdlcntjb2xvcjp2YXIoLS1jb2xvci1kYW5nZXIpfS50ZXh0LWRhbmdlci1zb2Z0e2NvbG9yOnZhcigtLWNvbG9yLWRhbmdlci1zb2Z0KX0udGV4dC1lbWVyYWxkLTQwMHtjb2xvcjp2YXIoLS1jb2xvci1lbWVyYWxkLTQwMCl9LnRleHQtc2t5LTQwMHtjb2xvcjp2YXIoLS1jb2xvci1za3ktNDAwKX0udGV4dC13YXJuaW5nLXNvZnR7Y29sb3I6dmFyKC0tY29sb3Itd2FybmluZy1zb2Z0KX0udGV4dC13aGl0ZXtjb2xvcjp2YXIoLS1jb2xvci13aGl0ZSl9LnRleHQtd2hpdGVcLzMwe2NvbG9yOiNmZmZmZmY0ZH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC8zMHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMzAlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzM1e2NvbG9yOiNmZmZmZmY1OX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC8zNXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMzUlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzQwe2NvbG9yOiNmZmY2fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzQwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MCUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNDV7Y29sb3I6I2ZmZmZmZjczfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzQ1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0NSUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNTB7Y29sb3I6I2ZmZmZmZjgwfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzUwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk1MCUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNTV7Y29sb3I6I2ZmZmZmZjhjfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzU1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk1NSUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNjB7Y29sb3I6I2ZmZjl9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNjB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTYwJSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC82NXtjb2xvcjojZmZmZmZmYTZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNjV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTY1JSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC83MHtjb2xvcjojZmZmZmZmYjN9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNzB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTcwJSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC83NXtjb2xvcjojZmZmZmZmYmZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNzV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTc1JSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC84MHtjb2xvcjojZmZmY31Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC84MHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpODAlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzg1e2NvbG9yOiNmZmZmZmZkOX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC84NXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpODUlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzkwe2NvbG9yOiNmZmZmZmZlNn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC85MHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOTAlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzk1e2NvbG9yOiNmZmZmZmZmMn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC85NXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOTUlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcL1xbMFwuNDJcXXtjb2xvcjojZmZmZmZmNmJ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvXFswXC40Mlxde2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MiUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvXFswXC40OFxde2NvbG9yOiNmZmZmZmY3YX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC9cWzBcLjQ4XF17Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTQ4JSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC9cWzBcLjU4XF17Y29sb3I6I2ZmZmZmZjk0fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcL1xbMFwuNThcXXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNTguMCUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvXFswXC45Mlxde2NvbG9yOiNmZmZmZmZlYn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC9cWzBcLjkyXF17Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTkyJSx0cmFuc3BhcmVudCl9fS5sb3dlcmNhc2V7dGV4dC10cmFuc2Zvcm06bG93ZXJjYXNlfS51cHBlcmNhc2V7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9LnRhYnVsYXItbnVtc3stLXR3LW51bWVyaWMtc3BhY2luZzp0YWJ1bGFyLW51bXM7Zm9udC12YXJpYW50LW51bWVyaWM6dmFyKC0tdHctb3JkaW5hbCwpdmFyKC0tdHctc2xhc2hlZC16ZXJvLCl2YXIoLS10dy1udW1lcmljLWZpZ3VyZSwpdmFyKC0tdHctbnVtZXJpYy1zcGFjaW5nLCl2YXIoLS10dy1udW1lcmljLWZyYWN0aW9uLCl9LlxbZm9udC12YXJpYW50LW51bWVyaWNcOnRhYnVsYXItbnVtc1xde2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30ubm8tdW5kZXJsaW5le3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmV9LmFudGlhbGlhc2Vkey13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfS5vcGFjaXR5LTB7b3BhY2l0eTowfS5vcGFjaXR5LTQwe29wYWNpdHk6LjR9Lm9wYWNpdHktNjB7b3BhY2l0eTouNn0ub3BhY2l0eS0xMDB7b3BhY2l0eToxfS5zaGFkb3d7LS10dy1zaGFkb3c6MCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksMCAxcHggMnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSk7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctXFswXzFweF8ycHhfcmdiYVwoMFwsMFwsMFwsMFwuMThcKVwsMF82cHhfMThweF9yZ2JhXCgwXCwwXCwwXCwwXC4yOFwpXCxpbnNldF8wXzBfMF8xcHhfcmdiYVwoMjU1XCwyNTVcLDI1NVwsMFwuMDZcKVxdey0tdHctc2hhZG93OjAgMXB4IDJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDJlKSwwIDZweCAxOHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwNDcpLGluc2V0IDAgMCAwIDFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsI2ZmZmZmZjBmKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1cWzBfOHB4XzI0cHhfcmdiYVwoMFwsMFwsMFwsMFwuNFwpXF17LS10dy1zaGFkb3c6MCA4cHggMjRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDYpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LVxbMF84cHhfMjRweF9yZ2JhXCgwXCwwXCwwXCwwXC41XClcXXstLXR3LXNoYWRvdzowIDhweCAyNHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwODApO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LVxbMF84cHhfMjRweF9yZ2JhXCgwXCwwXCwwXCwwXC40NVwpXF17LS10dy1zaGFkb3c6MCA4cHggMjRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDczKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1cWzBfMTJweF80MHB4X3JnYmFcKDBcLDBcLDBcLDBcLjU1XClcXXstLXR3LXNoYWRvdzowIDEycHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDhjKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1cWzhweF8wXzMycHhfcmdiYVwoMFwsMFwsMFwsMFwuMzVcKVxdey0tdHctc2hhZG93OjhweCAwIDMycHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDA1OSk7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctbGd7LS10dy1zaGFkb3c6MCAxMHB4IDE1cHggLTNweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSwwIDRweCA2cHggLTRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnJpbmcsLnJpbmctMXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKTAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKXZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnJpbmctMnstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKTAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKXZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LlxbYm94LXNoYWRvd1w6MF8wXzZweF9yZ2JhXCg3NFwsMjIyXCwxMjhcLDBcLjdcKVxde2JveC1zaGFkb3c6MCAwIDZweCAjNGFkZTgwYjN9LlxbYm94LXNoYWRvd1w6MF8wXzZweF9yZ2JhXCgyNDhcLDExM1wsMTEzXCwwXC41NVwpXF17Ym94LXNoYWRvdzowIDAgNnB4ICNmODcxNzE4Y30ucmluZy1cW1wjMWMxYzFlXF17LS10dy1yaW5nLWNvbG9yOiMxYzFjMWV9LnJpbmctd2hpdGVcLzEwey0tdHctcmluZy1jb2xvcjojZmZmZmZmMWF9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsucmluZy13aGl0ZVwvMTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMCUsdHJhbnNwYXJlbnQpfX0ub3V0bGluZXtvdXRsaW5lLXN0eWxlOnZhcigtLXR3LW91dGxpbmUtc3R5bGUpO291dGxpbmUtd2lkdGg6MXB4fS5ibHVyey0tdHctYmx1cjpibHVyKDhweCk7ZmlsdGVyOnZhcigtLXR3LWJsdXIsKXZhcigtLXR3LWJyaWdodG5lc3MsKXZhcigtLXR3LWNvbnRyYXN0LCl2YXIoLS10dy1ncmF5c2NhbGUsKXZhcigtLXR3LWh1ZS1yb3RhdGUsKXZhcigtLXR3LWludmVydCwpdmFyKC0tdHctc2F0dXJhdGUsKXZhcigtLXR3LXNlcGlhLCl2YXIoLS10dy1kcm9wLXNoYWRvdywpfS5ncmF5c2NhbGV7LS10dy1ncmF5c2NhbGU6Z3JheXNjYWxlKDEwMCUpO2ZpbHRlcjp2YXIoLS10dy1ibHVyLCl2YXIoLS10dy1icmlnaHRuZXNzLCl2YXIoLS10dy1jb250cmFzdCwpdmFyKC0tdHctZ3JheXNjYWxlLCl2YXIoLS10dy1odWUtcm90YXRlLCl2YXIoLS10dy1pbnZlcnQsKXZhcigtLXR3LXNhdHVyYXRlLCl2YXIoLS10dy1zZXBpYSwpdmFyKC0tdHctZHJvcC1zaGFkb3csKX0uZmlsdGVye2ZpbHRlcjp2YXIoLS10dy1ibHVyLCl2YXIoLS10dy1icmlnaHRuZXNzLCl2YXIoLS10dy1jb250cmFzdCwpdmFyKC0tdHctZ3JheXNjYWxlLCl2YXIoLS10dy1odWUtcm90YXRlLCl2YXIoLS10dy1pbnZlcnQsKXZhcigtLXR3LXNhdHVyYXRlLCl2YXIoLS10dy1zZXBpYSwpdmFyKC0tdHctZHJvcC1zaGFkb3csKX0uYmFja2Ryb3AtYmx1cnstLXR3LWJhY2tkcm9wLWJsdXI6Ymx1cig4cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKXZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKXZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0LCl2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKXZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKXZhcigtLXR3LWJhY2tkcm9wLWludmVydCwpdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKXZhcigtLXR3LWJhY2tkcm9wLXNlcGlhLCk7YmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKXZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKXZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0LCl2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKXZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKXZhcigtLXR3LWJhY2tkcm9wLWludmVydCwpdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKXZhcigtLXR3LWJhY2tkcm9wLXNlcGlhLCl9LmJhY2tkcm9wLWJsdXItXFsxMnB4XF17LS10dy1iYWNrZHJvcC1ibHVyOmJsdXIoMTJweCk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKX0uYmFja2Ryb3AtYmx1ci1cWzE4cHhcXXstLXR3LWJhY2tkcm9wLWJsdXI6Ymx1cigxOHB4KTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS5iYWNrZHJvcC1ibHVyLW1key0tdHctYmFja2Ryb3AtYmx1cjpibHVyKHZhcigtLWJsdXItbWQpKTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS5iYWNrZHJvcC1zYXR1cmF0ZS0xNTB7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTpzYXR1cmF0ZSgxNTAlKTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS5iYWNrZHJvcC1maWx0ZXJ7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKX0udHJhbnNpdGlvbnt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sdHJhbnNsYXRlLHNjYWxlLHJvdGF0ZSxmaWx0ZXIsLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXIsYmFja2Ryb3AtZmlsdGVyLGRpc3BsYXksY29udGVudC12aXNpYmlsaXR5LG92ZXJsYXkscG9pbnRlci1ldmVudHM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0udHJhbnNpdGlvbi1cW2JvcmRlci1jb2xvclwsYmFja2dyb3VuZFxde3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQ7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0udHJhbnNpdGlvbi1cW3dpZHRoXCxiYWNrZ3JvdW5kXF17dHJhbnNpdGlvbi1wcm9wZXJ0eTp3aWR0aCxiYWNrZ3JvdW5kO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tY29sb3Jze3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3Isb3V0bGluZS1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsLS10dy1ncmFkaWVudC1mcm9tLC0tdHctZ3JhZGllbnQtdmlhLC0tdHctZ3JhZGllbnQtdG87dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0udHJhbnNpdGlvbi1vcGFjaXR5e3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS5kdXJhdGlvbi0xNTB7LS10dy1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30uZHVyYXRpb24tMjAwey0tdHctZHVyYXRpb246LjJzO3RyYW5zaXRpb24tZHVyYXRpb246LjJzfS5kdXJhdGlvbi0zMDB7LS10dy1kdXJhdGlvbjouM3M7dHJhbnNpdGlvbi1kdXJhdGlvbjouM3N9LmVhc2Utb3V0ey0tdHctZWFzZTp2YXIoLS1lYXNlLW91dCk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZWFzZS1vdXQpfS5vdXRsaW5lLW5vbmV7LS10dy1vdXRsaW5lLXN0eWxlOm5vbmU7b3V0bGluZS1zdHlsZTpub25lfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uc2VsZWN0LXRleHR7LXdlYmtpdC11c2VyLXNlbGVjdDp0ZXh0O3VzZXItc2VsZWN0OnRleHR9LlxbLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXJcOmJsdXJcKDEycHhcKVxdey13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMTJweCl9Llxbc2Nyb2xsYmFyLXdpZHRoXDp0aGluXF17c2Nyb2xsYmFyLXdpZHRoOnRoaW59Llxbc3RyZWFtXDphdmNjXF17c3RyZWFtOmF2Y2N9Llxbc3RyZWFtXDpoMjY0XF17c3RyZWFtOmgyNjR9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4yc1wsYm94LXNoYWRvd18wXC4yc1xde3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMsYm94LXNoYWRvdyAuMnN9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4zc1xde3RyYW5zaXRpb246YmFja2dyb3VuZCAuM3N9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4xMnNcLGJvcmRlci1jb2xvcl8wXC4xMnNcXXt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjEycyxib3JkZXItY29sb3IgLjEyc30uXFt0cmFuc2l0aW9uXDpiYWNrZ3JvdW5kXzBcLjEyc1wsY29sb3JfMFwuMTJzXF17dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xMnMsY29sb3IgLjEyc30uXFt0cmFuc2l0aW9uXDpiYWNrZ3JvdW5kXzBcLjEyc1xde3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTJzfS5cW3RyYW5zaXRpb25cOmJhY2tncm91bmRfMFwuMTVzXF17dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXN9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4xNXNfZWFzZVwsY29sb3JfMFwuMTVzX2Vhc2VcXXt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyxjb2xvciAuMTVzfS5cW3RyYW5zaXRpb25cOmJhY2tncm91bmRfMFwuMTVzX2Vhc2VcXXt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1c30uXFt0cmFuc2l0aW9uXDpiYWNrZ3JvdW5kXzBcLjE4c19lYXNlXF17dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xOHN9LlxbdHJhbnNpdGlvblw6bGVmdF8wXC4xNXNcXXt0cmFuc2l0aW9uOmxlZnQgLjE1c30uXFt0cmFuc2l0aW9uXDpvcGFjaXR5XzBcLjEyc1wsYmFja2dyb3VuZF8wXC4xMnNcLGNvbG9yXzBcLjEyc1xde3RyYW5zaXRpb246b3BhY2l0eSAuMTJzLGJhY2tncm91bmQgLjEycyxjb2xvciAuMTJzfS5cW3RyYW5zaXRpb25cOm9wYWNpdHlfMFwuMTJzXF17dHJhbnNpdGlvbjpvcGFjaXR5IC4xMnN9LlxbdHJhbnNpdGlvblw6b3BhY2l0eV8wXC4xNXNfZWFzZVwsYmFja2dyb3VuZF8wXC4xNXNfZWFzZVxde3RyYW5zaXRpb246b3BhY2l0eSAuMTVzLGJhY2tncm91bmQgLjE1c30uXFt0cmFuc2l0aW9uXDpvcGFjaXR5XzBcLjE1c19lYXNlXCx0cmFuc2Zvcm1fMFwuMTVzX2Vhc2VcXXt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyx0cmFuc2Zvcm0gLjE1c30uXFt0cmFuc2l0aW9uXDpvcGFjaXR5XzBcLjE4c19lYXNlXF17dHJhbnNpdGlvbjpvcGFjaXR5IC4xOHN9LlxbdHJhbnNpdGlvblw6cGFkZGluZ18wXC4yNXNfZWFzZVxde3RyYW5zaXRpb246cGFkZGluZyAuMjVzfS5cW3RyYW5zaXRpb25cOnRyYW5zZm9ybV8wXC4yNXNfZWFzZVwsb3BhY2l0eV8wXC4yc19lYXNlXF17dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyxvcGFjaXR5IC4yc30uXFt0cmFuc2l0aW9uXDp3aWR0aF8xMjBtc19saW5lYXJcXXt0cmFuc2l0aW9uOndpZHRoIC4xMnMgbGluZWFyfS5ncm91cC1mb2N1cy13aXRoaW5cOm9wYWNpdHktMDppcyg6d2hlcmUoLmdyb3VwKTpmb2N1cy13aXRoaW4gKil7b3BhY2l0eTowfUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ncm91cC1ob3Zlclw6cG9pbnRlci1ldmVudHMtYXV0bzppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtwb2ludGVyLWV2ZW50czphdXRvfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZ3JvdXAtaG92ZXJcOmJsb2NrOmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICope2Rpc3BsYXk6YmxvY2t9fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ncm91cC1ob3Zlclw6aGlkZGVuOmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICope2Rpc3BsYXk6bm9uZX19QG1lZGlhIChob3Zlcjpob3Zlcil7Lmdyb3VwLWhvdmVyXDp0cmFuc2xhdGUteC0wOmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICopey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpdmFyKC0tdHctdHJhbnNsYXRlLXkpfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZ3JvdXAtaG92ZXJcOm9wYWNpdHktMDppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtvcGFjaXR5OjB9fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ncm91cC1ob3Zlclw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cCk6aG92ZXIgKil7b3BhY2l0eToxfX0ucGxhY2Vob2xkZXJcOnRleHQtd2hpdGVcLzQwOjpwbGFjZWhvbGRlcntjb2xvcjojZmZmNn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5wbGFjZWhvbGRlclw6dGV4dC13aGl0ZVwvNDA6OnBsYWNlaG9sZGVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtd2l0aGluXDpiZy13aGl0ZVwvMTA6Zm9jdXMtd2l0aGlue2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjFhfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmZvY3VzLXdpdGhpblw6Ymctd2hpdGVcLzEwOmZvY3VzLXdpdGhpbntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMCUsdHJhbnNwYXJlbnQpfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJvcmRlci1cW3JnYmFcKDI1NVwsMjU1XCwyNTVcLDBcLjE2XClcXTpob3Zlcntib3JkZXItY29sb3I6I2ZmZmZmZjI5fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJvcmRlci1cW3JnYmFcKDI1NVwsMjU1XCwyNTVcLDBcLjE4XClcXTpob3Zlcntib3JkZXItY29sb3I6I2ZmZmZmZjJlfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJvcmRlci13aGl0ZVwvMjA6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmYzfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmhvdmVyXDpib3JkZXItd2hpdGVcLzIwOmhvdmVye2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMjAlLHRyYW5zcGFyZW50KX19fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ob3Zlclw6Ym9yZGVyLXdoaXRlXC9cWzBcLjg4XF06aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmZmZmZlMH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ym9yZGVyLXdoaXRlXC9cWzBcLjg4XF06aG92ZXJ7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4OCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvODpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxNH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcLzg6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvMTI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXdoaXRlXC8xMjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMiUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvMTg6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMmV9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXdoaXRlXC8xODpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxOCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvMjA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmM31Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcLzIwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTIwJSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJnLXdoaXRlXC8yNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY0MH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcLzI1OmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTI1JSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjA1XF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMGR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjA1XF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNSUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wNlxdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjBmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wNlxdOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTYlLHRyYW5zcGFyZW50KX19fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDdcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxMn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDdcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk3LjAlLHRyYW5zcGFyZW50KX19fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDlcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxN31Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDlcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk5JSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjg4XF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmZTB9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjg4XF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpODglLHRyYW5zcGFyZW50KX19fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ob3Zlclw6dGV4dC1cW1wjMGEwYTBjXF06aG92ZXJ7Y29sb3I6IzBhMGEwY319QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDp0ZXh0LXdoaXRlOmhvdmVye2NvbG9yOnZhcigtLWNvbG9yLXdoaXRlKX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDp0ZXh0LXdoaXRlXC84NTpob3Zlcntjb2xvcjojZmZmZmZmZDl9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOnRleHQtd2hpdGVcLzg1OmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4NSUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDp0ZXh0LXdoaXRlXC85MDpob3Zlcntjb2xvcjojZmZmZmZmZTZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOnRleHQtd2hpdGVcLzkwOmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk5MCUsdHJhbnNwYXJlbnQpfX19LmZvY3VzXDpib3JkZXItXFtyZ2JhXCgyNTVcLDI1NVwsMjU1XCwwXC4yNFwpXF06Zm9jdXN7Ym9yZGVyLWNvbG9yOiNmZmZmZmYzZH0uZm9jdXNcOmJnLXdoaXRlXC9cWzBcLjA4XF06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMTR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZm9jdXNcOmJnLXdoaXRlXC9cWzBcLjA4XF06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOCUsdHJhbnNwYXJlbnQpfX0uZm9jdXNcOm91dGxpbmUtbm9uZTpmb2N1c3stLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9LmZvY3VzLXZpc2libGVcOmJnLXdoaXRlXC84OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMTR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZm9jdXMtdmlzaWJsZVw6Ymctd2hpdGVcLzg6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4JSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvcGFjaXR5LTEwMDpmb2N1cy12aXNpYmxle29wYWNpdHk6MX0uZm9jdXMtdmlzaWJsZVw6XFtvdXRsaW5lXDoxXC41cHhfc29saWRfcmdiYVwoMTBcLDEzMlwsMjU1XCwwXC41NVwpXF06Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjEuNXB4IHNvbGlkICMwYTg0ZmY4Y30uZm9jdXMtdmlzaWJsZVw6b3V0bGluZTpmb2N1cy12aXNpYmxle291dGxpbmUtc3R5bGU6dmFyKC0tdHctb3V0bGluZS1zdHlsZSk7b3V0bGluZS13aWR0aDoxcHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtMjpmb2N1cy12aXNpYmxle291dGxpbmUtc3R5bGU6dmFyKC0tdHctb3V0bGluZS1zdHlsZSk7b3V0bGluZS13aWR0aDoycHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtb2Zmc2V0LTI6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDoycHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtb2Zmc2V0LTQ6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDo0cHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtd2hpdGVcLzYwOmZvY3VzLXZpc2libGV7b3V0bGluZS1jb2xvcjojZmZmOX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXdoaXRlXC82MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTYwJSx0cmFuc3BhcmVudCl9fS5hY3RpdmVcOnNjYWxlLVxbMFwuOTdcXTphY3RpdmV7c2NhbGU6Ljk3fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5lbmFibGVkXDpob3Zlclw6Ym9yZGVyLVxbcmdiYVwoMjU1XCwyNTVcLDI1NVwsMFwuMThcKVxdOmVuYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmZmZmYyZX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDpib3JkZXItd2hpdGVcLzIwOmVuYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmYzfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmVuYWJsZWRcOmhvdmVyXDpib3JkZXItd2hpdGVcLzIwOmVuYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkyMCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDpib3JkZXItd2hpdGVcL1xbMFwuODhcXTplbmFibGVkOmhvdmVye2JvcmRlci1jb2xvcjojZmZmZmZmZTB9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZW5hYmxlZFw6aG92ZXJcOmJvcmRlci13aGl0ZVwvXFswXC44OFxdOmVuYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4OCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDpiZy1cW1wjMmEyYTJjXF06ZW5hYmxlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMyYTJhMmN9fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5lbmFibGVkXDpob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDZcXTplbmFibGVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjBmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmVuYWJsZWRcOmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wNlxdOmVuYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNiUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wOVxdOmVuYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMTd9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZW5hYmxlZFw6aG92ZXJcOmJnLXdoaXRlXC9cWzBcLjA5XF06ZW5hYmxlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk5JSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZW5hYmxlZFw6aG92ZXJcOmJnLXdoaXRlXC9cWzBcLjIyXF06ZW5hYmxlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYzOH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5lbmFibGVkXDpob3Zlclw6Ymctd2hpdGVcL1xbMFwuMjJcXTplbmFibGVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTIyJSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZW5hYmxlZFw6aG92ZXJcOmJnLXdoaXRlXC9cWzBcLjg4XF06ZW5hYmxlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmZlMH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5lbmFibGVkXDpob3Zlclw6Ymctd2hpdGVcL1xbMFwuODhcXTplbmFibGVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTg4JSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZW5hYmxlZFw6aG92ZXJcOnRleHQtXFtcIzBhMGEwY1xdOmVuYWJsZWQ6aG92ZXJ7Y29sb3I6IzBhMGEwY319QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDp0ZXh0LXdoaXRlOmVuYWJsZWQ6aG92ZXJ7Y29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZW5hYmxlZFw6aG92ZXJcOmJyaWdodG5lc3MtXFsxXC4wOFxdOmVuYWJsZWQ6aG92ZXJ7LS10dy1icmlnaHRuZXNzOmJyaWdodG5lc3MoMS4wOCk7ZmlsdGVyOnZhcigtLXR3LWJsdXIsKXZhcigtLXR3LWJyaWdodG5lc3MsKXZhcigtLXR3LWNvbnRyYXN0LCl2YXIoLS10dy1ncmF5c2NhbGUsKXZhcigtLXR3LWh1ZS1yb3RhdGUsKXZhcigtLXR3LWludmVydCwpdmFyKC0tdHctc2F0dXJhdGUsKXZhcigtLXR3LXNlcGlhLCl2YXIoLS10dy1kcm9wLXNoYWRvdywpfX0uZGlzYWJsZWRcOmN1cnNvci1kZWZhdWx0OmRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5kaXNhYmxlZFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZGlzYWJsZWRcOnRleHQtd2hpdGVcLzQwOmRpc2FibGVke2NvbG9yOiNmZmY2fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRpc2FibGVkXDp0ZXh0LXdoaXRlXC80MDpkaXNhYmxlZHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNDAlLHRyYW5zcGFyZW50KX19LmRpc2FibGVkXDpvcGFjaXR5LTQwOmRpc2FibGVke29wYWNpdHk6LjR9LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9QG1lZGlhIChtYXgtd2lkdGg6ODk5Ljk5OXB4KXsubWF4LVxbOTAwcHhcXVw6aGlkZGVue2Rpc3BsYXk6bm9uZX19LlxbXCZcOlw6LW1vei1yYW5nZS1wcm9ncmVzc1xdXDpoLVxbNHB4XF06Oi1tb3otcmFuZ2UtcHJvZ3Jlc3N7aGVpZ2h0OjRweH0uXFtcJlw6XDotbW96LXJhbmdlLXByb2dyZXNzXF1cOnJvdW5kZWQtZnVsbDo6LW1vei1yYW5nZS1wcm9ncmVzc3tib3JkZXItcmFkaXVzOjMuNDAyODJlMzhweH0uXFtcJlw6XDotbW96LXJhbmdlLXByb2dyZXNzXF1cOmJnLVxbdmFyXCgtLXNsaWRlci1maWxsLWNvbG9yXClcXTo6LW1vei1yYW5nZS1wcm9ncmVzc3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXNsaWRlci1maWxsLWNvbG9yKX0uXFtcJlw6XDotbW96LXJhbmdlLXRodW1iXF1cOnNpemUtXFsxM3B4XF06Oi1tb3otcmFuZ2UtdGh1bWJ7d2lkdGg6MTNweDtoZWlnaHQ6MTNweH0uXFtcJlw6XDotbW96LXJhbmdlLXRodW1iXF1cOnJvdW5kZWQtZnVsbDo6LW1vei1yYW5nZS10aHVtYntib3JkZXItcmFkaXVzOjMuNDAyODJlMzhweH0uXFtcJlw6XDotbW96LXJhbmdlLXRodW1iXF1cOmJvcmRlci1ub25lOjotbW96LXJhbmdlLXRodW1iey0tdHctYm9yZGVyLXN0eWxlOm5vbmU7Ym9yZGVyLXN0eWxlOm5vbmV9LlxbXCZcOlw6LW1vei1yYW5nZS10aHVtYlxdXDpiZy13aGl0ZTo6LW1vei1yYW5nZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXdoaXRlKX0uXFtcJlw6XDotbW96LXJhbmdlLXRyYWNrXF1cOmgtXFs0cHhcXTo6LW1vei1yYW5nZS10cmFja3toZWlnaHQ6NHB4fS5cW1wmXDpcOi1tb3otcmFuZ2UtdHJhY2tcXVw6cm91bmRlZC1mdWxsOjotbW96LXJhbmdlLXRyYWNre2JvcmRlci1yYWRpdXM6My40MDI4MmUzOHB4fS5cW1wmXDpcOi1tb3otcmFuZ2UtdHJhY2tcXVw6Ymctd2hpdGVcLzIwOjotbW96LXJhbmdlLXRyYWNre2JhY2tncm91bmQtY29sb3I6I2ZmZjN9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuXFtcJlw6XDotbW96LXJhbmdlLXRyYWNrXF1cOmJnLXdoaXRlXC8yMDo6LW1vei1yYW5nZS10cmFja3tiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkyMCUsdHJhbnNwYXJlbnQpfX0uXFtcJlw6XDotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja1xdXDpoLVxbNHB4XF06Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNre2hlaWdodDo0cHh9LlxbXCZcOlw6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2tcXVw6cm91bmRlZC1mdWxsOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja3tib3JkZXItcmFkaXVzOjMuNDAyODJlMzhweH0uXFtcJlw6XDotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja1xdXDpcW2JhY2tncm91bmRcOmxpbmVhci1ncmFkaWVudFwodG9fcmlnaHRcLHZhclwoLS1zbGlkZXItZmlsbC1jb2xvclwpX3ZhclwoLS1zbGlkZXItZmlsbFwpXCxyZ2JhXCgyNTVcLDI1NVwsMjU1XCwwXC4yMlwpX3ZhclwoLS1zbGlkZXItZmlsbFwpXClcXTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2t7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsdmFyKC0tc2xpZGVyLWZpbGwtY29sb3IpdmFyKC0tc2xpZGVyLWZpbGwpLCNmZmZmZmYzOCB2YXIoLS1zbGlkZXItZmlsbCkpfS5cW1wmXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOi1tdC1cWzRcLjVweFxdOjotd2Via2l0LXNsaWRlci10aHVtYnttYXJnaW4tdG9wOi00LjVweH0uXFtcJlw6XDotd2Via2l0LXNsaWRlci10aHVtYlxdXDpzaXplLVxbMTNweFxdOjotd2Via2l0LXNsaWRlci10aHVtYnt3aWR0aDoxM3B4O2hlaWdodDoxM3B4fS5cW1wmXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOmFwcGVhcmFuY2Utbm9uZTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7YXBwZWFyYW5jZTpub25lfS5cW1wmXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOnJvdW5kZWQtZnVsbDo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXJhZGl1czozLjQwMjgyZTM4cHh9LlxbXCZcOlw6LXdlYmtpdC1zbGlkZXItdGh1bWJcXVw6Ymctd2hpdGU6Oi13ZWJraXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5cW1wmXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOnNoYWRvdy1cWzBfMXB4XzNweF9yZ2JhXCgwXCwwXCwwXCwwXC40NVwpXF06Oi13ZWJraXQtc2xpZGVyLXRodW1iey0tdHctc2hhZG93OjAgMXB4IDNweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDczKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LlxbXCZcOmRpc2FibGVkXDpcOi1tb3otcmFuZ2UtdGh1bWJcXVw6Ymctd2hpdGVcLzUwOmRpc2FibGVkOjotbW96LXJhbmdlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjgwfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LlxbXCZcOmRpc2FibGVkXDpcOi1tb3otcmFuZ2UtdGh1bWJcXVw6Ymctd2hpdGVcLzUwOmRpc2FibGVkOjotbW96LXJhbmdlLXRodW1ie2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTUwJSx0cmFuc3BhcmVudCl9fS5cW1wmXDpkaXNhYmxlZFw6XDotd2Via2l0LXNsaWRlci10aHVtYlxdXDpiZy13aGl0ZVwvNTA6ZGlzYWJsZWQ6Oi13ZWJraXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjgwfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LlxbXCZcOmRpc2FibGVkXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOmJnLXdoaXRlXC81MDpkaXNhYmxlZDo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNTAlLHRyYW5zcGFyZW50KX19fTpyb290ey0tYnVuY3NzLWxpZ2h0OiA7LS1idW5jc3MtZGFyazppbml0aWFsO2NvbG9yLXNjaGVtZTpkYXJrOy0tc2VydmUtc2ltLXBhbmVsLWJnOiMxODE4MTg7LS1zZXJ2ZS1zaW0tcGFuZWwtYmctdHJhbnNsdWNlbnQ6IzE4MTgxOGM3Oy0tc2VydmUtc2ltLXBhbmVsLWJnLXRyYW5zcGFyZW50OiMxODE4MTgwMH1Ac3VwcG9ydHMgKGludGVycG9sYXRlLXNpemU6IGFsbG93LWtleXdvcmRzKXs6cm9vdHtpbnRlcnBvbGF0ZS1zaXplOmFsbG93LWtleXdvcmRzfX1kZXRhaWxzLmxlbS1zZWN0aW9uOjpkZXRhaWxzLWNvbnRlbnR7b3ZlcmZsb3c6Y2xpcDt0cmFuc2l0aW9uOmhlaWdodCAuMjJzIGVhc2UsY29udGVudC12aXNpYmlsaXR5IC4yMnMgYWxsb3ctZGlzY3JldGU7aGVpZ2h0OjB9ZGV0YWlscy5sZW0tc2VjdGlvbltvcGVuXTo6ZGV0YWlscy1jb250ZW50e2hlaWdodDphdXRvfWRldGFpbHMubGVtLXNlY3Rpb24+c3VtbWFyeXtsaXN0LXN0eWxlOm5vbmV9ZGV0YWlscy5sZW0tc2VjdGlvbj5zdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2Vye2Rpc3BsYXk6bm9uZX1kZXRhaWxzLmxlbS1zZWN0aW9uPnN1bW1hcnk6aG92ZXJ7Y29sb3I6I2ZmZn1kZXRhaWxzLmxlbS1zZWN0aW9uPnN1bW1hcnk6aG92ZXIgLmxlbS1jaGV2cm9ue2NvbG9yOiNmZmZmZmZkOSFpbXBvcnRhbnR9LmxlbS1jaGV2cm9ue3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNnMsY29sb3IgLjEyc31AY29udGFpbmVyICh3aWR0aDw9MjEwcHgpe1tkYXRhLWxvY2F0aW9uLXN0YXR1cy10b3RhbF17ZGlzcGxheTpub25lfX1Aa2V5ZnJhbWVzIGdyaWQtc3Bpbnt0b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgc2VydmUtc2ltLXRvYXN0LWluZGV0ZXJtaW5hdGV7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgyNTAlKX19QGtleWZyYW1lcyBzZXJ2ZS1zaW0tdG9hc3QtcG9wLWluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMnB4KXNjYWxlKC45Nil9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApc2NhbGUoMSl9fUBrZXlmcmFtZXMgc2VydmUtc2ltLXRvYXN0LXBvcC1vdXR7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApc2NhbGUoMSl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDhweClzY2FsZSguOTYpfX0uc2VydmUtc2ltLXRvYXN0LWluZGV0ZXJtaW5hdGV7YW5pbWF0aW9uOnNlcnZlLXNpbS10b2FzdC1pbmRldGVybWluYXRlIDEuMXMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmdyaWQtc2h1dGRvd24tYnRue29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjEycyxiYWNrZ3JvdW5kIC4xMnMsY29sb3IgLjEyc30uZ3JpZC10aWxlOmhvdmVyIC5ncmlkLXNodXRkb3duLWJ0bntvcGFjaXR5OjF9LmdyaWQtc2h1dGRvd24tYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNWExZDFkO2JvcmRlci1jb2xvcjojYTMzfS5ncmlkLXRpbGU6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM1NTUhaW1wb3J0YW50fUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcm90YXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yb3RhdGUtentzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJvcmRlci1zdHlsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6c29saWR9QHByb3BlcnR5IC0tdHctbGVhZGluZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWZvbnQtd2VpZ2h0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctdHJhY2tpbmd7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1vcmRpbmFse3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2xhc2hlZC16ZXJve3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctbnVtZXJpYy1maWd1cmV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1udW1lcmljLXNwYWNpbmd7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1udW1lcmljLWZyYWN0aW9ue3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctc2hhZG93LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2hhZG93LWFscGhhe3N5bnRheDoiPHBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjEwMCV9QHByb3BlcnR5IC0tdHctaW5zZXQtc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctaW5zZXQtc2hhZG93LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW5zZXQtc2hhZG93LWFscGhhe3N5bnRheDoiPHBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjEwMCV9QHByb3BlcnR5IC0tdHctcmluZy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXJpbmctc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctaW5zZXQtcmluZy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXJpbmctc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctcmluZy1pbnNldHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LXdpZHRoe3N5bnRheDoiPGxlbmd0aD4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1yaW5nLW9mZnNldC1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6I2ZmZn1AcHJvcGVydHkgLS10dy1yaW5nLW9mZnNldC1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1vdXRsaW5lLXN0eWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTpzb2xpZH1AcHJvcGVydHkgLS10dy1ibHVye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYnJpZ2h0bmVzc3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWNvbnRyYXN0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZ3JheXNjYWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaHVlLXJvdGF0ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWludmVydHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zYXR1cmF0ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNlcGlhe3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvdy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93LWFscGhhe3N5bnRheDoiPHBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjEwMCV9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3ctc2l6ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWJsdXJ7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1icmlnaHRuZXNze3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtY29udHJhc3R7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1ncmF5c2NhbGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1odWUtcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtaW52ZXJ0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3Atb3BhY2l0eXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLXNhdHVyYXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3Atc2VwaWF7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kdXJhdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWVhc2V7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AbGF5ZXIgcHJvcGVydGllc3tAc3VwcG9ydHMgKCgtd2Via2l0LWh5cGhlbnM6IG5vbmUpIGFuZCAoIG5vdCAobWFyZ2luLXRyaW06IGlubGluZSkpKSBvciAoKC1tb3otb3JpZW50OiBpbmxpbmUpIGFuZCAoIG5vdCAoY29sb3I6cmdiKGZyb20gcmVkIHIgZyBiKSkpKXsqLDpiZWZvcmUsOmFmdGVyLDo6YmFja2Ryb3B7LS10dy10cmFuc2xhdGUteDowOy0tdHctdHJhbnNsYXRlLXk6MDstLXR3LXRyYW5zbGF0ZS16OjA7LS10dy1yb3RhdGUteDppbml0aWFsOy0tdHctcm90YXRlLXk6aW5pdGlhbDstLXR3LXJvdGF0ZS16OmluaXRpYWw7LS10dy1za2V3LXg6aW5pdGlhbDstLXR3LXNrZXcteTppbml0aWFsOy0tdHctYm9yZGVyLXN0eWxlOnNvbGlkOy0tdHctbGVhZGluZzppbml0aWFsOy0tdHctZm9udC13ZWlnaHQ6aW5pdGlhbDstLXR3LXRyYWNraW5nOmluaXRpYWw7LS10dy1vcmRpbmFsOmluaXRpYWw7LS10dy1zbGFzaGVkLXplcm86aW5pdGlhbDstLXR3LW51bWVyaWMtZmlndXJlOmluaXRpYWw7LS10dy1udW1lcmljLXNwYWNpbmc6aW5pdGlhbDstLXR3LW51bWVyaWMtZnJhY3Rpb246aW5pdGlhbDstLXR3LXNoYWRvdzowIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LXNoYWRvdy1hbHBoYToxMDAlOy0tdHctaW5zZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LWluc2V0LXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctaW5zZXQtc2hhZG93LWFscGhhOjEwMCU7LS10dy1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1pbnNldC1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1pbnNldC1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1yaW5nLWluc2V0OmluaXRpYWw7LS10dy1yaW5nLW9mZnNldC13aWR0aDowcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LW91dGxpbmUtc3R5bGU6c29saWQ7LS10dy1ibHVyOmluaXRpYWw7LS10dy1icmlnaHRuZXNzOmluaXRpYWw7LS10dy1jb250cmFzdDppbml0aWFsOy0tdHctZ3JheXNjYWxlOmluaXRpYWw7LS10dy1odWUtcm90YXRlOmluaXRpYWw7LS10dy1pbnZlcnQ6aW5pdGlhbDstLXR3LW9wYWNpdHk6aW5pdGlhbDstLXR3LXNhdHVyYXRlOmluaXRpYWw7LS10dy1zZXBpYTppbml0aWFsOy0tdHctZHJvcC1zaGFkb3c6aW5pdGlhbDstLXR3LWRyb3Atc2hhZG93LWNvbG9yOmluaXRpYWw7LS10dy1kcm9wLXNoYWRvdy1hbHBoYToxMDAlOy0tdHctZHJvcC1zaGFkb3ctc2l6ZTppbml0aWFsOy0tdHctYmFja2Ryb3AtYmx1cjppbml0aWFsOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczppbml0aWFsOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTppbml0aWFsOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTppbml0aWFsOy0tdHctYmFja2Ryb3AtaW52ZXJ0OmluaXRpYWw7LS10dy1iYWNrZHJvcC1vcGFjaXR5OmluaXRpYWw7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTppbml0aWFsOy0tdHctYmFja2Ryb3Atc2VwaWE6aW5pdGlhbDstLXR3LWR1cmF0aW9uOmluaXRpYWw7LS10dy1lYXNlOmluaXRpYWx9fX0KPC9zdHlsZT4KPC9oZWFkPjxib2R5Pgo8ZGl2IGlkPSJyb290Ij48L2Rpdj4KPCEtLV9fU0lNX1BSRVZJRVdfQ09ORklHX18tLT4KPHNjcmlwdCB0eXBlPSJtb2R1bGUiPnZhciBBMixzLEg4LEo3LGgwLEw4LEM4LEY4LG41LFg1LE0yLGs4LEozLHM1LHQ1LE04LEs1PXt9LFk1PVtdLFE3PS9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2ksVzI9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiB3MCgkLEope2Zvcih2YXIgUSBpbiBKKSRbUV09SltRXTtyZXR1cm4gJH1mdW5jdGlvbiBRMygkKXskJiYkLnBhcmVudE5vZGUmJiQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCgkKX1mdW5jdGlvbiB1MSgkLEosUSl7dmFyIFosSyxZLHE9e307Zm9yKFkgaW4gSilZPT0ia2V5Ij9aPUpbWV06WT09InJlZiI/Sz1KW1ldOnFbWV09SltZXTtpZihhcmd1bWVudHMubGVuZ3RoPjImJihxLmNoaWxkcmVuPWFyZ3VtZW50cy5sZW5ndGg+Mz9BMi5jYWxsKGFyZ3VtZW50cywyKTpRKSx0eXBlb2YgJD09ImZ1bmN0aW9uIiYmJC5kZWZhdWx0UHJvcHMhPW51bGwpZm9yKFkgaW4gJC5kZWZhdWx0UHJvcHMpcVtZXT09PXZvaWQgMCYmKHFbWV09JC5kZWZhdWx0UHJvcHNbWV0pO3JldHVybiBPMigkLHEsWixLLG51bGwpfWZ1bmN0aW9uIE8yKCQsSixRLFosSyl7dmFyIFk9e3R5cGU6JCxwcm9wczpKLGtleTpRLHJlZjpaLF9fazpudWxsLF9fOm51bGwsX19iOjAsX19lOm51bGwsX19jOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjpLPT1udWxsPysrSDg6SyxfX2k6LTEsX191OjB9O3JldHVybiBLPT1udWxsJiZzLnZub2RlIT1udWxsJiZzLnZub2RlKFkpLFl9ZnVuY3Rpb24gXzIoKXtyZXR1cm57Y3VycmVudDpudWxsfX1mdW5jdGlvbiBaMSgkKXtyZXR1cm4gJC5jaGlsZHJlbn1mdW5jdGlvbiBvMSgkLEope3RoaXMucHJvcHM9JCx0aGlzLmNvbnRleHQ9Sn1mdW5jdGlvbiBlMCgkLEope2lmKEo9PW51bGwpcmV0dXJuICQuX18/ZTAoJC5fXywkLl9faSsxKTpudWxsO2Zvcih2YXIgUTtKPCQuX19rLmxlbmd0aDtKKyspaWYoKFE9JC5fX2tbSl0pIT1udWxsJiZRLl9fZSE9bnVsbClyZXR1cm4gUS5fX2U7cmV0dXJuIHR5cGVvZiAkLnR5cGU9PSJmdW5jdGlvbiI/ZTAoJCk6bnVsbH1mdW5jdGlvbiBaNygkKXtpZigkLl9fUCYmJC5fX2Qpe3ZhciBKPSQuX192LFE9Si5fX2UsWj1bXSxLPVtdLFk9dzAoe30sSik7WS5fX3Y9Si5fX3YrMSxzLnZub2RlJiZzLnZub2RlKFkpLFozKCQuX19QLFksSiwkLl9fbiwkLl9fUC5uYW1lc3BhY2VVUkksMzImSi5fX3U/W1FdOm51bGwsWixRPT1udWxsP2UwKEopOlEsISEoMzImSi5fX3UpLEspLFkuX192PUouX192LFkuX18uX19rW1kuX19pXT1ZLF84KFosWSxLKSxKLl9fZT1KLl9fPW51bGwsWS5fX2UhPVEmJk84KFkpfX1mdW5jdGlvbiBPOCgkKXtpZigoJD0kLl9fKSE9bnVsbCYmJC5fX2MhPW51bGwpcmV0dXJuICQuX19lPSQuX19jLmJhc2U9bnVsbCwkLl9fay5zb21lKGZ1bmN0aW9uKEope2lmKEohPW51bGwmJkouX19lIT1udWxsKXJldHVybiAkLl9fZT0kLl9fYy5iYXNlPUouX19lfSksTzgoJCl9ZnVuY3Rpb24gZTUoJCl7KCEkLl9fZCYmKCQuX19kPSEwKSYmaDAucHVzaCgkKSYmIXE1Ll9fcisrfHxMOCE9cy5kZWJvdW5jZVJlbmRlcmluZykmJigoTDg9cy5kZWJvdW5jZVJlbmRlcmluZyl8fEM4KShxNSl9ZnVuY3Rpb24gcTUoKXt0cnl7Zm9yKHZhciAkLEo9MTtoMC5sZW5ndGg7KWgwLmxlbmd0aD5KJiZoMC5zb3J0KEY4KSwkPWgwLnNoaWZ0KCksSj1oMC5sZW5ndGgsWjcoJCl9ZmluYWxseXtoMC5sZW5ndGg9cTUuX19yPTB9fWZ1bmN0aW9uIEE4KCQsSixRLFosSyxZLHEsRyxOLEIsTCl7dmFyIFYsVSx6LGssSCxDLEYsTz1aJiZaLl9fa3x8WTUsST1KLmxlbmd0aDtmb3IoTj1YNyhRLEosTyxOLEkpLFY9MDtWPEk7VisrKSh6PVEuX19rW1ZdKSE9bnVsbCYmKFU9ei5fX2khPS0xJiZPW3ouX19pXXx8SzUsei5fX2k9VixDPVozKCQseixVLEssWSxxLEcsTixCLEwpLGs9ei5fX2Usei5yZWYmJlUucmVmIT16LnJlZiYmKFUucmVmJiZYMyhVLnJlZixudWxsLHopLEwucHVzaCh6LnJlZix6Ll9fY3x8ayx6KSksSD09bnVsbCYmayE9bnVsbCYmKEg9ayksKEY9ISEoNCZ6Ll9fdSkpfHxVLl9faz09PXouX19rPyhOPVc4KHosTiwkLEYpLEYmJlUuX19lJiYoVS5fX2U9bnVsbCkpOnR5cGVvZiB6LnR5cGU9PSJmdW5jdGlvbiImJkMhPT12b2lkIDA/Tj1DOmsmJihOPWsubmV4dFNpYmxpbmcpLHouX191Jj0tNyk7cmV0dXJuIFEuX19lPUgsTn1mdW5jdGlvbiBYNygkLEosUSxaLEspe3ZhciBZLHEsRyxOLEIsTD1RLmxlbmd0aCxWPUwsVT0wO2ZvcigkLl9faz1BcnJheShLKSxZPTA7WTxLO1krKykocT1KW1ldKSE9bnVsbCYmdHlwZW9mIHEhPSJib29sZWFuIiYmdHlwZW9mIHEhPSJmdW5jdGlvbiI/KHR5cGVvZiBxPT0ic3RyaW5nInx8dHlwZW9mIHE9PSJudW1iZXIifHx0eXBlb2YgcT09ImJpZ2ludCJ8fHEuY29uc3RydWN0b3I9PVN0cmluZz9xPSQuX19rW1ldPU8yKG51bGwscSxudWxsLG51bGwsbnVsbCk6VzIocSk/cT0kLl9fa1tZXT1PMihaMSx7Y2hpbGRyZW46cX0sbnVsbCxudWxsLG51bGwpOnEuY29uc3RydWN0b3I9PT12b2lkIDAmJnEuX19iPjA/cT0kLl9fa1tZXT1PMihxLnR5cGUscS5wcm9wcyxxLmtleSxxLnJlZj9xLnJlZjpudWxsLHEuX192KTokLl9fa1tZXT1xLE49WStVLHEuX189JCxxLl9fYj0kLl9fYisxLEc9bnVsbCwoQj1xLl9faT1LNyhxLFEsTixWKSkhPS0xJiYoVi0tLChHPVFbQl0pJiYoRy5fX3V8PTIpKSxHPT1udWxsfHxHLl9fdj09bnVsbD8oQj09LTEmJihLPkw/VS0tOks8TCYmVSsrKSx0eXBlb2YgcS50eXBlIT0iZnVuY3Rpb24iJiYocS5fX3V8PTQpKTpCIT1OJiYoQj09Ti0xP1UtLTpCPT1OKzE/VSsrOihCPk4/VS0tOlUrKyxxLl9fdXw9NCkpKTokLl9fa1tZXT1udWxsO2lmKFYpZm9yKFk9MDtZPEw7WSsrKShHPVFbWV0pIT1udWxsJiYoMiZHLl9fdSk9PTAmJihHLl9fZT09WiYmKFo9ZTAoRykpLEQ4KEcsRykpO3JldHVybiBafWZ1bmN0aW9uIFc4KCQsSixRLFope3ZhciBLLFk7aWYodHlwZW9mICQudHlwZT09ImZ1bmN0aW9uIil7Zm9yKEs9JC5fX2ssWT0wO0smJlk8Sy5sZW5ndGg7WSsrKUtbWV0mJihLW1ldLl9fPSQsSj1XOChLW1ldLEosUSxaKSk7cmV0dXJuIEp9JC5fX2UhPUomJihaJiYoSiYmJC50eXBlJiYhSi5wYXJlbnROb2RlJiYoSj1lMCgkKSksUS5pbnNlcnRCZWZvcmUoJC5fX2UsSnx8bnVsbCkpLEo9JC5fX2UpO2RvIEo9SiYmSi5uZXh0U2libGluZzt3aGlsZShKIT1udWxsJiZKLm5vZGVUeXBlPT04KTtyZXR1cm4gSn1mdW5jdGlvbiBYMCgkLEope3JldHVybiBKPUp8fFtdLCQ9PW51bGx8fHR5cGVvZiAkPT0iYm9vbGVhbiJ8fChXMigkKT8kLnNvbWUoZnVuY3Rpb24oUSl7WDAoUSxKKX0pOkoucHVzaCgkKSksSn1mdW5jdGlvbiBLNygkLEosUSxaKXt2YXIgSyxZLHEsRz0kLmtleSxOPSQudHlwZSxCPUpbUV0sTD1CIT1udWxsJiYoMiZCLl9fdSk9PTA7aWYoQj09PW51bGwmJkc9PW51bGx8fEwmJkc9PUIua2V5JiZOPT1CLnR5cGUpcmV0dXJuIFE7aWYoWj4oTD8xOjApKXtmb3IoSz1RLTEsWT1RKzE7Sz49MHx8WTxKLmxlbmd0aDspaWYoKEI9SltxPUs+PTA/Sy0tOlkrK10pIT1udWxsJiYoMiZCLl9fdSk9PTAmJkc9PUIua2V5JiZOPT1CLnR5cGUpcmV0dXJuIHF9cmV0dXJuLTF9ZnVuY3Rpb24gejgoJCxKLFEpe0pbMF09PSItIj8kLnNldFByb3BlcnR5KEosUT09bnVsbD8iIjpRKTokW0pdPVE9PW51bGw/IiI6dHlwZW9mIFEhPSJudW1iZXIifHxRNy50ZXN0KEopP1E6USsicHgifWZ1bmN0aW9uIFo1KCQsSixRLFosSyl7dmFyIFkscTskOmlmKEo9PSJzdHlsZSIpaWYodHlwZW9mIFE9PSJzdHJpbmciKSQuc3R5bGUuY3NzVGV4dD1RO2Vsc2V7aWYodHlwZW9mIFo9PSJzdHJpbmciJiYoJC5zdHlsZS5jc3NUZXh0PVo9IiIpLFopZm9yKEogaW4gWilRJiZKIGluIFF8fHo4KCQuc3R5bGUsSiwiIik7aWYoUSlmb3IoSiBpbiBRKVomJlFbSl09PVpbSl18fHo4KCQuc3R5bGUsSixRW0pdKX1lbHNlIGlmKEpbMF09PSJvIiYmSlsxXT09Im4iKVk9SiE9KEo9Si5yZXBsYWNlKGs4LCIkMSIpKSxxPUoudG9Mb3dlckNhc2UoKSxKPXEgaW4gJHx8Sj09Im9uRm9jdXNPdXQifHxKPT0ib25Gb2N1c0luIj9xLnNsaWNlKDIpOkouc2xpY2UoMiksJC5sfHwoJC5sPXt9KSwkLmxbSitZXT1RLFE/Wj9RW00yXT1aW00yXTooUVtNMl09SjMsJC5hZGRFdmVudExpc3RlbmVyKEosWT90NTpzNSxZKSk6JC5yZW1vdmVFdmVudExpc3RlbmVyKEosWT90NTpzNSxZKTtlbHNle2lmKEs9PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIpSj1KLnJlcGxhY2UoL3hsaW5rKEh8OmgpLywiaCIpLnJlcGxhY2UoL3NOYW1lJC8sInMiKTtlbHNlIGlmKEohPSJ3aWR0aCImJkohPSJoZWlnaHQiJiZKIT0iaHJlZiImJkohPSJsaXN0IiYmSiE9ImZvcm0iJiZKIT0idGFiSW5kZXgiJiZKIT0iZG93bmxvYWQiJiZKIT0icm93U3BhbiImJkohPSJjb2xTcGFuIiYmSiE9InJvbGUiJiZKIT0icG9wb3ZlciImJkogaW4gJCl0cnl7JFtKXT1RPT1udWxsPyIiOlE7YnJlYWsgJH1jYXRjaChHKXt9dHlwZW9mIFE9PSJmdW5jdGlvbiJ8fChRPT1udWxsfHxRPT09ITEmJkpbNF0hPSItIj8kLnJlbW92ZUF0dHJpYnV0ZShKKTokLnNldEF0dHJpYnV0ZShKLEo9PSJwb3BvdmVyIiYmUT09MT8iIjpRKSl9fWZ1bmN0aW9uIFU4KCQpe3JldHVybiBmdW5jdGlvbihKKXtpZih0aGlzLmwpe3ZhciBRPXRoaXMubFtKLnR5cGUrJF07aWYoSltYNV09PW51bGwpSltYNV09SjMrKztlbHNlIGlmKEpbWDVdPFFbTTJdKXJldHVybjtyZXR1cm4gUShzLmV2ZW50P3MuZXZlbnQoSik6Sil9fX1mdW5jdGlvbiBaMygkLEosUSxaLEssWSxxLEcsTixCKXt2YXIgTCxWLFUseixrLEgsQyxGLE8sSSx3LFMsaiwkMSxtLGM9Si50eXBlO2lmKEouY29uc3RydWN0b3IhPT12b2lkIDApcmV0dXJuIG51bGw7MTI4JlEuX191JiYoTj0hISgzMiZRLl9fdSksWT1bRz1KLl9fZT1RLl9fZV0pLChMPXMuX19iKSYmTChKKTskOmlmKHR5cGVvZiBjPT0iZnVuY3Rpb24iKXRyeXtpZihGPUoucHJvcHMsTz1jLnByb3RvdHlwZSYmYy5wcm90b3R5cGUucmVuZGVyLEk9KEw9Yy5jb250ZXh0VHlwZSkmJlpbTC5fX2NdLHc9TD9JP0kucHJvcHMudmFsdWU6TC5fXzpaLFEuX19jP0M9KFY9Si5fX2M9US5fX2MpLl9fPVYuX19FOihPP0ouX19jPVY9bmV3IGMoRix3KTooSi5fX2M9Vj1uZXcgbzEoRix3KSxWLmNvbnN0cnVjdG9yPWMsVi5yZW5kZXI9cTcpLEkmJkkuc3ViKFYpLFYuc3RhdGV8fChWLnN0YXRlPXt9KSxWLl9fbj1aLFU9Vi5fX2Q9ITAsVi5fX2g9W10sVi5fc2I9W10pLE8mJlYuX19zPT1udWxsJiYoVi5fX3M9Vi5zdGF0ZSksTyYmYy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMhPW51bGwmJihWLl9fcz09Vi5zdGF0ZSYmKFYuX19zPXcwKHt9LFYuX19zKSksdzAoVi5fX3MsYy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoRixWLl9fcykpKSx6PVYucHJvcHMsaz1WLnN0YXRlLFYuX192PUosVSlPJiZjLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz09bnVsbCYmVi5jb21wb25lbnRXaWxsTW91bnQhPW51bGwmJlYuY29tcG9uZW50V2lsbE1vdW50KCksTyYmVi5jb21wb25lbnREaWRNb3VudCE9bnVsbCYmVi5fX2gucHVzaChWLmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKE8mJmMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT1udWxsJiZGIT09eiYmVi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT1udWxsJiZWLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoRix3KSxKLl9fdj09US5fX3Z8fCFWLl9fZSYmVi5zaG91bGRDb21wb25lbnRVcGRhdGUhPW51bGwmJlYuc2hvdWxkQ29tcG9uZW50VXBkYXRlKEYsVi5fX3Msdyk9PT0hMSl7Si5fX3YhPVEuX192JiYoVi5wcm9wcz1GLFYuc3RhdGU9Vi5fX3MsVi5fX2Q9ITEpLEouX19lPVEuX19lLEouX19rPVEuX19rLEouX19rLnNvbWUoZnVuY3Rpb24obil7biYmKG4uX189Sil9KSxZNS5wdXNoLmFwcGx5KFYuX19oLFYuX3NiKSxWLl9zYj1bXSxWLl9faC5sZW5ndGgmJnEucHVzaChWKTticmVhayAkfVYuY29tcG9uZW50V2lsbFVwZGF0ZSE9bnVsbCYmVi5jb21wb25lbnRXaWxsVXBkYXRlKEYsVi5fX3MsdyksTyYmVi5jb21wb25lbnREaWRVcGRhdGUhPW51bGwmJlYuX19oLnB1c2goZnVuY3Rpb24oKXtWLmNvbXBvbmVudERpZFVwZGF0ZSh6LGssSCl9KX1pZihWLmNvbnRleHQ9dyxWLnByb3BzPUYsVi5fX1A9JCxWLl9fZT0hMSxTPXMuX19yLGo9MCxPKVYuc3RhdGU9Vi5fX3MsVi5fX2Q9ITEsUyYmUyhKKSxMPVYucmVuZGVyKFYucHJvcHMsVi5zdGF0ZSxWLmNvbnRleHQpLFk1LnB1c2guYXBwbHkoVi5fX2gsVi5fc2IpLFYuX3NiPVtdO2Vsc2UgZG8gVi5fX2Q9ITEsUyYmUyhKKSxMPVYucmVuZGVyKFYucHJvcHMsVi5zdGF0ZSxWLmNvbnRleHQpLFYuc3RhdGU9Vi5fX3M7d2hpbGUoVi5fX2QmJisrajwyNSk7Vi5zdGF0ZT1WLl9fcyxWLmdldENoaWxkQ29udGV4dCE9bnVsbCYmKFo9dzAodzAoe30sWiksVi5nZXRDaGlsZENvbnRleHQoKSkpLE8mJiFVJiZWLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIT1udWxsJiYoSD1WLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHosaykpLCQxPUwhPW51bGwmJkwudHlwZT09PVoxJiZMLmtleT09bnVsbD9QOChMLnByb3BzLmNoaWxkcmVuKTpMLEc9QTgoJCxXMigkMSk/JDE6WyQxXSxKLFEsWixLLFkscSxHLE4sQiksVi5iYXNlPUouX19lLEouX191Jj0tMTYxLFYuX19oLmxlbmd0aCYmcS5wdXNoKFYpLEMmJihWLl9fRT1WLl9fPW51bGwpfWNhdGNoKG4pe2lmKEouX192PW51bGwsTnx8WSE9bnVsbClpZihuLnRoZW4pe2ZvcihKLl9fdXw9Tj8xNjA6MTI4O0cmJkcubm9kZVR5cGU9PTgmJkcubmV4dFNpYmxpbmc7KUc9Ry5uZXh0U2libGluZztZW1kuaW5kZXhPZihHKV09bnVsbCxKLl9fZT1HfWVsc2V7Zm9yKG09WS5sZW5ndGg7bS0tOylRMyhZW21dKTskMyhKKX1lbHNlIEouX19lPVEuX19lLEouX19rPVEuX19rLG4udGhlbnx8JDMoSik7cy5fX2UobixKLFEpfWVsc2UgWT09bnVsbCYmSi5fX3Y9PVEuX192PyhKLl9faz1RLl9fayxKLl9fZT1RLl9fZSk6Rz1KLl9fZT1ZNyhRLl9fZSxKLFEsWixLLFkscSxOLEIpO3JldHVybihMPXMuZGlmZmVkKSYmTChKKSwxMjgmSi5fX3U/dm9pZCAwOkd9ZnVuY3Rpb24gJDMoJCl7JCYmKCQuX19jJiYoJC5fX2MuX19lPSEwKSwkLl9fayYmJC5fX2suc29tZSgkMykpfWZ1bmN0aW9uIF84KCQsSixRKXtmb3IodmFyIFo9MDtaPFEubGVuZ3RoO1orKylYMyhRW1pdLFFbKytaXSxRWysrWl0pO3MuX19jJiZzLl9fYyhKLCQpLCQuc29tZShmdW5jdGlvbihLKXt0cnl7JD1LLl9faCxLLl9faD1bXSwkLnNvbWUoZnVuY3Rpb24oWSl7WS5jYWxsKEspfSl9Y2F0Y2goWSl7cy5fX2UoWSxLLl9fdil9fSl9ZnVuY3Rpb24gUDgoJCl7cmV0dXJuIHR5cGVvZiAkIT0ib2JqZWN0Inx8JD09bnVsbHx8JC5fX2I+MD8kOlcyKCQpPyQubWFwKFA4KTp3MCh7fSwkKX1mdW5jdGlvbiBZNygkLEosUSxaLEssWSxxLEcsTil7dmFyIEIsTCxWLFUseixrLEgsQz1RLnByb3BzfHxLNSxGPUoucHJvcHMsTz1KLnR5cGU7aWYoTz09InN2ZyI/Sz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOk89PSJtYXRoIj9LPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIjpLfHwoSz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpLFkhPW51bGwpe2ZvcihCPTA7QjxZLmxlbmd0aDtCKyspaWYoKHo9WVtCXSkmJiJzZXRBdHRyaWJ1dGUiaW4gej09ISFPJiYoTz96LmxvY2FsTmFtZT09Tzp6Lm5vZGVUeXBlPT0zKSl7JD16LFlbQl09bnVsbDticmVha319aWYoJD09bnVsbCl7aWYoTz09bnVsbClyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoRik7JD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoSyxPLEYuaXMmJkYpLEcmJihzLl9fbSYmcy5fX20oSixZKSxHPSExKSxZPW51bGx9aWYoTz09bnVsbClDPT09Rnx8RyYmJC5kYXRhPT1GfHwoJC5kYXRhPUYpO2Vsc2V7aWYoWT1ZJiZBMi5jYWxsKCQuY2hpbGROb2RlcyksIUcmJlkhPW51bGwpZm9yKEM9e30sQj0wO0I8JC5hdHRyaWJ1dGVzLmxlbmd0aDtCKyspQ1soej0kLmF0dHJpYnV0ZXNbQl0pLm5hbWVdPXoudmFsdWU7Zm9yKEIgaW4gQyl6PUNbQl0sQj09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj9WPXo6Qj09ImNoaWxkcmVuInx8KEIgaW4gRil8fEI9PSJ2YWx1ZSImJigiZGVmYXVsdFZhbHVlImluIEYpfHxCPT0iY2hlY2tlZCImJigiZGVmYXVsdENoZWNrZWQiaW4gRil8fFo1KCQsQixudWxsLHosSyk7Zm9yKEIgaW4gRil6PUZbQl0sQj09ImNoaWxkcmVuIj9VPXo6Qj09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj9MPXo6Qj09InZhbHVlIj9rPXo6Qj09ImNoZWNrZWQiP0g9ejpHJiZ0eXBlb2YgeiE9ImZ1bmN0aW9uInx8Q1tCXT09PXp8fFo1KCQsQix6LENbQl0sSyk7aWYoTClHfHxWJiYoTC5fX2h0bWw9PVYuX19odG1sfHxMLl9faHRtbD09JC5pbm5lckhUTUwpfHwoJC5pbm5lckhUTUw9TC5fX2h0bWwpLEouX19rPVtdO2Vsc2UgaWYoViYmKCQuaW5uZXJIVE1MPSIiKSxBOChKLnR5cGU9PSJ0ZW1wbGF0ZSI/JC5jb250ZW50OiQsVzIoVSk/VTpbVV0sSixRLFosTz09ImZvcmVpZ25PYmplY3QiPyJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjpLLFkscSxZP1lbMF06US5fX2smJmUwKFEsMCksRyxOKSxZIT1udWxsKWZvcihCPVkubGVuZ3RoO0ItLTspUTMoWVtCXSk7R3x8KEI9InZhbHVlIixPPT0icHJvZ3Jlc3MiJiZrPT1udWxsPyQucmVtb3ZlQXR0cmlidXRlKCJ2YWx1ZSIpOmshPW51bGwmJihrIT09JFtCXXx8Tz09InByb2dyZXNzIiYmIWt8fE89PSJvcHRpb24iJiZrIT1DW0JdKSYmWjUoJCxCLGssQ1tCXSxLKSxCPSJjaGVja2VkIixIIT1udWxsJiZIIT0kW0JdJiZaNSgkLEIsSCxDW0JdLEspKX1yZXR1cm4gJH1mdW5jdGlvbiBYMygkLEosUSl7dHJ5e2lmKHR5cGVvZiAkPT0iZnVuY3Rpb24iKXt2YXIgWj10eXBlb2YgJC5fX3U9PSJmdW5jdGlvbiI7WiYmJC5fX3UoKSxaJiZKPT1udWxsfHwoJC5fX3U9JChKKSl9ZWxzZSAkLmN1cnJlbnQ9Sn1jYXRjaChLKXtzLl9fZShLLFEpfX1mdW5jdGlvbiBEOCgkLEosUSl7dmFyIFosSztpZihzLnVubW91bnQmJnMudW5tb3VudCgkKSwoWj0kLnJlZikmJihaLmN1cnJlbnQmJlouY3VycmVudCE9JC5fX2V8fFgzKFosbnVsbCxKKSksKFo9JC5fX2MpIT1udWxsKXtpZihaLmNvbXBvbmVudFdpbGxVbm1vdW50KXRyeXtaLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goWSl7cy5fX2UoWSxKKX1aLmJhc2U9Wi5fX1A9bnVsbH1pZihaPSQuX19rKWZvcihLPTA7SzxaLmxlbmd0aDtLKyspWltLXSYmRDgoWltLXSxKLFF8fHR5cGVvZiAkLnR5cGUhPSJmdW5jdGlvbiIpO1F8fFEzKCQuX19lKSwkLl9fYz0kLl9fPSQuX19lPXZvaWQgMH1mdW5jdGlvbiBxNygkLEosUSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IoJCxRKX1mdW5jdGlvbiB4MCgkLEosUSl7dmFyIFosSyxZLHE7Sj09ZG9jdW1lbnQmJihKPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkscy5fXyYmcy5fXygkLEopLEs9KFo9dHlwZW9mIFE9PSJmdW5jdGlvbiIpP251bGw6USYmUS5fX2t8fEouX19rLFk9W10scT1bXSxaMyhKLCQ9KCFaJiZRfHxKKS5fX2s9dTEoWjEsbnVsbCxbJF0pLEt8fEs1LEs1LEoubmFtZXNwYWNlVVJJLCFaJiZRP1tRXTpLP251bGw6Si5maXJzdENoaWxkP0EyLmNhbGwoSi5jaGlsZE5vZGVzKTpudWxsLFksIVomJlE/UTpLP0suX19lOkouZmlyc3RDaGlsZCxaLHEpLF84KFksJCxxKX1mdW5jdGlvbiBHNSgkLEope3gwKCQsSixHNSl9ZnVuY3Rpb24gSzMoJCxKLFEpe3ZhciBaLEssWSxxLEc9dzAoe30sJC5wcm9wcyk7Zm9yKFkgaW4gJC50eXBlJiYkLnR5cGUuZGVmYXVsdFByb3BzJiYocT0kLnR5cGUuZGVmYXVsdFByb3BzKSxKKVk9PSJrZXkiP1o9SltZXTpZPT0icmVmIj9LPUpbWV06R1tZXT1KW1ldPT09dm9pZCAwJiZxIT1udWxsP3FbWV06SltZXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4yJiYoRy5jaGlsZHJlbj1hcmd1bWVudHMubGVuZ3RoPjM/QTIuY2FsbChhcmd1bWVudHMsMik6USksTzIoJC50eXBlLEcsWnx8JC5rZXksS3x8JC5yZWYsbnVsbCl9ZnVuY3Rpb24gejAoJCl7ZnVuY3Rpb24gSihRKXt2YXIgWixLO3JldHVybiB0aGlzLmdldENoaWxkQ29udGV4dHx8KFo9bmV3IFNldCwoSz17fSlbSi5fX2NdPXRoaXMsdGhpcy5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gS30sdGhpcy5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe1o9bnVsbH0sdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oWSl7dGhpcy5wcm9wcy52YWx1ZSE9WS52YWx1ZSYmWi5mb3JFYWNoKGZ1bmN0aW9uKHEpe3EuX19lPSEwLGU1KHEpfSl9LHRoaXMuc3ViPWZ1bmN0aW9uKFkpe1ouYWRkKFkpO3ZhciBxPVkuY29tcG9uZW50V2lsbFVubW91bnQ7WS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe1omJlouZGVsZXRlKFkpLHEmJnEuY2FsbChZKX19KSxRLmNoaWxkcmVufXJldHVybiBKLl9fYz0iX19jQyIrTTgrKyxKLl9fPSQsSi5Qcm92aWRlcj1KLl9fbD0oSi5Db25zdW1lcj1mdW5jdGlvbihRLFope3JldHVybiBRLmNoaWxkcmVuKFopfSkuY29udGV4dFR5cGU9SixKfUEyPVk1LnNsaWNlLHM9e19fZTpmdW5jdGlvbigkLEosUSxaKXtmb3IodmFyIEssWSxxO0o9Si5fXzspaWYoKEs9Si5fX2MpJiYhSy5fXyl0cnl7aWYoKFk9Sy5jb25zdHJ1Y3RvcikmJlkuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIT1udWxsJiYoSy5zZXRTdGF0ZShZLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcigkKSkscT1LLl9fZCksSy5jb21wb25lbnREaWRDYXRjaCE9bnVsbCYmKEsuY29tcG9uZW50RGlkQ2F0Y2goJCxafHx7fSkscT1LLl9fZCkscSlyZXR1cm4gSy5fX0U9S31jYXRjaChHKXskPUd9dGhyb3cgJH19LEg4PTAsSjc9ZnVuY3Rpb24oJCl7cmV0dXJuICQhPW51bGwmJiQuY29uc3RydWN0b3I9PT12b2lkIDB9LG8xLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbigkLEope3ZhciBRO1E9dGhpcy5fX3MhPW51bGwmJnRoaXMuX19zIT10aGlzLnN0YXRlP3RoaXMuX19zOnRoaXMuX19zPXcwKHt9LHRoaXMuc3RhdGUpLHR5cGVvZiAkPT0iZnVuY3Rpb24iJiYoJD0kKHcwKHt9LFEpLHRoaXMucHJvcHMpKSwkJiZ3MChRLCQpLCQhPW51bGwmJnRoaXMuX192JiYoSiYmdGhpcy5fc2IucHVzaChKKSxlNSh0aGlzKSl9LG8xLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbigkKXt0aGlzLl9fdiYmKHRoaXMuX19lPSEwLCQmJnRoaXMuX19oLnB1c2goJCksZTUodGhpcykpfSxvMS5wcm90b3R5cGUucmVuZGVyPVoxLGgwPVtdLEM4PXR5cGVvZiBQcm9taXNlPT0iZnVuY3Rpb24iP1Byb21pc2UucHJvdG90eXBlLnRoZW4uYmluZChQcm9taXNlLnJlc29sdmUoKSk6c2V0VGltZW91dCxGOD1mdW5jdGlvbigkLEope3JldHVybiAkLl9fdi5fX2ItSi5fX3YuX19ifSxxNS5fX3I9MCxuNT1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDgpLFg1PSJfX2QiK241LE0yPSJfX2EiK241LGs4PS8oUG9pbnRlckNhcHR1cmUpJHxDYXB0dXJlJC9pLEozPTAsczU9VTgoITEpLHQ1PVU4KCEwKSxNOD0wO3ZhciBnMCxiMSxZMyx3OCwkMj0wLGo4PVtdLFIxPXMsVDg9UjEuX19iLEk4PVIxLl9fcixFOD1SMS5kaWZmZWQseTg9UjEuX19jLGI4PVIxLnVubW91bnQsUzg9UjEuX187ZnVuY3Rpb24gSjIoJCxKKXtSMS5fX2gmJlIxLl9faChiMSwkLCQyfHxKKSwkMj0wO3ZhciBRPWIxLl9fSHx8KGIxLl9fSD17X186W10sX19oOltdfSk7cmV0dXJuICQ+PVEuX18ubGVuZ3RoJiZRLl9fLnB1c2goe30pLFEuX19bJF19ZnVuY3Rpb24gQSgkKXtyZXR1cm4gJDI9MSxkMCh2OCwkKX1mdW5jdGlvbiBkMCgkLEosUSl7dmFyIFo9SjIoZzArKywyKTtpZihaLnQ9JCwhWi5fX2MmJihaLl9fPVtRP1EoSik6djgodm9pZCAwLEopLGZ1bmN0aW9uKEcpe3ZhciBOPVouX19OP1ouX19OWzBdOlouX19bMF0sQj1aLnQoTixHKTtOIT09QiYmKFouX19OPVtCLFouX19bMV1dLFouX19jLnNldFN0YXRlKHt9KSl9XSxaLl9fYz1iMSwhYjEuX19mKSl7dmFyIEs9ZnVuY3Rpb24oRyxOLEIpe2lmKCFaLl9fYy5fX0gpcmV0dXJuITA7dmFyIEw9Wi5fX2MuX19ILl9fLmZpbHRlcihmdW5jdGlvbihVKXtyZXR1cm4gVS5fX2N9KTtpZihMLmV2ZXJ5KGZ1bmN0aW9uKFUpe3JldHVybiFVLl9fTn0pKXJldHVybiFZfHxZLmNhbGwodGhpcyxHLE4sQik7dmFyIFY9Wi5fX2MucHJvcHMhPT1HO3JldHVybiBMLnNvbWUoZnVuY3Rpb24oVSl7aWYoVS5fX04pe3ZhciB6PVUuX19bMF07VS5fXz1VLl9fTixVLl9fTj12b2lkIDAseiE9PVUuX19bMF0mJihWPSEwKX19KSxZJiZZLmNhbGwodGhpcyxHLE4sQil8fFZ9O2IxLl9fZj0hMDt2YXJ7c2hvdWxkQ29tcG9uZW50VXBkYXRlOlksY29tcG9uZW50V2lsbFVwZGF0ZTpxfT1iMTtiMS5jb21wb25lbnRXaWxsVXBkYXRlPWZ1bmN0aW9uKEcsTixCKXtpZih0aGlzLl9fZSl7dmFyIEw9WTtZPXZvaWQgMCxLKEcsTixCKSxZPUx9cSYmcS5jYWxsKHRoaXMsRyxOLEIpfSxiMS5zaG91bGRDb21wb25lbnRVcGRhdGU9S31yZXR1cm4gWi5fX058fFouX199ZnVuY3Rpb24gYigkLEope3ZhciBRPUoyKGcwKyssMyk7IVIxLl9fcyYmRzMoUS5fX0gsSikmJihRLl9fPSQsUS51PUosYjEuX19ILl9faC5wdXNoKFEpKX1mdW5jdGlvbiBUMCgkLEope3ZhciBRPUoyKGcwKyssNCk7IVIxLl9fcyYmRzMoUS5fX0gsSikmJihRLl9fPSQsUS51PUosYjEuX19oLnB1c2goUSkpfWZ1bmN0aW9uIFQoJCl7cmV0dXJuICQyPTUsVDEoZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDokfX0sW10pfWZ1bmN0aW9uIEI1KCQsSixRKXskMj02LFQwKGZ1bmN0aW9uKCl7aWYodHlwZW9mICQ9PSJmdW5jdGlvbiIpe3ZhciBaPSQoSigpKTtyZXR1cm4gZnVuY3Rpb24oKXskKG51bGwpLFomJnR5cGVvZiBaPT0iZnVuY3Rpb24iJiZaKCl9fWlmKCQpcmV0dXJuICQuY3VycmVudD1KKCksZnVuY3Rpb24oKXtyZXR1cm4gJC5jdXJyZW50PW51bGx9fSxRPT1udWxsP1E6US5jb25jYXQoJCkpfWZ1bmN0aW9uIFQxKCQsSil7dmFyIFE9SjIoZzArKyw3KTtyZXR1cm4gRzMoUS5fX0gsSikmJihRLl9fPSQoKSxRLl9fSD1KLFEuX19oPSQpLFEuX199ZnVuY3Rpb24gRCgkLEope3JldHVybiAkMj04LFQxKGZ1bmN0aW9uKCl7cmV0dXJuICR9LEopfWZ1bmN0aW9uIFUwKCQpe3ZhciBKPWIxLmNvbnRleHRbJC5fX2NdLFE9SjIoZzArKyw5KTtyZXR1cm4gUS5jPSQsSj8oUS5fXz09bnVsbCYmKFEuX189ITAsSi5zdWIoYjEpKSxKLnByb3BzLnZhbHVlKTokLl9ffWZ1bmN0aW9uIE41KCQsSil7UjEudXNlRGVidWdWYWx1ZSYmUjEudXNlRGVidWdWYWx1ZShKP0ooJCk6JCl9ZnVuY3Rpb24gUTIoKXt2YXIgJD1KMihnMCsrLDExKTtpZighJC5fXyl7Zm9yKHZhciBKPWIxLl9fdjtKIT09bnVsbCYmIUouX19tJiZKLl9fIT09bnVsbDspSj1KLl9fO3ZhciBRPUouX19tfHwoSi5fX209WzAsMF0pOyQuX189IlAiK1FbMF0rIi0iK1FbMV0rK31yZXR1cm4gJC5fX31mdW5jdGlvbiBHNygpe2Zvcih2YXIgJDskPWo4LnNoaWZ0KCk7KXt2YXIgSj0kLl9fSDtpZigkLl9fUCYmSil0cnl7Si5fX2guc29tZShWNSksSi5fX2guc29tZShxMyksSi5fX2g9W119Y2F0Y2goUSl7Si5fX2g9W10sUjEuX19lKFEsJC5fX3YpfX19UjEuX19iPWZ1bmN0aW9uKCQpe2IxPW51bGwsVDgmJlQ4KCQpfSxSMS5fXz1mdW5jdGlvbigkLEopeyQmJkouX19rJiZKLl9fay5fX20mJigkLl9fbT1KLl9fay5fX20pLFM4JiZTOCgkLEopfSxSMS5fX3I9ZnVuY3Rpb24oJCl7STgmJkk4KCQpLGcwPTA7dmFyIEo9KGIxPSQuX19jKS5fX0g7SiYmKFkzPT09YjE/KEouX19oPVtdLGIxLl9faD1bXSxKLl9fLnNvbWUoZnVuY3Rpb24oUSl7US5fX04mJihRLl9fPVEuX19OKSxRLnU9US5fX049dm9pZCAwfSkpOihKLl9faC5zb21lKFY1KSxKLl9faC5zb21lKHEzKSxKLl9faD1bXSxnMD0wKSksWTM9YjF9LFIxLmRpZmZlZD1mdW5jdGlvbigkKXtFOCYmRTgoJCk7dmFyIEo9JC5fX2M7SiYmSi5fX0gmJihKLl9fSC5fX2gubGVuZ3RoJiYoajgucHVzaChKKSE9PTEmJnc4PT09UjEucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHwoKHc4PVIxLnJlcXVlc3RBbmltYXRpb25GcmFtZSl8fFY3KShHNykpLEouX19ILl9fLnNvbWUoZnVuY3Rpb24oUSl7US51JiYoUS5fX0g9US51KSxRLnU9dm9pZCAwfSkpLFkzPWIxPW51bGx9LFIxLl9fYz1mdW5jdGlvbigkLEope0ouc29tZShmdW5jdGlvbihRKXt0cnl7US5fX2guc29tZShWNSksUS5fX2g9US5fX2guZmlsdGVyKGZ1bmN0aW9uKFope3JldHVybiFaLl9ffHxxMyhaKX0pfWNhdGNoKFope0ouc29tZShmdW5jdGlvbihLKXtLLl9faCYmKEsuX19oPVtdKX0pLEo9W10sUjEuX19lKFosUS5fX3YpfX0pLHk4JiZ5OCgkLEopfSxSMS51bm1vdW50PWZ1bmN0aW9uKCQpe2I4JiZiOCgkKTt2YXIgSixRPSQuX19jO1EmJlEuX19IJiYoUS5fX0guX18uc29tZShmdW5jdGlvbihaKXt0cnl7VjUoWil9Y2F0Y2goSyl7Sj1LfX0pLFEuX19IPXZvaWQgMCxKJiZSMS5fX2UoSixRLl9fdikpfTt2YXIgeDg9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT09ImZ1bmN0aW9uIjtmdW5jdGlvbiBWNygkKXt2YXIgSixRPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KFopLHg4JiZjYW5jZWxBbmltYXRpb25GcmFtZShKKSxzZXRUaW1lb3V0KCQpfSxaPXNldFRpbWVvdXQoUSwzNSk7eDgmJihKPXJlcXVlc3RBbmltYXRpb25GcmFtZShRKSl9ZnVuY3Rpb24gVjUoJCl7dmFyIEo9YjEsUT0kLl9fYzt0eXBlb2YgUT09ImZ1bmN0aW9uIiYmKCQuX19jPXZvaWQgMCxRKCkpLGIxPUp9ZnVuY3Rpb24gcTMoJCl7dmFyIEo9YjE7JC5fX2M9JC5fXygpLGIxPUp9ZnVuY3Rpb24gRzMoJCxKKXtyZXR1cm4hJHx8JC5sZW5ndGghPT1KLmxlbmd0aHx8Si5zb21lKGZ1bmN0aW9uKFEsWil7cmV0dXJuIFEhPT0kW1pdfSl9ZnVuY3Rpb24gdjgoJCxKKXtyZXR1cm4gdHlwZW9mIEo9PSJmdW5jdGlvbiI/SigkKTpKfWZ1bmN0aW9uIEI3KCQsSil7Zm9yKHZhciBRIGluIEopJFtRXT1KW1FdO3JldHVybiAkfWZ1bmN0aW9uIFI4KCQsSil7Zm9yKHZhciBRIGluICQpaWYoUSE9PSJfX3NvdXJjZSImJiEoUSBpbiBKKSlyZXR1cm4hMDtmb3IodmFyIFogaW4gSilpZihaIT09Il9fc291cmNlIiYmJFtaXSE9PUpbWl0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gaDgoJCxKKXt0aGlzLnByb3BzPSQsdGhpcy5jb250ZXh0PUp9KGg4LnByb3RvdHlwZT1uZXcgbzEpLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLGg4LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oJCxKKXtyZXR1cm4gUjgodGhpcy5wcm9wcywkKXx8UjgodGhpcy5zdGF0ZSxKKX07dmFyIGc4PXMuX19iO3MuX19iPWZ1bmN0aW9uKCQpeyQudHlwZSYmJC50eXBlLl9fZiYmJC5yZWYmJigkLnByb3BzLnJlZj0kLnJlZiwkLnJlZj1udWxsKSxnOCYmZzgoJCl9O3ZhciBONz1zLl9fZTtzLl9fZT1mdW5jdGlvbigkLEosUSxaKXtpZigkLnRoZW4pe2Zvcih2YXIgSyxZPUo7WT1ZLl9fOylpZigoSz1ZLl9fYykmJksuX19jKXJldHVybiBKLl9fZT09bnVsbCYmKEouX19lPVEuX19lLEouX19rPVEuX19rKSxLLl9fYygkLEopfU43KCQsSixRLFopfTt2YXIgZjg9cy51bm1vdW50O2Z1bmN0aW9uIGM4KCQsSixRKXtyZXR1cm4gJCYmKCQuX19jJiYkLl9fYy5fX0gmJigkLl9fYy5fX0guX18uZm9yRWFjaChmdW5jdGlvbihaKXt0eXBlb2YgWi5fX2M9PSJmdW5jdGlvbiImJlouX19jKCl9KSwkLl9fYy5fX0g9bnVsbCksKCQ9Qjcoe30sJCkpLl9fYyE9bnVsbCYmKCQuX19jLl9fUD09PVEmJigkLl9fYy5fX1A9SiksJC5fX2MuX19lPSEwLCQuX19jPW51bGwpLCQuX19rPSQuX19rJiYkLl9fay5tYXAoZnVuY3Rpb24oWil7cmV0dXJuIGM4KFosSixRKX0pKSwkfWZ1bmN0aW9uIG84KCQsSixRKXtyZXR1cm4gJCYmUSYmKCQuX192PW51bGwsJC5fX2s9JC5fX2smJiQuX19rLm1hcChmdW5jdGlvbihaKXtyZXR1cm4gbzgoWixKLFEpfSksJC5fX2MmJiQuX19jLl9fUD09PUomJigkLl9fZSYmUS5hcHBlbmRDaGlsZCgkLl9fZSksJC5fX2MuX19lPSEwLCQuX19jLl9fUD1RKSksJH1mdW5jdGlvbiBWMygpe3RoaXMuX191PTAsdGhpcy5vPW51bGwsdGhpcy5fX2I9bnVsbH1mdW5jdGlvbiByOCgkKXt2YXIgSj0kLl9fJiYkLl9fLl9fYztyZXR1cm4gSiYmSi5fX2EmJkouX19hKCQpfWZ1bmN0aW9uIEw1KCl7dGhpcy5pPW51bGwsdGhpcy5sPW51bGx9cy51bm1vdW50PWZ1bmN0aW9uKCQpe3ZhciBKPSQuX19jO0omJihKLl9fej0hMCksSiYmSi5fX1ImJkouX19SKCksSiYmMzImJC5fX3UmJigkLnR5cGU9bnVsbCksZjgmJmY4KCQpfSwoVjMucHJvdG90eXBlPW5ldyBvMSkuX19jPWZ1bmN0aW9uKCQsSil7dmFyIFE9Si5fX2MsWj10aGlzO1oubz09bnVsbCYmKFoubz1bXSksWi5vLnB1c2goUSk7dmFyIEs9cjgoWi5fX3YpLFk9ITEscT1mdW5jdGlvbigpe1l8fFouX196fHwoWT0hMCxRLl9fUj1udWxsLEs/SyhOKTpOKCkpfTtRLl9fUj1xO3ZhciBHPVEuX19QO1EuX19QPW51bGw7dmFyIE49ZnVuY3Rpb24oKXtpZighLS1aLl9fdSl7aWYoWi5zdGF0ZS5fX2Epe3ZhciBCPVouc3RhdGUuX19hO1ouX192Ll9fa1swXT1vOChCLEIuX19jLl9fUCxCLl9fYy5fX08pfXZhciBMO2ZvcihaLnNldFN0YXRlKHtfX2E6Wi5fX2I9bnVsbH0pO0w9Wi5vLnBvcCgpOylMLl9fUD1HLEwuZm9yY2VVcGRhdGUoKX19O1ouX191Kyt8fDMyJkouX191fHxaLnNldFN0YXRlKHtfX2E6Wi5fX2I9Wi5fX3YuX19rWzBdfSksJC50aGVuKHEscSl9LFYzLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMubz1bXX0sVjMucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigkLEope2lmKHRoaXMuX19iKXtpZih0aGlzLl9fdi5fX2spe3ZhciBRPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLFo9dGhpcy5fX3YuX19rWzBdLl9fYzt0aGlzLl9fdi5fX2tbMF09YzgodGhpcy5fX2IsUSxaLl9fTz1aLl9fUCl9dGhpcy5fX2I9bnVsbH12YXIgSz1KLl9fYSYmdTEoWjEsbnVsbCwkLmZhbGxiYWNrKTtyZXR1cm4gSyYmKEsuX191Jj0tMzMpLFt1MShaMSxudWxsLEouX19hP251bGw6JC5jaGlsZHJlbiksS119O3ZhciBtOD1mdW5jdGlvbigkLEosUSl7aWYoKytRWzFdPT09UVswXSYmJC5sLmRlbGV0ZShKKSwkLnByb3BzLnJldmVhbE9yZGVyJiYoJC5wcm9wcy5yZXZlYWxPcmRlclswXSE9PSJ0Inx8ISQubC5zaXplKSlmb3IoUT0kLmk7UTspe2Zvcig7US5sZW5ndGg+MzspUS5wb3AoKSgpO2lmKFFbMV08UVswXSlicmVhazskLmk9UT1RWzJdfX07KEw1LnByb3RvdHlwZT1uZXcgbzEpLl9fYT1mdW5jdGlvbigkKXt2YXIgSj10aGlzLFE9cjgoSi5fX3YpLFo9Si5sLmdldCgkKTtyZXR1cm4gWlswXSsrLGZ1bmN0aW9uKEspe3ZhciBZPWZ1bmN0aW9uKCl7Si5wcm9wcy5yZXZlYWxPcmRlcj8oWi5wdXNoKEspLG04KEosJCxaKSk6SygpfTtRP1EoWSk6WSgpfX0sTDUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigkKXt0aGlzLmk9bnVsbCx0aGlzLmw9bmV3IE1hcDt2YXIgSj1YMCgkLmNoaWxkcmVuKTskLnJldmVhbE9yZGVyJiYkLnJldmVhbE9yZGVyWzBdPT09ImIiJiZKLnJldmVyc2UoKTtmb3IodmFyIFE9Si5sZW5ndGg7US0tOyl0aGlzLmwuc2V0KEpbUV0sdGhpcy5pPVsxLDAsdGhpcy5pXSk7cmV0dXJuICQuY2hpbGRyZW59LEw1LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9TDUucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyICQ9dGhpczt0aGlzLmwuZm9yRWFjaChmdW5jdGlvbihKLFEpe204KCQsUSxKKX0pfTt2YXIgTDc9dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDMsejc9L14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxpbWFnZSghUyl8bGV0dGVyfGxpZ2h0aW5nfG1hcmtlcig/IUh8V3xVKXxvdmVybGluZXxwYWludHxwb2ludGVyfHNoYXBlfHN0b3B8c3RyaWtldGhyb3VnaHxzdHJva2V8dGV4dCg/IUwpfHRyYW5zZm9ybXx1bmRlcmxpbmV8dW5pY29kZXx1bml0c3x2fHZlY3Rvcnx2ZXJ0fHdvcmR8d3JpdGluZ3x4KD8hQykpW0EtWl0vLFU3PS9eb24oQW5pfFRyYXxUb3V8QmVmb3JlSW5wfENvbXBvKS8sSDc9L1tBLVowLTldL2csQzc9dHlwZW9mIGRvY3VtZW50PCJ1IixGNz1mdW5jdGlvbigkKXtyZXR1cm4odHlwZW9mIFN5bWJvbDwidSImJnR5cGVvZiBTeW1ib2woKT09InN5bWJvbCI/L2ZpbHxjaGV8cmFkLzovZmlsfGNoZXxyYS8pLnRlc3QoJCl9O2Z1bmN0aW9uIGk4KCQsSixRKXtyZXR1cm4gSi5fX2s9PW51bGwmJihKLnRleHRDb250ZW50PSIiKSx4MCgkLEopLHR5cGVvZiBRPT0iZnVuY3Rpb24iJiZRKCksJD8kLl9fYzpudWxsfW8xLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PSEwLFsiY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsImNvbXBvbmVudFdpbGxVcGRhdGUiXS5mb3JFYWNoKGZ1bmN0aW9uKCQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvMS5wcm90b3R5cGUsJCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzWyJVTlNBRkVfIiskXX0sc2V0OmZ1bmN0aW9uKEope09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCQse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpKfSl9fSl9KTt2YXIgcDg9cy5ldmVudDtzLmV2ZW50PWZ1bmN0aW9uKCQpe3JldHVybiBwOCYmKCQ9cDgoJCkpLCQucGVyc2lzdD1mdW5jdGlvbigpe30sJC5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbmNlbEJ1YmJsZX0sJC5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0UHJldmVudGVkfSwkLm5hdGl2ZUV2ZW50PSR9O3ZhciBhOCxrNz17Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsYXNzfX0sdTg9cy52bm9kZTtzLnZub2RlPWZ1bmN0aW9uKCQpe3R5cGVvZiAkLnR5cGU9PSJzdHJpbmciJiZmdW5jdGlvbihKKXt2YXJ7cHJvcHM6USx0eXBlOlp9PUosSz17fSxZPVouaW5kZXhPZigiLSIpPT0tMTtmb3IodmFyIHEgaW4gUSl7dmFyIEc9UVtxXTtpZighKHE9PT0idmFsdWUiJiYoImRlZmF1bHRWYWx1ZSJpbiBRKSYmRz09bnVsbHx8QzcmJnE9PT0iY2hpbGRyZW4iJiZaPT09Im5vc2NyaXB0Inx8cT09PSJjbGFzcyJ8fHE9PT0iY2xhc3NOYW1lIikpe3ZhciBOPXEudG9Mb3dlckNhc2UoKTtxPT09ImRlZmF1bHRWYWx1ZSImJiJ2YWx1ZSJpbiBRJiZRLnZhbHVlPT1udWxsP3E9InZhbHVlIjpxPT09ImRvd25sb2FkIiYmRz09PSEwP0c9IiI6Tj09PSJ0cmFuc2xhdGUiJiZHPT09Im5vIj9HPSExOk5bMF09PT0ibyImJk5bMV09PT0ibiI/Tj09PSJvbmRvdWJsZWNsaWNrIj9xPSJvbmRibGNsaWNrIjpOIT09Im9uY2hhbmdlInx8WiE9PSJpbnB1dCImJlohPT0idGV4dGFyZWEifHxGNyhRLnR5cGUpP049PT0ib25mb2N1cyI/cT0ib25mb2N1c2luIjpOPT09Im9uYmx1ciI/cT0ib25mb2N1c291dCI6VTcudGVzdChxKSYmKHE9Tik6Tj1xPSJvbmlucHV0IjpZJiZ6Ny50ZXN0KHEpP3E9cS5yZXBsYWNlKEg3LCItJCYiKS50b0xvd2VyQ2FzZSgpOkc9PT1udWxsJiYoRz12b2lkIDApLE49PT0ib25pbnB1dCImJktbcT1OXSYmKHE9Im9uaW5wdXRDYXB0dXJlIiksS1txXT1HfX1aPT0ic2VsZWN0IiYmKEsubXVsdGlwbGUmJkFycmF5LmlzQXJyYXkoSy52YWx1ZSkmJihLLnZhbHVlPVgwKFEuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24oQil7Qi5wcm9wcy5zZWxlY3RlZD1LLnZhbHVlLmluZGV4T2YoQi5wcm9wcy52YWx1ZSkhPS0xfSkpLEsuZGVmYXVsdFZhbHVlIT1udWxsJiYoSy52YWx1ZT1YMChRLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKEIpe0IucHJvcHMuc2VsZWN0ZWQ9Sy5tdWx0aXBsZT9LLmRlZmF1bHRWYWx1ZS5pbmRleE9mKEIucHJvcHMudmFsdWUpIT0tMTpLLmRlZmF1bHRWYWx1ZT09Qi5wcm9wcy52YWx1ZX0pKSksUS5jbGFzcyYmIVEuY2xhc3NOYW1lPyhLLmNsYXNzPVEuY2xhc3MsT2JqZWN0LmRlZmluZVByb3BlcnR5KEssImNsYXNzTmFtZSIsazcpKTpRLmNsYXNzTmFtZSYmKEsuY2xhc3M9Sy5jbGFzc05hbWU9US5jbGFzc05hbWUpLEoucHJvcHM9S30oJCksJC4kJHR5cGVvZj1MNyx1OCYmdTgoJCl9O3ZhciBsOD1zLl9fcjtzLl9fcj1mdW5jdGlvbigkKXtsOCYmbDgoJCksYTg9JC5fX2N9O3ZhciBkOD1zLmRpZmZlZDtzLmRpZmZlZD1mdW5jdGlvbigkKXtkOCYmZDgoJCk7dmFye3Byb3BzOkosX19lOlF9PSQ7USE9bnVsbCYmJC50eXBlPT09InRleHRhcmVhIiYmInZhbHVlImluIEomJkoudmFsdWUhPT1RLnZhbHVlJiYoUS52YWx1ZT1KLnZhbHVlPT1udWxsPyIiOkoudmFsdWUpLGE4PW51bGx9O2Z1bmN0aW9uIG44KCQpe3JldHVybiEhJC5fX2smJih4MChudWxsLCQpLCEwKX1mdW5jdGlvbiBzOCgkKXtyZXR1cm57cmVuZGVyOmZ1bmN0aW9uKEope2k4KEosJCl9LHVubW91bnQ6ZnVuY3Rpb24oKXtuOCgkKX19fWZ1bmN0aW9uIFk5KCQsSil7Zm9yKHZhciBRIGluIEopJFtRXT1KW1FdO3JldHVybiAkfWZ1bmN0aW9uIE4zKCQsSil7Zm9yKHZhciBRIGluICQpaWYoUSE9PSJfX3NvdXJjZSImJiEoUSBpbiBKKSlyZXR1cm4hMDtmb3IodmFyIFogaW4gSilpZihaIT09Il9fc291cmNlIiYmJFtaXSE9PUpbWl0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcTkoJCxKKXt2YXIgUT1KKCksWj1BKHt0OntfXzpRLHU6Sn19KSxLPVpbMF0udCxZPVpbMV07cmV0dXJuIFQwKGZ1bmN0aW9uKCl7Sy5fXz1RLEsudT1KLEIzKEspJiZZKHt0Okt9KX0sWyQsUSxKXSksYihmdW5jdGlvbigpe3JldHVybiBCMyhLKSYmWSh7dDpLfSksJChmdW5jdGlvbigpe0IzKEspJiZZKHt0Okt9KX0pfSxbJF0pLFF9ZnVuY3Rpb24gQjMoJCl7dHJ5e3JldHVybiEoKEo9JC5fXyk9PT0oUT0kLnUoKSkmJihKIT09MHx8MS9KPT0xL1EpfHxKIT1KJiZRIT1RKX1jYXRjaChaKXtyZXR1cm4hMH12YXIgSixRfWZ1bmN0aW9uIEc5KCQpeyQoKX1mdW5jdGlvbiBWOSgkKXtyZXR1cm4gJH1mdW5jdGlvbiBCOSgpe3JldHVyblshMSxHOV19dmFyIE45PVQwO2Z1bmN0aW9uIEwzKCQsSil7dGhpcy5wcm9wcz0kLHRoaXMuY29udGV4dD1KfWZ1bmN0aW9uIGMwKCQsSil7ZnVuY3Rpb24gUShLKXt2YXIgWT10aGlzLnByb3BzLnJlZjtyZXR1cm4gWSE9Sy5yZWYmJlkmJih0eXBlb2YgWT09ImZ1bmN0aW9uIj9ZKG51bGwpOlkuY3VycmVudD1udWxsKSxKPyFKKHRoaXMucHJvcHMsSyl8fFkhPUsucmVmOk4zKHRoaXMucHJvcHMsSyl9ZnVuY3Rpb24gWihLKXtyZXR1cm4gdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGU9USx1MSgkLEspfXJldHVybiBaLmRpc3BsYXlOYW1lPSJNZW1vKCIrKCQuZGlzcGxheU5hbWV8fCQubmFtZSkrIikiLFouX19mPVoucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9ITAsWi50eXBlPSQsWn0oTDMucHJvdG90eXBlPW5ldyBvMSkuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITAsTDMucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbigkLEope3JldHVybiBOMyh0aGlzLnByb3BzLCQpfHxOMyh0aGlzLnN0YXRlLEopfTt2YXIgdDg9cy5fX2I7cy5fX2I9ZnVuY3Rpb24oJCl7JC50eXBlJiYkLnR5cGUuX19mJiYkLnJlZiYmKCQucHJvcHMucmVmPSQucmVmLCQucmVmPW51bGwpLHQ4JiZ0OCgkKX07dmFyIE03PXR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpfHwzOTExO2Z1bmN0aW9uIFcwKCQpe2Z1bmN0aW9uIEooUSl7dmFyIFo9WTkoe30sUSk7cmV0dXJuIGRlbGV0ZSBaLnJlZiwkKFosUS5yZWZ8fG51bGwpfXJldHVybiBKLiQkdHlwZW9mPU03LEoucmVuZGVyPSQsSi5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD1KLl9fZj0hMCxKLmRpc3BsYXlOYW1lPSJGb3J3YXJkUmVmKCIrKCQuZGlzcGxheU5hbWV8fCQubmFtZSkrIikiLEp9dmFyIGU4PWZ1bmN0aW9uKCQsSil7cmV0dXJuICQ9PW51bGw/bnVsbDpYMChYMCgkKS5tYXAoSikpfSxPNz17bWFwOmU4LGZvckVhY2g6ZTgsY291bnQ6ZnVuY3Rpb24oJCl7cmV0dXJuICQ/WDAoJCkubGVuZ3RoOjB9LG9ubHk6ZnVuY3Rpb24oJCl7dmFyIEo9WDAoJCk7aWYoSi5sZW5ndGghPT0xKXRocm93IkNoaWxkcmVuLm9ubHkiO3JldHVybiBKWzBdfSx0b0FycmF5OlgwfSxBNz1zLl9fZTtzLl9fZT1mdW5jdGlvbigkLEosUSxaKXtpZigkLnRoZW4pe2Zvcih2YXIgSyxZPUo7WT1ZLl9fOylpZigoSz1ZLl9fYykmJksuX19jKXJldHVybiBKLl9fZT09bnVsbCYmKEouX19lPVEuX19lLEouX19rPVEuX19rKSxLLl9fYygkLEopfUE3KCQsSixRLFopfTt2YXIgJDk9cy51bm1vdW50O2Z1bmN0aW9uIEw5KCQsSixRKXtyZXR1cm4gJCYmKCQuX19jJiYkLl9fYy5fX0gmJigkLl9fYy5fX0guX18uZm9yRWFjaChmdW5jdGlvbihaKXt0eXBlb2YgWi5fX2M9PSJmdW5jdGlvbiImJlouX19jKCl9KSwkLl9fYy5fX0g9bnVsbCksKCQ9WTkoe30sJCkpLl9fYyE9bnVsbCYmKCQuX19jLl9fUD09PVEmJigkLl9fYy5fX1A9SiksJC5fX2MuX19lPSEwLCQuX19jPW51bGwpLCQuX19rPSQuX19rJiYkLl9fay5tYXAoZnVuY3Rpb24oWil7cmV0dXJuIEw5KFosSixRKX0pKSwkfWZ1bmN0aW9uIHo5KCQsSixRKXtyZXR1cm4gJCYmUSYmKCQuX192PW51bGwsJC5fX2s9JC5fX2smJiQuX19rLm1hcChmdW5jdGlvbihaKXtyZXR1cm4gejkoWixKLFEpfSksJC5fX2MmJiQuX19jLl9fUD09PUomJigkLl9fZSYmUS5hcHBlbmRDaGlsZCgkLl9fZSksJC5fX2MuX19lPSEwLCQuX19jLl9fUD1RKSksJH1mdW5jdGlvbiB6NSgpe3RoaXMuX191PTAsdGhpcy5vPW51bGwsdGhpcy5fX2I9bnVsbH1mdW5jdGlvbiBVOSgkKXt2YXIgSj0kLl9fJiYkLl9fLl9fYztyZXR1cm4gSiYmSi5fX2EmJkouX19hKCQpfWZ1bmN0aW9uIFc3KCQpe3ZhciBKLFEsWixLPW51bGw7ZnVuY3Rpb24gWShxKXtpZihKfHwoSj0kKCkpLnRoZW4oZnVuY3Rpb24oRyl7RyYmKEs9Ry5kZWZhdWx0fHxHKSxaPSEwfSxmdW5jdGlvbihHKXtRPUcsWj0hMH0pLFEpdGhyb3cgUTtpZighWil0aHJvdyBKO3JldHVybiBLP3UxKEsscSk6bnVsbH1yZXR1cm4gWS5kaXNwbGF5TmFtZT0iTGF6eSIsWS5fX2Y9ITAsWX1mdW5jdGlvbiBQMigpe3RoaXMuaT1udWxsLHRoaXMubD1udWxsfXMudW5tb3VudD1mdW5jdGlvbigkKXt2YXIgSj0kLl9fYztKJiYoSi5fX3o9ITApLEomJkouX19SJiZKLl9fUigpLEomJjMyJiQuX191JiYoJC50eXBlPW51bGwpLCQ5JiYkOSgkKX0sKHo1LnByb3RvdHlwZT1uZXcgbzEpLl9fYz1mdW5jdGlvbigkLEope3ZhciBRPUouX19jLFo9dGhpcztaLm89PW51bGwmJihaLm89W10pLFouby5wdXNoKFEpO3ZhciBLPVU5KFouX192KSxZPSExLHE9ZnVuY3Rpb24oKXtZfHxaLl9fenx8KFk9ITAsUS5fX1I9bnVsbCxLP0soTik6TigpKX07US5fX1I9cTt2YXIgRz1RLl9fUDtRLl9fUD1udWxsO3ZhciBOPWZ1bmN0aW9uKCl7aWYoIS0tWi5fX3Upe2lmKFouc3RhdGUuX19hKXt2YXIgQj1aLnN0YXRlLl9fYTtaLl9fdi5fX2tbMF09ejkoQixCLl9fYy5fX1AsQi5fX2MuX19PKX12YXIgTDtmb3IoWi5zZXRTdGF0ZSh7X19hOlouX19iPW51bGx9KTtMPVouby5wb3AoKTspTC5fX1A9RyxMLmZvcmNlVXBkYXRlKCl9fTtaLl9fdSsrfHwzMiZKLl9fdXx8Wi5zZXRTdGF0ZSh7X19hOlouX19iPVouX192Ll9fa1swXX0pLCQudGhlbihxLHEpfSx6NS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt0aGlzLm89W119LHo1LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oJCxKKXtpZih0aGlzLl9fYil7aWYodGhpcy5fX3YuX19rKXt2YXIgUT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxaPXRoaXMuX192Ll9fa1swXS5fX2M7dGhpcy5fX3YuX19rWzBdPUw5KHRoaXMuX19iLFEsWi5fX089Wi5fX1ApfXRoaXMuX19iPW51bGx9dmFyIEs9Si5fX2EmJnUxKFoxLG51bGwsJC5mYWxsYmFjayk7cmV0dXJuIEsmJihLLl9fdSY9LTMzKSxbdTEoWjEsbnVsbCxKLl9fYT9udWxsOiQuY2hpbGRyZW4pLEtdfTt2YXIgSjk9ZnVuY3Rpb24oJCxKLFEpe2lmKCsrUVsxXT09PVFbMF0mJiQubC5kZWxldGUoSiksJC5wcm9wcy5yZXZlYWxPcmRlciYmKCQucHJvcHMucmV2ZWFsT3JkZXJbMF0hPT0idCJ8fCEkLmwuc2l6ZSkpZm9yKFE9JC5pO1E7KXtmb3IoO1EubGVuZ3RoPjM7KVEucG9wKCkoKTtpZihRWzFdPFFbMF0pYnJlYWs7JC5pPVE9UVsyXX19O2Z1bmN0aW9uIF83KCQpe3JldHVybiB0aGlzLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiAkLmNvbnRleHR9LCQuY2hpbGRyZW59ZnVuY3Rpb24gUDcoJCl7dmFyIEo9dGhpcyxRPSQuaDtpZihKLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7eDAobnVsbCxKLnYpLEoudj1udWxsLEouaD1udWxsfSxKLmgmJkouaCE9PVEmJkouY29tcG9uZW50V2lsbFVubW91bnQoKSwhSi52KXtmb3IodmFyIFo9Si5fX3Y7WiE9PW51bGwmJiFaLl9fbSYmWi5fXyE9PW51bGw7KVo9Wi5fXztKLmg9USxKLnY9e25vZGVUeXBlOjEscGFyZW50Tm9kZTpRLGNoaWxkTm9kZXM6W10sX19rOntfX206Wi5fX219LGNvbnRhaW5zOmZ1bmN0aW9uKCl7cmV0dXJuITB9LG5hbWVzcGFjZVVSSTpRLm5hbWVzcGFjZVVSSSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oSyxZKXt0aGlzLmNoaWxkTm9kZXMucHVzaChLKSxKLmguaW5zZXJ0QmVmb3JlKEssWSl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKEspe3RoaXMuY2hpbGROb2Rlcy5zcGxpY2UodGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoSyk+Pj4xLDEpLEouaC5yZW1vdmVDaGlsZChLKX19fXgwKHUxKF83LHtjb250ZXh0OkouY29udGV4dH0sJC5fX3YpLEoudil9ZnVuY3Rpb24gejMoJCxKKXt2YXIgUT11MShQNyx7X192OiQsaDpKfSk7cmV0dXJuIFEuY29udGFpbmVySW5mbz1KLFF9KFAyLnByb3RvdHlwZT1uZXcgbzEpLl9fYT1mdW5jdGlvbigkKXt2YXIgSj10aGlzLFE9VTkoSi5fX3YpLFo9Si5sLmdldCgkKTtyZXR1cm4gWlswXSsrLGZ1bmN0aW9uKEspe3ZhciBZPWZ1bmN0aW9uKCl7Si5wcm9wcy5yZXZlYWxPcmRlcj8oWi5wdXNoKEspLEo5KEosJCxaKSk6SygpfTtRP1EoWSk6WSgpfX0sUDIucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigkKXt0aGlzLmk9bnVsbCx0aGlzLmw9bmV3IE1hcDt2YXIgSj1YMCgkLmNoaWxkcmVuKTskLnJldmVhbE9yZGVyJiYkLnJldmVhbE9yZGVyWzBdPT09ImIiJiZKLnJldmVyc2UoKTtmb3IodmFyIFE9Si5sZW5ndGg7US0tOyl0aGlzLmwuc2V0KEpbUV0sdGhpcy5pPVsxLDAsdGhpcy5pXSk7cmV0dXJuICQuY2hpbGRyZW59LFAyLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9UDIucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyICQ9dGhpczt0aGlzLmwuZm9yRWFjaChmdW5jdGlvbihKLFEpe0o5KCQsUSxKKX0pfTt2YXIgSDk9dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDMsRDc9L14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxpbWFnZSghUyl8bGV0dGVyfGxpZ2h0aW5nfG1hcmtlcig/IUh8V3xVKXxvdmVybGluZXxwYWludHxwb2ludGVyfHNoYXBlfHN0b3B8c3RyaWtldGhyb3VnaHxzdHJva2V8dGV4dCg/IUwpfHRyYW5zZm9ybXx1bmRlcmxpbmV8dW5pY29kZXx1bml0c3x2fHZlY3Rvcnx2ZXJ0fHdvcmR8d3JpdGluZ3x4KD8hQykpW0EtWl0vLHc3PS9eb24oQW5pfFRyYXxUb3V8QmVmb3JlSW5wfENvbXBvKS8sVDc9L1tBLVowLTldL2csSTc9dHlwZW9mIGRvY3VtZW50PCJ1IixFNz1mdW5jdGlvbigkKXtyZXR1cm4odHlwZW9mIFN5bWJvbDwidSImJnR5cGVvZiBTeW1ib2woKT09InN5bWJvbCI/L2ZpbHxjaGV8cmFkLzovZmlsfGNoZXxyYS8pLnRlc3QoJCl9O2Z1bmN0aW9uIHk3KCQsSixRKXtyZXR1cm4gSi5fX2s9PW51bGwmJihKLnRleHRDb250ZW50PSIiKSx4MCgkLEopLHR5cGVvZiBRPT0iZnVuY3Rpb24iJiZRKCksJD8kLl9fYzpudWxsfWZ1bmN0aW9uIGI3KCQsSixRKXtyZXR1cm4gRzUoJCxKKSx0eXBlb2YgUT09ImZ1bmN0aW9uIiYmUSgpLCQ/JC5fX2M6bnVsbH1vMS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD0hMCxbImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJjb21wb25lbnRXaWxsVXBkYXRlIl0uZm9yRWFjaChmdW5jdGlvbigkKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobzEucHJvdG90eXBlLCQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1siVU5TQUZFXyIrJF19LHNldDpmdW5jdGlvbihKKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywkLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Sn0pfX0pfSk7dmFyIFE5PXMuZXZlbnQ7cy5ldmVudD1mdW5jdGlvbigkKXtyZXR1cm4gUTkmJigkPVE5KCQpKSwkLnBlcnNpc3Q9ZnVuY3Rpb24oKXt9LCQuaXNQcm9wYWdhdGlvblN0b3BwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWxCdWJibGV9LCQuaXNEZWZhdWx0UHJldmVudGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFByZXZlbnRlZH0sJC5uYXRpdmVFdmVudD0kfTt2YXIgVTMsUzc9e2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbGFzc319LFo5PXMudm5vZGU7cy52bm9kZT1mdW5jdGlvbigkKXt0eXBlb2YgJC50eXBlPT0ic3RyaW5nIiYmZnVuY3Rpb24oSil7dmFye3Byb3BzOlEsdHlwZTpafT1KLEs9e30sWT1aLmluZGV4T2YoIi0iKT09LTE7Zm9yKHZhciBxIGluIFEpe3ZhciBHPVFbcV07aWYoIShxPT09InZhbHVlIiYmKCJkZWZhdWx0VmFsdWUiaW4gUSkmJkc9PW51bGx8fEk3JiZxPT09ImNoaWxkcmVuIiYmWj09PSJub3NjcmlwdCJ8fHE9PT0iY2xhc3MifHxxPT09ImNsYXNzTmFtZSIpKXt2YXIgTj1xLnRvTG93ZXJDYXNlKCk7cT09PSJkZWZhdWx0VmFsdWUiJiYidmFsdWUiaW4gUSYmUS52YWx1ZT09bnVsbD9xPSJ2YWx1ZSI6cT09PSJkb3dubG9hZCImJkc9PT0hMD9HPSIiOk49PT0idHJhbnNsYXRlIiYmRz09PSJubyI/Rz0hMTpOWzBdPT09Im8iJiZOWzFdPT09Im4iP049PT0ib25kb3VibGVjbGljayI/cT0ib25kYmxjbGljayI6TiE9PSJvbmNoYW5nZSJ8fFohPT0iaW5wdXQiJiZaIT09InRleHRhcmVhInx8RTcoUS50eXBlKT9OPT09Im9uZm9jdXMiP3E9Im9uZm9jdXNpbiI6Tj09PSJvbmJsdXIiP3E9Im9uZm9jdXNvdXQiOnc3LnRlc3QocSkmJihxPU4pOk49cT0ib25pbnB1dCI6WSYmRDcudGVzdChxKT9xPXEucmVwbGFjZShUNywiLSQmIikudG9Mb3dlckNhc2UoKTpHPT09bnVsbCYmKEc9dm9pZCAwKSxOPT09Im9uaW5wdXQiJiZLW3E9Tl0mJihxPSJvbmlucHV0Q2FwdHVyZSIpLEtbcV09R319Wj09InNlbGVjdCImJihLLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KEsudmFsdWUpJiYoSy52YWx1ZT1YMChRLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKEIpe0IucHJvcHMuc2VsZWN0ZWQ9Sy52YWx1ZS5pbmRleE9mKEIucHJvcHMudmFsdWUpIT0tMX0pKSxLLmRlZmF1bHRWYWx1ZSE9bnVsbCYmKEsudmFsdWU9WDAoUS5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbihCKXtCLnByb3BzLnNlbGVjdGVkPUsubXVsdGlwbGU/Sy5kZWZhdWx0VmFsdWUuaW5kZXhPZihCLnByb3BzLnZhbHVlKSE9LTE6Sy5kZWZhdWx0VmFsdWU9PUIucHJvcHMudmFsdWV9KSkpLFEuY2xhc3MmJiFRLmNsYXNzTmFtZT8oSy5jbGFzcz1RLmNsYXNzLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLLCJjbGFzc05hbWUiLFM3KSk6US5jbGFzc05hbWUmJihLLmNsYXNzPUsuY2xhc3NOYW1lPVEuY2xhc3NOYW1lKSxKLnByb3BzPUt9KCQpLCQuJCR0eXBlb2Y9SDksWjkmJlo5KCQpfTt2YXIgWDk9cy5fX3I7cy5fX3I9ZnVuY3Rpb24oJCl7WDkmJlg5KCQpLFUzPSQuX19jfTt2YXIgSzk9cy5kaWZmZWQ7cy5kaWZmZWQ9ZnVuY3Rpb24oJCl7SzkmJks5KCQpO3Zhcntwcm9wczpKLF9fZTpRfT0kO1EhPW51bGwmJiQudHlwZT09PSJ0ZXh0YXJlYSImJiJ2YWx1ZSJpbiBKJiZKLnZhbHVlIT09US52YWx1ZSYmKFEudmFsdWU9Si52YWx1ZT09bnVsbD8iIjpKLnZhbHVlKSxVMz1udWxsfTt2YXIgeDc9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6e2N1cnJlbnQ6e3JlYWRDb250ZXh0OmZ1bmN0aW9uKCQpe3JldHVybiBVMy5fX25bJC5fX2NdLnByb3BzLnZhbHVlfSx1c2VDYWxsYmFjazpELHVzZUNvbnRleHQ6VTAsdXNlRGVidWdWYWx1ZTpONSx1c2VEZWZlcnJlZFZhbHVlOlY5LHVzZUVmZmVjdDpiLHVzZUlkOlEyLHVzZUltcGVyYXRpdmVIYW5kbGU6QjUsdXNlSW5zZXJ0aW9uRWZmZWN0Ok45LHVzZUxheW91dEVmZmVjdDpUMCx1c2VNZW1vOlQxLHVzZVJlZHVjZXI6ZDAsdXNlUmVmOlQsdXNlU3RhdGU6QSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpxOSx1c2VUcmFuc2l0aW9uOkI5fX19O2Z1bmN0aW9uIGo3KCQpe3JldHVybiB1MS5iaW5kKG51bGwsJCl9ZnVuY3Rpb24gVTUoJCl7cmV0dXJuISEkJiYkLiQkdHlwZW9mPT09SDl9ZnVuY3Rpb24gdjcoJCl7cmV0dXJuIFU1KCQpJiYkLnR5cGU9PT1aMX1mdW5jdGlvbiBSNygkKXtyZXR1cm4hISQmJnR5cGVvZiAkLmRpc3BsYXlOYW1lPT0ic3RyaW5nIiYmJC5kaXNwbGF5TmFtZS5pbmRleE9mKCJNZW1vKCIpPT0wfWZ1bmN0aW9uIGg3KCQpe3JldHVybiBVNSgkKT9LMy5hcHBseShudWxsLGFyZ3VtZW50cyk6JH1mdW5jdGlvbiBnNygkKXtyZXR1cm4hISQuX19rJiYoeDAobnVsbCwkKSwhMCl9ZnVuY3Rpb24gZjcoJCl7cmV0dXJuICQmJigkLmJhc2V8fCQubm9kZVR5cGU9PT0xJiYkKXx8bnVsbH12YXIgbTc9ZnVuY3Rpb24oJCxKKXtyZXR1cm4gJChKKX0scDc9ZnVuY3Rpb24oJCxKKXt2YXIgUT1zLmRlYm91bmNlUmVuZGVyaW5nO3MuZGVib3VuY2VSZW5kZXJpbmc9ZnVuY3Rpb24oSyl7cmV0dXJuIEsoKX07dmFyIFo9JChKKTtyZXR1cm4gcy5kZWJvdW5jZVJlbmRlcmluZz1RLFp9LHU3PVU1LGY9e3VzZVN0YXRlOkEsdXNlSWQ6UTIsdXNlUmVkdWNlcjpkMCx1c2VFZmZlY3Q6Yix1c2VMYXlvdXRFZmZlY3Q6VDAsdXNlSW5zZXJ0aW9uRWZmZWN0Ok45LHVzZVRyYW5zaXRpb246QjksdXNlRGVmZXJyZWRWYWx1ZTpWOSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpxOSxzdGFydFRyYW5zaXRpb246RzksdXNlUmVmOlQsdXNlSW1wZXJhdGl2ZUhhbmRsZTpCNSx1c2VNZW1vOlQxLHVzZUNhbGxiYWNrOkQsdXNlQ29udGV4dDpVMCx1c2VEZWJ1Z1ZhbHVlOk41LHZlcnNpb246IjE4LjMuMSIsQ2hpbGRyZW46TzcscmVuZGVyOnk3LGh5ZHJhdGU6YjcsdW5tb3VudENvbXBvbmVudEF0Tm9kZTpnNyxjcmVhdGVQb3J0YWw6ejMsY3JlYXRlRWxlbWVudDp1MSxjcmVhdGVDb250ZXh0OnowLGNyZWF0ZUZhY3Rvcnk6ajcsY2xvbmVFbGVtZW50Omg3LGNyZWF0ZVJlZjpfMixGcmFnbWVudDpaMSxpc1ZhbGlkRWxlbWVudDpVNSxpc0VsZW1lbnQ6dTcsaXNGcmFnbWVudDp2Nyxpc01lbW86UjcsZmluZERPTU5vZGU6ZjcsQ29tcG9uZW50Om8xLFB1cmVDb21wb25lbnQ6TDMsbWVtbzpjMCxmb3J3YXJkUmVmOlcwLGZsdXNoU3luYzpwNyx1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczptNyxTdHJpY3RNb2RlOloxLFN1c3BlbnNlOno1LFN1c3BlbnNlTGlzdDpQMixsYXp5Olc3LF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOng3fTt2YXIgRDI9e3BvcnRyYWl0OiJsYW5kc2NhcGVfbGVmdCIsbGFuZHNjYXBlX2xlZnQ6InBvcnRyYWl0X3Vwc2lkZV9kb3duIixwb3J0cmFpdF91cHNpZGVfZG93bjoibGFuZHNjYXBlX3JpZ2h0IixsYW5kc2NhcGVfcmlnaHQ6InBvcnRyYWl0In0sSDM9e3BvcnRyYWl0OiJsYW5kc2NhcGVfcmlnaHQiLGxhbmRzY2FwZV9yaWdodDoicG9ydHJhaXRfdXBzaWRlX2Rvd24iLHBvcnRyYWl0X3Vwc2lkZV9kb3duOiJsYW5kc2NhcGVfbGVmdCIsbGFuZHNjYXBlX2xlZnQ6InBvcnRyYWl0In07dmFyIFoyPTM7ZnVuY3Rpb24gQzMoJCl7cmV0dXJuICQ+PTAuOTM/Mzp2b2lkIDB9ZnVuY3Rpb24gRjMoJCl7cmV0dXJuICQ9PT0ibGFuZHNjYXBlX2xlZnQifHwkPT09ImxhbmRzY2FwZV9yaWdodCJ9ZnVuY3Rpb24gZjAoJCl7cmV0dXJuISEkJiYoRjMoJC5vcmllbnRhdGlvbil8fCQud2lkdGg+JC5oZWlnaHQpfWZ1bmN0aW9uIFgyKCQpe2lmKCEkfHwkLndpZHRoPD0wfHwkLmhlaWdodDw9MClyZXR1cm4gbnVsbDtsZXQgSj1GMygkLm9yaWVudGF0aW9uKXx8JC53aWR0aD4kLmhlaWdodCxRPUo/TWF0aC5tYXgoJC53aWR0aCwkLmhlaWdodCk6TWF0aC5taW4oJC53aWR0aCwkLmhlaWdodCksWj1KP01hdGgubWluKCQud2lkdGgsJC5oZWlnaHQpOk1hdGgubWF4KCQud2lkdGgsJC5oZWlnaHQpO2lmKFE9PT0kLndpZHRoJiZaPT09JC5oZWlnaHQpcmV0dXJuICQ7cmV0dXJuey4uLiQsd2lkdGg6USxoZWlnaHQ6Wn19ZnVuY3Rpb24gSzIoJCl7bGV0IEo9WDIoJCksUT1DOSgkPy5vcmllbnRhdGlvbiksWj1NYXRoLmFicyhRKT09PTkwLEs9ISEkJiYkLndpZHRoPiQuaGVpZ2h0LFk9UT09PTE4MHx8WiYmIUs7cmV0dXJue2Rpc3BsYXlDb25maWc6Sixyb3RhdGlvbkRlZ3JlZXM6WT9ROjAsbmVlZHNDc3NSb3RhdGlvbjpZLGlucHV0T3JpZW50YXRpb246WT8kPy5vcmllbnRhdGlvbjp2b2lkIDB9fWZ1bmN0aW9uIEM5KCQpe3N3aXRjaCgkKXtjYXNlImxhbmRzY2FwZV9sZWZ0IjpyZXR1cm4gOTA7Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnJldHVybi05MDtjYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpyZXR1cm4gMTgwO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIFkyKCQsSixRKXtzd2l0Y2goJCl7Y2FzZSJsYW5kc2NhcGVfbGVmdCI6cmV0dXJue3g6USx5OjEtSn07Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnJldHVybnt4OjEtUSx5Okp9O2Nhc2UicG9ydHJhaXRfdXBzaWRlX2Rvd24iOnJldHVybnt4OjEtSix5OjEtUX07ZGVmYXVsdDpyZXR1cm57eDpKLHk6UX19fWZ1bmN0aW9uIEY5KCQsSixRKXtzd2l0Y2goJCl7Y2FzZSJsYW5kc2NhcGVfbGVmdCI6cmV0dXJue2R4OlEsZHk6LUp9O2Nhc2UibGFuZHNjYXBlX3JpZ2h0IjpyZXR1cm57ZHg6LVEsZHk6Sn07Y2FzZSJwb3J0cmFpdF91cHNpZGVfZG93biI6cmV0dXJue2R4Oi1KLGR5Oi1RfTtkZWZhdWx0OnJldHVybntkeDpKLGR5OlF9fX1mdW5jdGlvbiBrMygkLEope3N3aXRjaCgkKXtjYXNlImxhbmRzY2FwZV9sZWZ0Ijpzd2l0Y2goSil7Y2FzZSAxOnJldHVybiAzO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDI6cmV0dXJuIDE7Y2FzZSAzOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIEp9Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnN3aXRjaChKKXtjYXNlIDE6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiAzO2Nhc2UgMjpyZXR1cm4gNDtjYXNlIDM6cmV0dXJuIDE7ZGVmYXVsdDpyZXR1cm4gSn1jYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpzd2l0Y2goSil7Y2FzZSAxOnJldHVybiA0O2Nhc2UgNDpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDM7Y2FzZSAzOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIEp9ZGVmYXVsdDpyZXR1cm4gSn19dmFyIGs5PTE2O2Z1bmN0aW9uIHcyKCQsSixRKXtpZighTnVtYmVyLmlzRmluaXRlKCQpKXJldHVybiBudWxsO2xldCBaPU51bWJlci5pc0Zpbml0ZShRKSYmUT4wP1E6MSxLPUo9PT0xPyQqMTY6Sj09PTI/JCpaOiQsWT1NYXRoLm1heCgtMjAwLE1hdGgubWluKDIwMCxLKSk7cmV0dXJuIE1hdGguYWJzKFkpPDAuMDE/bnVsbDpZfWZ1bmN0aW9uIE0zKCQsSixRKXtpZighTnVtYmVyLmlzRmluaXRlKCQpKXJldHVybiAwO2xldCBaPU51bWJlci5pc0Zpbml0ZShRKSYmUT4wP1E6MTtpZihKPT09MSlyZXR1cm4gJCprOTtpZihKPT09MilyZXR1cm4gJCpaO3JldHVybiAkfWZ1bmN0aW9uIE05KCQsSixRKXtpZighSnx8Si53aWR0aDw9MHx8Si5oZWlnaHQ8PTApcmV0dXJuIG51bGw7bGV0IFo9Si5vcmllbnRhdGlvbj09PXZvaWQgMCYmJD8ub3JpZW50YXRpb24/ey4uLkosb3JpZW50YXRpb246JC5vcmllbnRhdGlvbn06SjtpZigkJiYkLndpZHRoPT09Wi53aWR0aCYmJC5oZWlnaHQ9PT1aLmhlaWdodCYmJC5vcmllbnRhdGlvbj09PVoub3JpZW50YXRpb24pcmV0dXJuIG51bGw7cmV0dXJue2NvbmZpZzpaLG5vdGlmeVBhcmVudDpRIT09ImV4dGVybmFsIn19ZnVuY3Rpb24gTzkoe3N0cmVhbU1vZGU6JCxhdmNjU3VwcG9ydGVkOkosaGFzRXh0ZXJuYWxJbnB1dDpRLGhhc0V4dGVybmFsRnJhbWVzOlp9KXtsZXQgSz0kPT09ImF2Y2MiJiYhSj8ibWpwZWciOiQsWT1LPT09IndlYnJ0YyIscT1LPT09ImF2Y2MiLEc9Sz09PSJtanBlZyImJlo7cmV0dXJue2VmZmVjdGl2ZVN0cmVhbU1vZGU6Syx1c2VXZWJSdGM6WSx1c2VBdmNjOnEsZXh0ZXJuYWxJbnB1dDpRLGV4dGVybmFsTWpwZWc6RyxvcGVuRGlyZWN0Q29udHJvbFNvY2tldDohUSxvcGVuRGlyZWN0TWpwZWc6Sz09PSJtanBlZyImJiFHfX12YXIgbDc9e1sxXToiZGVzY3JpcHRpb24iLFsyXToia2V5ZnJhbWUiLFszXToiZGVsdGEiLFs0XToic2VlZCJ9O2NsYXNzIEg1e2J1ZmZlcj1uZXcgVWludDhBcnJheSg2NTUzNik7bGVuPTA7c3RhcnQ9MDthcHBlbmQoJCl7aWYodGhpcy5sZW4rJC5sZW5ndGg+dGhpcy5idWZmZXIubGVuZ3RoKXtpZih0aGlzLnN0YXJ0PjApdGhpcy5idWZmZXIuY29weVdpdGhpbigwLHRoaXMuc3RhcnQsdGhpcy5sZW4pLHRoaXMubGVuLT10aGlzLnN0YXJ0LHRoaXMuc3RhcnQ9MDtpZih0aGlzLmxlbiskLmxlbmd0aD50aGlzLmJ1ZmZlci5sZW5ndGgpe2xldCBKPXRoaXMuYnVmZmVyLmxlbmd0aDt3aGlsZShKPHRoaXMubGVuKyQubGVuZ3RoKUoqPTI7bGV0IFE9bmV3IFVpbnQ4QXJyYXkoSik7US5zZXQodGhpcy5idWZmZXIuc3ViYXJyYXkoMCx0aGlzLmxlbikpLHRoaXMuYnVmZmVyPVF9fXRoaXMuYnVmZmVyLnNldCgkLHRoaXMubGVuKSx0aGlzLmxlbis9JC5sZW5ndGh9cHVzaCgkKXtpZigkLmxlbmd0aD4wKXRoaXMuYXBwZW5kKCQpO2xldCBKPVtdLFE9dGhpcy5idWZmZXI7d2hpbGUodGhpcy5sZW4tdGhpcy5zdGFydD49NCl7bGV0IFo9dGhpcy5zdGFydCxLPShRW1pdPDwyNHxRW1orMV08PDE2fFFbWisyXTw8OHxRW1orM10pPj4+MDtpZih0aGlzLmxlbi1aLTQ8SylicmVhaztpZihLPDEpe3RoaXMuc3RhcnQrPTQ7Y29udGludWV9bGV0IFk9UVtaKzRdLHE9bDdbWV07aWYocSlKLnB1c2goe3R5cGU6cSxwYXlsb2FkOlEuc2xpY2UoWis1LForNCtLKX0pO3RoaXMuc3RhcnQrPTQrS31pZih0aGlzLnN0YXJ0PjApe2lmKHRoaXMuc3RhcnQ8dGhpcy5sZW4pdGhpcy5idWZmZXIuY29weVdpdGhpbigwLHRoaXMuc3RhcnQsdGhpcy5sZW4pO3RoaXMubGVuLT10aGlzLnN0YXJ0LHRoaXMuc3RhcnQ9MH1yZXR1cm4gSn1yZXNldCgpe3RoaXMubGVuPTAsdGhpcy5zdGFydD0wfX1mdW5jdGlvbiBPMygkKXtpZigkLmxlbmd0aDw0KXJldHVybiJhdmMxLjQyRTAxRSI7bGV0IEo9KFEpPT5RLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIik7cmV0dXJuImF2YzEuIitKKCRbMV0pK0ooJFsyXSkrSigkWzNdKX1mdW5jdGlvbiBvMCgpe3JldHVybiB0eXBlb2YgZ2xvYmFsVGhpczwidSImJnR5cGVvZiBnbG9iYWxUaGlzLlZpZGVvRGVjb2RlcjwidSJ9dmFyIGQ3PTEwMDAsYzc9MTY2Njc7ZnVuY3Rpb24gQTMoe3VybDokLGVuYWJsZWQ6SixjYW52YXNSZWY6USxvbkZpcnN0RnJhbWU6WixvbkZyYW1lOkssb25EZWNvZGVkRnJhbWU6WSxvbkVycm9yOnEsb25EZWNvZGVyRXJyb3I6R30pe2xldCBOPVQoe29uRmlyc3RGcmFtZTpaLG9uRnJhbWU6SyxvbkRlY29kZWRGcmFtZTpZLG9uRXJyb3I6cSxvbkRlY29kZXJFcnJvcjpHfSk7Ti5jdXJyZW50PXtvbkZpcnN0RnJhbWU6WixvbkZyYW1lOkssb25EZWNvZGVkRnJhbWU6WSxvbkVycm9yOnEsb25EZWNvZGVyRXJyb3I6R30sYigoKT0+e2lmKCFKfHwhJHx8IW8wKCkpcmV0dXJuO2xldCBCPW5ldyBBYm9ydENvbnRyb2xsZXIsTD1uZXcgSDUsVj0hMSxVPSExLHo9ITEsaz0wLEg9bnVsbCxDPW51bGwsRj0oKT0+IVYmJiFCLnNpZ25hbC5hYm9ydGVkLE89KG8pPT57aWYoTi5jdXJyZW50Lm9uRGVjb2RlckVycm9yKU4uY3VycmVudC5vbkRlY29kZXJFcnJvcigpO2Vsc2UgTi5jdXJyZW50Lm9uRXJyb3I/LihvKX0sST0obyxyLFExLE4xKT0+e2lmKCFGKCkpcmV0dXJuO2xldCBkPVEuY3VycmVudDtpZighZClyZXR1cm47aWYoZC53aWR0aCE9PXJ8fGQuaGVpZ2h0IT09UTEpZC53aWR0aD1yLGQuaGVpZ2h0PVExO2xldCB4PWQuZ2V0Q29udGV4dCgiMmQiKTtpZigheClyZXR1cm47aWYoeC5kcmF3SW1hZ2UobywwLDAscixRMSksTi5jdXJyZW50Lm9uRnJhbWU/LigpLE4xJiYheil6PSEwLE4uY3VycmVudC5vbkRlY29kZWRGcmFtZT8uKCk7aWYoIVUpVT0hMCxOLmN1cnJlbnQub25GaXJzdEZyYW1lPy4oKX0sdz0oKT0+bmV3IFZpZGVvRGVjb2Rlcih7b3V0cHV0OihvKT0+e3RyeXtpZihGKCkpSShvLG8uZGlzcGxheVdpZHRoLG8uZGlzcGxheUhlaWdodCwhMCl9ZmluYWxseXtvLmNsb3NlKCl9fSxlcnJvcjoobyk9Pk8oYGRlY29kZXI6ICR7by5tZXNzYWdlfWApfSksUz1hc3luYyhvKT0+e2xldCByPWF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFtvXSx7dHlwZToiaW1hZ2UvanBlZyJ9KSk7dHJ5e2lmKEYoKSlJKHIsci53aWR0aCxyLmhlaWdodCwhMSl9ZmluYWxseXtyLmNsb3NlKCl9fSxqPShvKT0+e2lmKCFDfHxDLnN0YXRlPT09ImNsb3NlZCIpQz13KCk7dHJ5e0MuY29uZmlndXJlKHtjb2RlYzpPMyhvKSxkZXNjcmlwdGlvbjpvLG9wdGltaXplRm9yOiJsYXRlbmN5IixoYXJkd2FyZUFjY2VsZXJhdGlvbjoicHJlZmVyLWhhcmR3YXJlIn0pfWNhdGNoKHIpe08oYGNvbmZpZzogJHtyLm1lc3NhZ2V9YCl9fSwkMT0obyxyKT0+e2lmKEM/LnN0YXRlIT09ImNvbmZpZ3VyZWQiKXJldHVybjt0cnl7Qy5kZWNvZGUobmV3IEVuY29kZWRWaWRlb0NodW5rKHt0eXBlOm89PT0ia2V5ZnJhbWUiPyJrZXkiOiJkZWx0YSIsdGltZXN0YW1wOmssZGF0YTpyfSkpLGsrPWM3fWNhdGNoe319LG09KG8scik9Pntzd2l0Y2gobyl7Y2FzZSJzZWVkIjpTKHIpLmNhdGNoKCgpPT57fSk7cmV0dXJuO2Nhc2UiZGVzY3JpcHRpb24iOmoocik7cmV0dXJuO2Nhc2Uia2V5ZnJhbWUiOmNhc2UiZGVsdGEiOiQxKG8scik7cmV0dXJufX0sYz0oKT0+e2lmKCFGKCl8fEgpcmV0dXJuO0g9c2V0VGltZW91dCgoKT0+e0g9bnVsbCxuKCl9LGQ3KX0sbj1hc3luYygpPT57TC5yZXNldCgpO3RyeXtsZXQgcj0oYXdhaXQgZmV0Y2goYCR7JH0vc3RyZWFtLmF2Y2NgLHtzaWduYWw6Qi5zaWduYWx9KSkuYm9keT8uZ2V0UmVhZGVyKCk7aWYoIXIpcmV0dXJuO2Zvcig7Oyl7bGV0e2RvbmU6UTEsdmFsdWU6TjF9PWF3YWl0IHIucmVhZCgpO2lmKFExKWJyZWFrO2lmKCFOMSljb250aW51ZTtmb3IobGV0IGQgb2YgTC5wdXNoKE4xKSltKGQudHlwZSxkLnBheWxvYWQpfX1jYXRjaHt9ZmluYWxseXtpZihGKCkpYygpfX07cmV0dXJuIG4oKSwoKT0+e2lmKFY9ITAsSCljbGVhclRpbWVvdXQoSCk7aWYoQi5hYm9ydCgpLEwucmVzZXQoKSxDJiZDLnN0YXRlIT09ImNsb3NlZCIpdHJ5e0MuY2xvc2UoKX1jYXRjaHt9Qz1udWxsfX0sWyQsSixRXSl9ZnVuY3Rpb24gQTkoJCxKKXtsZXQgUT0wLFo9MCxLPSgpPT57bGV0e3ZpZGVvV2lkdGg6WSx2aWRlb0hlaWdodDpxfT0kO2lmKFk8PTB8fHE8PTB8fFk9PT1RJiZxPT09WilyZXR1cm47UT1ZLFo9cSxKKHt3aWR0aDpZLGhlaWdodDpxfSl9O3JldHVybiAkLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIixLKSwkLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsSyksSygpLHtjaGVjazpLLGRpc2Nvbm5lY3QoKXskLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIixLKSwkLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsSyl9fX12YXIgbzc9MDtmdW5jdGlvbiBYKCQsSixRLFosSyxZKXtKfHwoSj17fSk7dmFyIHEsRyxOPUo7aWYoInJlZiJpbiBOKWZvcihHIGluIE49e30sSilHPT0icmVmIj9xPUpbR106TltHXT1KW0ddO3ZhciBCPXt0eXBlOiQscHJvcHM6TixrZXk6USxyZWY6cSxfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fYzpudWxsLGNvbnN0cnVjdG9yOnZvaWQgMCxfX3Y6LS1vNyxfX2k6LTEsX191OjAsX19zb3VyY2U6SyxfX3NlbGY6WX07aWYodHlwZW9mICQ9PSJmdW5jdGlvbiImJihxPSQuZGVmYXVsdFByb3BzKSlmb3IoRyBpbiBxKU5bR109PT12b2lkIDAmJihOW0ddPXFbR10pO3JldHVybiBzLnZub2RlJiZzLnZub2RlKEIpLEJ9dmFyIFc5PWB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnJTNFJTNDY2lyY2xlIGN4PScxMicgY3k9JzEyJyByPSc5JyBmaWxsPSdyZ2JhKDI1NSwyNTUsMjU1LDAuNDUpJyBzdHJva2U9J3JnYmEoMCwwLDAsMC41NSknIHN0cm9rZS13aWR0aD0nMS4yNScgZmlsdGVyPSdkcm9wLXNoYWRvdygwIDFweCAycHggcmdiYSgwLDAsMCwwLjQ1KSknLyUzRSUzQy9zdmclM0UiKSAxMiAxMiwgcG9pbnRlcmAscjc9MS4wMDQsaTc9MyxhNz00LG43PTUsczc9MTAsdDc9MTE7ZnVuY3Rpb24gQzUoe3VybDokLHdzVXJsOkosc3R5bGU6USxpbWFnZVN0eWxlOlosY2xhc3NOYW1lOkssb25Ib21lUHJlc3M6WSxvblN0cmVhbVRvdWNoOnEsb25TdHJlYW1NdWx0aVRvdWNoOkcsb25TdHJlYW1CdXR0b246TixvblN0cmVhbURpZ2l0YWxDcm93bjpCLG9uU3RyZWFtU2Nyb2xsOkwsZW5hYmxlRGlnaXRhbENyb3duOlYsc3Vic2NyaWJlRnJhbWU6VSxzdHJlYW1GcmFtZTp6LHN0cmVhbUNvbmZpZzprLG9uU2NyZWVuQ29uZmlnQ2hhbmdlOkgsaGlkZUNvbnRyb2xzOkMsb25TdHJlYW1pbmdDaGFuZ2U6Rixjb25uZWN0aW9uUXVhbGl0eTpPLHN0cmVhbU1vZGU6ST0iYXZjYyIsd2ViUnRjU3RyZWFtOncsb25XZWJSdGNGcmFtZTpTLHN0cmVhbUVycm9yOmosb25BdmNjRXJyb3I6JDEsb25BdmNjRGVjb2RlZEZyYW1lOm19KXtsZXR7dXNlV2ViUnRjOmMsdXNlQXZjYzpuLGV4dGVybmFsSW5wdXQ6byxleHRlcm5hbE1qcGVnOnIsb3BlbkRpcmVjdENvbnRyb2xTb2NrZXQ6UTEsb3BlbkRpcmVjdE1qcGVnOk4xfT1POSh7c3RyZWFtTW9kZTpJLGF2Y2NTdXBwb3J0ZWQ6bzAoKSxoYXNFeHRlcm5hbElucHV0OiEhcSxoYXNFeHRlcm5hbEZyYW1lczohIVV9KSxkPVQobnVsbCkseD1UKG51bGwpLGE9VChudWxsKSxLMT1UKG51bGwpLEwxPVQobnVsbCksSjE9VChudWxsKSxZMT1UKG51bGwpLFtDMSx5XT1BKCExKSxbZyxfXT1BKG51bGwpLFtwLHVdPUEobnVsbCksdj1UKG51bGwpLEcxPVQoITEpLHoxPVQoSCk7ejEuY3VycmVudD1IO2xldCBBMT1UKG51bGwpLFtXMSxpMV09QShudWxsKTtiKCgpPT57bGV0IFc9QTEuY3VycmVudDtpZighV3x8dHlwZW9mIFJlc2l6ZU9ic2VydmVyPiJ1IilyZXR1cm47bGV0IE09bmV3IFJlc2l6ZU9ic2VydmVyKChFKT0+e2xldCBSPUVbMF0/LmNvbnRlbnRSZWN0O2lmKFIpaTEoe3dpZHRoOlIud2lkdGgsaGVpZ2h0OlIuaGVpZ2h0fSl9KTtyZXR1cm4gTS5vYnNlcnZlKFcpLCgpPT5NLmRpc2Nvbm5lY3QoKX0sW10pO2xldFtPMSxqMV09QSgwKSxfMT1UKDApLFtsMSxVMV09QSghMSksSTE9RCgoVyxNPSJyZXBvcnRlZCIpPT57aWYoTT09PSJtZWRpYSImJkcxLmN1cnJlbnQpcmV0dXJuO2lmKE0hPT0ibWVkaWEiJiZXJiZXLndpZHRoPjAmJlcuaGVpZ2h0PjApRzEuY3VycmVudD0hMDtsZXQgRT1NOSh2LmN1cnJlbnQsVyxNKTtpZighRSlyZXR1cm47aWYodi5jdXJyZW50PUUuY29uZmlnLHUoRS5jb25maWcpLEUubm90aWZ5UGFyZW50KXoxLmN1cnJlbnQ/LihFLmNvbmZpZyl9LFtdKTtiKCgpPT57aWYoIWMpcmV0dXJuO2lmKGopeSghMSksXyhqKTtlbHNlIF8obnVsbCl9LFtqLGNdKTtsZXQgZDE9VChudWxsKTtiKCgpPT57aWYoTz09PSJwb29yIil7aWYoVTEoITApLGQxLmN1cnJlbnQpY2xlYXJUaW1lb3V0KGQxLmN1cnJlbnQpO2QxLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e1UxKCExKSxkMS5jdXJyZW50PW51bGx9LDMwMDApfWVsc2UgaWYoVTEoITEpLGQxLmN1cnJlbnQpY2xlYXJUaW1lb3V0KGQxLmN1cnJlbnQpLGQxLmN1cnJlbnQ9bnVsbDtyZXR1cm4oKT0+e2lmKGQxLmN1cnJlbnQpY2xlYXJUaW1lb3V0KGQxLmN1cnJlbnQpfX0sW09dKTtsZXQgdDE9YCR7JH0vc3RyZWFtLm1qcGVnYDtiKCgpPT57aWYoIWMpcmV0dXJuO2xldCBXPWEuY3VycmVudDtpZighVylyZXR1cm47bGV0IE09ITEsRT0hMSxSPTAsdD1udWxsLHExPSgpPT57aWYoRXx8TSlyZXR1cm47dD8uY2hlY2soKSxNPSEwLFM/LigpLHkoITApLF8obnVsbCl9LEgxPSgpPT57aWYoRSlyZXR1cm47dD8uY2hlY2soKSxuMS5jdXJyZW50PURhdGUubm93KCksXzEuY3VycmVudCsrLHExKCkseSghMCksUj1XLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soSDEpfSxQMT0oKT0+e2lmKEUpcmV0dXJuO3Q/LmNoZWNrKCksbjEuY3VycmVudD1EYXRlLm5vdygpLHExKCkseSghMCl9O2lmKFcuc3JjT2JqZWN0PXc/P251bGwsdyl7aWYodD1BOShXLChSMCk9PntJMShSMCwibWVkaWEiKX0pLHkoITEpLFcuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkZGF0YSIscTEse29uY2U6ITB9KSx0eXBlb2YgVy5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrPT09ImZ1bmN0aW9uIilSPVcucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhIMSk7ZWxzZSBXLmFkZEV2ZW50TGlzdGVuZXIoInRpbWV1cGRhdGUiLFAxKTtXLnBsYXkoKS5jYXRjaCgoKT0+e30pfWVsc2UgeSghMSk7cmV0dXJuKCk9PntpZihFPSEwLFcucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZGVkZGF0YSIscTEpLFcucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGltZXVwZGF0ZSIsUDEpLHQ/LmRpc2Nvbm5lY3QoKSxSJiZ0eXBlb2YgVy5jYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2s9PT0iZnVuY3Rpb24iKVcuY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrKFIpO1cuc3JjT2JqZWN0PW51bGx9fSxbYyx3LFMsSTFdKSxiKCgpPT57RzEuY3VycmVudD0hMSx2LmN1cnJlbnQ9bnVsbCx1KG51bGwpfSxbJCxKXSk7bGV0IGgxPVQoRik7aDEuY3VycmVudD1GLGIoKCk9PntoMS5jdXJyZW50Py4oQzEpfSxbQzFdKSxiKCgpPT57aWYoaylJMShrLCJleHRlcm5hbCIpfSxbayxJMSwkXSk7bGV0IGExPVQoITEpO2ExLmN1cnJlbnQ9QzE7bGV0ICQwPVQobnVsbCksVjA9VChudWxsKTtiKCgpPT57aWYoIXJ8fCFVKXJldHVybjtsZXQgTT1zZXRUaW1lb3V0KCgpPT57aWYoIWExLmN1cnJlbnQpXygiU3RyZWFtIGlzIG5vdCBwcm9kdWNpbmcgZnJhbWVzLiBUaGUgc2ltdWxhdG9yIG1heSBoYXZlIHN0b3BwZWQg4oCUIHRyeSByZWNvbm5lY3RpbmcuIil9LDYwMDApLEU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uIHQoKXtsZXQgcTE9JDAuY3VycmVudDtpZihxMSl7JDAuY3VycmVudD1udWxsO2xldCBIMT1LMS5jdXJyZW50O2lmKEgxKXtpZihWMC5jdXJyZW50KVVSTC5yZXZva2VPYmplY3RVUkwoVjAuY3VycmVudCk7VjAuY3VycmVudD1xMSxIMS5zcmM9cTEsXzEuY3VycmVudCsrfWVsc2UgVVJMLnJldm9rZU9iamVjdFVSTChxMSl9RT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCl9KSxSPVUoKHQpPT57aWYobjEuY3VycmVudD1EYXRlLm5vdygpLCQwLmN1cnJlbnQpVVJMLnJldm9rZU9iamVjdFVSTCgkMC5jdXJyZW50KTtpZigkMC5jdXJyZW50PXQsIWExLmN1cnJlbnQpY2xlYXJUaW1lb3V0KE0pLHkoITApLF8obnVsbCl9KTtyZXR1cm4oKT0+e2lmKGNsZWFyVGltZW91dChNKSxjYW5jZWxBbmltYXRpb25GcmFtZShFKSxSPy4oKSwkMC5jdXJyZW50KVVSTC5yZXZva2VPYmplY3RVUkwoJDAuY3VycmVudCksJDAuY3VycmVudD1udWxsO2lmKFYwLmN1cnJlbnQpVVJMLnJldm9rZU9iamVjdFVSTChWMC5jdXJyZW50KSxWMC5jdXJyZW50PW51bGx9fSxbcixVXSk7bGV0IHMxPUQoKCk9PntuMS5jdXJyZW50PURhdGUubm93KCkseSghMCksXyhudWxsKX0sW10pLHYwPUQoKCk9PntpZihfMS5jdXJyZW50KyssbjEuY3VycmVudD1EYXRlLm5vdygpLCFhMS5jdXJyZW50KXkoITApLF8obnVsbCl9LFtdKTtBMyh7dXJsOiQsZW5hYmxlZDpuLGNhbnZhc1JlZjp4LG9uRmlyc3RGcmFtZTpzMSxvbkZyYW1lOnYwLG9uRGVjb2RlZEZyYW1lOm0sb25FcnJvcjpfLG9uRGVjb2RlckVycm9yOiQxfSk7bGV0IG0xPUQoKFcpPT57bGV0IE09SzIodi5jdXJyZW50KS5pbnB1dE9yaWVudGF0aW9uLEU9WTIoTSxXLngsVy55KSxSPVcuZWRnZT09PXZvaWQgMD92b2lkIDA6azMoTSxXLmVkZ2UpLHQ9Uj09PXZvaWQgMD97dHlwZTpXLnR5cGUsLi4uRX06e3R5cGU6Vy50eXBlLC4uLkUsZWRnZTpSfTtpZihvKXtxPy4odCk7cmV0dXJufWxldCBxMT1ZMS5jdXJyZW50O2lmKCFxMXx8cTEucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5PUEVOKXJldHVybjtsZXQgSDE9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHQpKSxQMT1uZXcgVWludDhBcnJheSgxK0gxLmxlbmd0aCk7UDFbMF09aTcsUDEuc2V0KEgxLDEpLHExLnNlbmQoUDEpfSxbbyxxXSkscTA9RCgoVyk9PntpZihvKXtOPy4oVyk7cmV0dXJufWxldCBNPVkxLmN1cnJlbnQ7aWYoIU18fE0ucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5PUEVOKXJldHVybjtsZXQgRT1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoe2J1dHRvbjpXfSkpLFI9bmV3IFVpbnQ4QXJyYXkoMStFLmxlbmd0aCk7UlswXT1hNyxSLnNldChFLDEpLE0uc2VuZChSKX0sW28sTl0pLEowPUQoKFcpPT57aWYoIU51bWJlci5pc0Zpbml0ZShXKXx8Vz09PTApcmV0dXJuO2lmKG8pe0I/LihXKTtyZXR1cm59bGV0IE09WTEuY3VycmVudDtpZighTXx8TS5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pcmV0dXJuO2xldCBFPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeSh7ZGVsdGE6V30pKSxSPW5ldyBVaW50OEFycmF5KDErRS5sZW5ndGgpO1JbMF09czcsUi5zZXQoRSwxKSxNLnNlbmQoUil9LFtvLEJdKSxfMD1EKChXLE0sRSxSKT0+e2lmKCFOdW1iZXIuaXNGaW5pdGUoVyl8fCFOdW1iZXIuaXNGaW5pdGUoTSl8fFc9PT0wJiZNPT09MClyZXR1cm47bGV0IHQ9SzIodi5jdXJyZW50KS5pbnB1dE9yaWVudGF0aW9uLHExPUY5KHQsVyxNKSxIMT1ZMih0LEUsUiksUDE9e2R4OnExLmR4LGR5OnExLmR5LHg6SDEueCx5OkgxLnl9O2lmKG8pe0w/LihQMSk7cmV0dXJufWxldCBBMD1ZMS5jdXJyZW50O2lmKCFBMHx8QTAucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5PUEVOKXJldHVybjtsZXQgUjA9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KFAxKSksbDA9bmV3IFVpbnQ4QXJyYXkoMStSMC5sZW5ndGgpO2wwWzBdPXQ3LGwwLnNldChSMCwxKSxBMC5zZW5kKGwwKX0sW28sTF0pLGMxPUQoKFcpPT57bGV0IE09SzIodi5jdXJyZW50KS5pbnB1dE9yaWVudGF0aW9uLEU9WTIoTSxXLngxLFcueTEpLFI9WTIoTSxXLngyLFcueTIpLHQ9e3R5cGU6Vy50eXBlLHgxOkUueCx5MTpFLnkseDI6Ui54LHkyOlIueX07aWYobyl7Rz8uKHQpO3JldHVybn1sZXQgcTE9WTEuY3VycmVudDtpZighcTF8fHExLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTilyZXR1cm47bGV0IEgxPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeSh0KSksUDE9bmV3IFVpbnQ4QXJyYXkoMStIMS5sZW5ndGgpO1AxWzBdPW43LFAxLnNldChIMSwxKSxxMS5zZW5kKFAxKX0sW28sR10pO2IoKCk9PntpZighUTEmJiFOMSYmIW4pcmV0dXJuO2xldCBXPW51bGw7aWYoUTEpe2xldCBxMT1KPz8kLnJlcGxhY2UoL15odHRwLywid3MiKSsiL3dzIjtXPW5ldyBXZWJTb2NrZXQocTEpLFcuYmluYXJ5VHlwZT0iYXJyYXlidWZmZXIiLFkxLmN1cnJlbnQ9VyxXLm9ubWVzc2FnZT0oSDEpPT57aWYoIShIMS5kYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybjtsZXQgUDE9bmV3IFVpbnQ4QXJyYXkoSDEuZGF0YSk7aWYoUDEubGVuZ3RoPDF8fFAxWzBdIT09MTMwKXJldHVybjt0cnl7STEoSlNPTi5wYXJzZShuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoUDEuc3ViYXJyYXkoMSkpKSl9Y2F0Y2h7fX0sVy5vbm9wZW49KCk9Pl8obnVsbCksVy5vbmNsb3NlPSgpPT55KCExKSxXLm9uZXJyb3I9KCk9PntfKCJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQiKSx5KCExKX19bGV0IE09bnx8TjE/c2V0SW50ZXJ2YWwoKCk9PntqMShfMS5jdXJyZW50KSxfMS5jdXJyZW50PTB9LDEwMDApOm51bGwsRT1OMT9uZXcgQWJvcnRDb250cm9sbGVyOm51bGwsUj0hMSx0PU4xP3NldFRpbWVvdXQoKCk9PntpZighUilfKCJTdHJlYW0gaXMgbm90IHByb2R1Y2luZyBmcmFtZXMuIFRoZSBzaW11bGF0b3IgbWF5IGhhdmUgc3RvcHBlZCDigJQgdHJ5IHJlY29ubmVjdGluZy4iKX0sNjAwMCk6bnVsbDtpZihOMSYmRSkoYXN5bmMoKT0+e3RyeXtsZXQgSDE9KGF3YWl0IGZldGNoKHQxLHtzaWduYWw6RS5zaWduYWx9KSkuYm9keT8uZ2V0UmVhZGVyKCk7aWYoIUgxKXJldHVybjtsZXQgUDE9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKCItLWZyYW1lIik7d2hpbGUoITApe2xldHtkb25lOkEwLHZhbHVlOlIwfT1hd2FpdCBIMS5yZWFkKCk7aWYoQTApYnJlYWs7aWYoUjApZm9yKGxldCBsMD0wO2wwPD1SMC5sZW5ndGgtUDEubGVuZ3RoO2wwKyspe2xldCBOOD0hMDtmb3IobGV0IFE1PTA7UTU8UDEubGVuZ3RoO1E1KyspaWYoUjBbbDArUTVdIT09UDFbUTVdKXtOOD0hMTticmVha31pZihOOCl7aWYoXzEuY3VycmVudCsrLCFSKXtpZihSPSEwLHQpY2xlYXJUaW1lb3V0KHQpO3koITApLF8obnVsbCl9fX19fWNhdGNoe319KSgpO3JldHVybigpPT57aWYoRT8uYWJvcnQoKSxNKWNsZWFySW50ZXJ2YWwoTSk7aWYodCljbGVhclRpbWVvdXQodCk7aWYoVz8uY2xvc2UoKSxZMS5jdXJyZW50PT09VylZMS5jdXJyZW50PW51bGx9fSxbUTEsTjEsdDEsSTEsJCxuLEpdKSxiKCgpPT57aWYoIWMpcmV0dXJuO2xldCBXPXNldEludGVydmFsKCgpPT57ajEoXzEuY3VycmVudCksXzEuY3VycmVudD0wO2xldCBNPW4xLmN1cnJlbnQ7aWYoIWRvY3VtZW50LmhpZGRlbiYmTSYmRGF0ZS5ub3coKS1NPjMwMDApeSghMSl9LDEwMDApO3JldHVybigpPT5jbGVhckludGVydmFsKFcpfSxbY10pO2xldCBuMT1UKDApO2IoKCk9PntpZighcilyZXR1cm47bGV0IFc9MjAwMCxNPSgpPT57bGV0IHQ9bjEuY3VycmVudDtpZighdHx8IWExLmN1cnJlbnQpcmV0dXJuO2lmKERhdGUubm93KCktdD5XKXkoITEpfSxFPXNldEludGVydmFsKCgpPT57ajEoXzEuY3VycmVudCksXzEuY3VycmVudD0wLE0oKX0sMTAwMCksUj0oKT0+e2lmKCFkb2N1bWVudC5oaWRkZW4pTSgpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsUiksKCk9PntjbGVhckludGVydmFsKEUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLFIpfX0sW3JdKTtsZXQgUDA9RCgoKT0+e2lmKGMpcmV0dXJuIGEuY3VycmVudDtpZihuKXJldHVybiB4LmN1cnJlbnQ7cmV0dXJuIHI/SzEuY3VycmVudDpkLmN1cnJlbnR9LFtyLG4sY10pLHYxPUQoKCk9PntyZXR1cm4gTDEuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/P1AwKCk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPz9udWxsfSxbUDBdKSxDMD1EKChXLE0pPT57bGV0IEU9djEoKTtpZighRSlyZXR1cm47bGV0IFI9KE0uY2xpZW50WC1FLmxlZnQpL0Uud2lkdGgsdD0oTS5jbGllbnRZLUUudG9wKS9FLmhlaWdodDttMSh7dHlwZTpXLHg6Uix5OnR9KX0sW3YxLG0xXSksQjA9RCgoVyxNKT0+e2xldCBSPXYxKCk/LmhlaWdodHx8MSx0PXcyKFcsTSxSKTtpZih0PT09bnVsbClyZXR1cm4hMTtyZXR1cm4gSjAodCksITB9LFt2MSxKMF0pLEQxPVQoITEpLHkxPVQoITEpLFEwPVQoITEpLEYwPVQoe2R4OjAsZHk6MH0pLE4wPVQoITEpLFtrMCxYMV09QSghMSksUD1UKHt4OjAuNSx5OjAuNX0pLFtsLGldPUEobnVsbCk7YigoKT0+e2xldCBXPShFKT0+e2lmKEUua2V5PT09IkFsdCIpWDEoITApfSxNPShFKT0+e2lmKEUua2V5PT09IkFsdCIpe2lmKFgxKCExKSwheTEuY3VycmVudClpKG51bGwpfX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixXKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLE0pLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLFcpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsTSl9fSxbXSksYigoKT0+e2lmKGswJiYheTEuY3VycmVudCl7bGV0IFc9UC5jdXJyZW50O2koe3gxOlcueCx5MTpXLnkseDI6MS1XLngseTI6MS1XLnl9KX1lbHNlIGlmKCFrMCYmIXkxLmN1cnJlbnQpaShudWxsKX0sW2swXSk7bGV0IGsxPVQobnVsbCksVjE9VCghMSksQjE9VCgwKSxnMT1EKChXLE0pPT57VjEuY3VycmVudD0hMDtsZXQgRT1rMS5jdXJyZW50O2lmKEUpY2FuY2VsQW5pbWF0aW9uRnJhbWUoQjEuY3VycmVudCksQjEuY3VycmVudD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntFLnN0eWxlLmxlZnQ9YCR7VyoxMDB9JWAsRS5zdHlsZS50b3A9YCR7TSoxMDB9JWAsRS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9KX0sW10pLHAxPUQoKFcsTSk9PntpZighVjEuY3VycmVudClyZXR1cm47bGV0IEU9azEuY3VycmVudDtpZihFKWNhbmNlbEFuaW1hdGlvbkZyYW1lKEIxLmN1cnJlbnQpLEIxLmN1cnJlbnQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57RS5zdHlsZS5sZWZ0PWAke1cqMTAwfSVgLEUuc3R5bGUudG9wPWAke00qMTAwfSVgfSl9LFtdKSx4MT1EKCgpPT57VjEuY3VycmVudD0hMTtsZXQgVz1rMS5jdXJyZW50O2lmKFcpY2FuY2VsQW5pbWF0aW9uRnJhbWUoQjEuY3VycmVudCksVy5zdHlsZS5kaXNwbGF5PSJub25lIn0sW10pLE0wPUQoKFcpPT57aWYoVjEuY3VycmVudHx8eTEuY3VycmVudClyZXR1cm4hMTtsZXQgTT12MSgpO2lmKCFNKXJldHVybiExO2xldCBFPU0zKFcuZGVsdGFYLFcuZGVsdGFNb2RlLE0ud2lkdGgpLFI9TTMoVy5kZWx0YVksVy5kZWx0YU1vZGUsTS5oZWlnaHQpO2lmKEU9PT0wJiZSPT09MClyZXR1cm4hMTtsZXQgdD1NYXRoLm1pbihNYXRoLm1heCgoVy5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCwwKSwxKSxxMT1NYXRoLm1pbihNYXRoLm1heCgoVy5jbGllbnRZLU0udG9wKS9NLmhlaWdodCwwKSwxKTtyZXR1cm4gXzAoRS9NLndpZHRoLFIvTS5oZWlnaHQsdCxxMSksITB9LFt2MSxfMF0pO2IoKCk9PntsZXQgVz1KMS5jdXJyZW50O2lmKCFXKXJldHVybjtsZXQgTT0oRSk9PntpZighKFY/QjAoRS5kZWx0YVksRS5kZWx0YU1vZGUpOk0wKEUpKSlyZXR1cm47RS5wcmV2ZW50RGVmYXVsdCgpLEUuc3RvcFByb3BhZ2F0aW9uKCl9O3JldHVybiBXLmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIixNLHtwYXNzaXZlOiExfSksKCk9PlcucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2hlZWwiLE0pfSxbVixCMCxNMF0pO2xldCBaMD1UKDApLHcxPVQobnVsbCksTDA9RCgoKT0+e2xldCBXPURhdGUubm93KCksTT1XLVowLmN1cnJlbnQ7aWYoWjAuY3VycmVudD1XLE08MzAwKXtpZih3MS5jdXJyZW50KWNsZWFyVGltZW91dCh3MS5jdXJyZW50KSx3MS5jdXJyZW50PW51bGw7aWYoWSlZKCk7ZWxzZSBxMCgiYXBwX3N3aXRjaGVyIil9ZWxzZSB3MS5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntpZihZKVkoKTtlbHNlIHEwKCJob21lIik7dzEuY3VycmVudD1udWxsfSwzMDApfSxbcTAsWV0pLEQwPUsyKHApLFMwPUQwLmRpc3BsYXlDb25maWcsTzA9KCgpPT57aWYoIVMwfHwhVzEpcmV0dXJuIG51bGw7aWYoVzEud2lkdGg9PT0wfHxXMS5oZWlnaHQ9PT0wKXJldHVybiBudWxsO2xldCBXPU1hdGgubWluKFcxLndpZHRoL1MwLndpZHRoLFcxLmhlaWdodC9TMC5oZWlnaHQpO3JldHVybnt3aWR0aDpTMC53aWR0aCpXLGhlaWdodDpTMC5oZWlnaHQqV319KSgpLGsyPUQwLnJvdGF0aW9uRGVncmVlcywkNT1EMC5uZWVkc0Nzc1JvdGF0aW9uJiZNYXRoLmFicyhrMik9PT05MCxKNT1aLGg9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiI1MCUiLGxlZnQ6IjUwJSIsd2lkdGg6JDUmJk8wP2Ake08wLmhlaWdodH1weGA6IjEwMCUiLGhlaWdodDokNSYmTzA/YCR7TzAud2lkdGh9cHhgOiIxMDAlIix0cmFuc2Zvcm06YHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSR7azI9PT0wPyIiOmAgcm90YXRlKCR7azJ9ZGVnKWB9YCx0cmFuc2Zvcm1PcmlnaW46ImNlbnRlciBjZW50ZXIiLGN1cnNvcjpXOSxkaXNwbGF5OiJibG9jayIsdXNlclNlbGVjdDoibm9uZSIsV2Via2l0VXNlclNlbGVjdDoibm9uZSIsdG91Y2hBY3Rpb246Im5vbmUiLC4uLlosLi4uazI9PT0wP3t9Ontib3JkZXJSYWRpdXM6MCxjb3JuZXJTaGFwZTp2b2lkIDB9fSxlPXsuLi5oLHRyYW5zZm9ybTpgJHtoLnRyYW5zZm9ybT8/IiJ9IHNjYWxlKCR7cjd9KWB9O3JldHVybiBYKCJkaXYiLHtzdHlsZTp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixmbGV4OjEsLi4uQz97fTp7Ym9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSJ9LG92ZXJmbG93OiJoaWRkZW4iLG1pbldpZHRoOjAsbWluSGVpZ2h0OjAsLi4uUX0sY2xhc3NOYW1lOkssY2hpbGRyZW46W1goImRpdiIse3JlZjpBMSxzdHlsZTp7cG9zaXRpb246InJlbGF0aXZlIixmbGV4OjEsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIifSxjaGlsZHJlbjpYKCJkaXYiLHtyZWY6TDEsc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsd2lkdGg6TzA/YCR7TzAud2lkdGh9cHhgOiIxMDAlIixoZWlnaHQ6TzA/YCR7TzAuaGVpZ2h0fXB4YDoiMTAwJSIsb3ZlcmZsb3c6ImhpZGRlbiIsYm9yZGVyUmFkaXVzOko1Py5ib3JkZXJSYWRpdXMsY29ybmVyU2hhcGU6SjU/LmNvcm5lclNoYXBlfSxjaGlsZHJlbjpbYz9YKCJ2aWRlbyIse3JlZjphLG11dGVkOiEwLHBsYXlzSW5saW5lOiEwLGF1dG9QbGF5OiEwLHN0eWxlOmh9KTpuP1goImNhbnZhcyIse3JlZjp4LHN0eWxlOmV9KTpYKCJpbWciLHtyZWY6ZCxzcmM6cj92b2lkIDA6dDEsZHJhZ2dhYmxlOiExLG9uTG9hZDooVyk9PntsZXQgTT1XLmN1cnJlbnRUYXJnZXQ7aWYoTS5uYXR1cmFsV2lkdGg+MCYmTS5uYXR1cmFsSGVpZ2h0PjApSTEoe3dpZHRoOk0ubmF0dXJhbFdpZHRoLGhlaWdodDpNLm5hdHVyYWxIZWlnaHR9LCJtZWRpYSIpfSxzdHlsZTpyP3tkaXNwbGF5OiJub25lIn06aH0pLHImJlgoImltZyIse3JlZjpLMSxkcmFnZ2FibGU6ITEsb25Mb2FkOihXKT0+e2xldCBNPVcuY3VycmVudFRhcmdldDtpZihNLm5hdHVyYWxXaWR0aD4wJiZNLm5hdHVyYWxIZWlnaHQ+MClJMSh7d2lkdGg6TS5uYXR1cmFsV2lkdGgsaGVpZ2h0Ok0ubmF0dXJhbEhlaWdodH0sIm1lZGlhIil9LHN0eWxlOmh9KSxYKCJkaXYiLHtyZWY6SjEsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaW5zZXQ6MCxjdXJzb3I6VzksdG91Y2hBY3Rpb246Im5vbmUifSxvbk1vdXNlRG93bjooVyk9PntXLnByZXZlbnREZWZhdWx0KCk7bGV0IE09djEoKTtpZighTSlyZXR1cm47bGV0IEU9KFcuY2xpZW50WC1NLmxlZnQpL00ud2lkdGgsUj0oVy5jbGllbnRZLU0udG9wKS9NLmhlaWdodDtpZihXLmFsdEtleSl7eTEuY3VycmVudD0hMCxRMC5jdXJyZW50PVcuc2hpZnRLZXk7bGV0IHExPXt4MTpFLHkxOlIseDI6MS1FLHkyOjEtUn07RjAuY3VycmVudD17ZHg6MS1FLUUsZHk6MS1SLVJ9LGkocTEpLGMxKHt0eXBlOiJiZWdpbiIsLi4ucTF9KTtyZXR1cm59ZzEoRSxSKTtsZXQgdD1DMyhSKTtpZih0IT09dm9pZCAwKUQxLmN1cnJlbnQ9ITAsbTEoe3R5cGU6ImJlZ2luIix4OkUseTpSLGVkZ2U6dH0pO2Vsc2UgRDEuY3VycmVudD0hMSxDMCgiYmVnaW4iLFcpfSxvbk1vdXNlTW92ZTooVyk9PntsZXQgTT12MSgpO2lmKCFNKXJldHVybjtsZXQgRT0oVy5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCxSPShXLmNsaWVudFktTS50b3ApL00uaGVpZ2h0O2lmKFAuY3VycmVudD17eDpFLHk6Un0sVy5idXR0b25zPT09MCl7aWYoVy5hbHRLZXkpaSh7eDE6RSx5MTpSLHgyOjEtRSx5MjoxLVJ9KTtyZXR1cm59aWYoeTEuY3VycmVudCl7bGV0IHQ7aWYoUTAuY3VycmVudCl7bGV0IHExPUYwLmN1cnJlbnQ7dD17eDE6RSx5MTpSLHgyOkUrcTEuZHgseTI6UitxMS5keX19ZWxzZSB0PXt4MTpFLHkxOlIseDI6MS1FLHkyOjEtUn07aSh0KSxjMSh7dHlwZToibW92ZSIsLi4udH0pO3JldHVybn1pZihwMShFLFIpLEQxLmN1cnJlbnQpbTEoe3R5cGU6Im1vdmUiLHg6RSx5OlIsZWRnZTpaMn0pO2Vsc2UgQzAoIm1vdmUiLFcpfSxvbk1vdXNlVXA6KFcpPT57aWYoeTEuY3VycmVudCl7bGV0IE09djEoKTtpZihNKXtsZXQgRT0oVy5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCxSPShXLmNsaWVudFktTS50b3ApL00uaGVpZ2h0O2lmKFEwLmN1cnJlbnQpe2xldCB0PUYwLmN1cnJlbnQ7YzEoe3R5cGU6ImVuZCIseDE6RSx5MTpSLHgyOkUrdC5keCx5MjpSK3QuZHl9KX1lbHNlIGMxKHt0eXBlOiJlbmQiLHgxOkUseTE6Uix4MjoxLUUseTI6MS1SfSl9aWYoeTEuY3VycmVudD0hMSwhVy5hbHRLZXkpaShudWxsKTtyZXR1cm59aWYoeDEoKSxEMS5jdXJyZW50KXtsZXQgTT12MSgpO2lmKE0pe2xldCBFPShXLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLFI9KFcuY2xpZW50WS1NLnRvcCkvTS5oZWlnaHQ7bTEoe3R5cGU6ImVuZCIseDpFLHk6UixlZGdlOloyfSl9RDEuY3VycmVudD0hMTtyZXR1cm59QzAoImVuZCIsVyl9LG9uTW91c2VMZWF2ZTooVyk9PntpZih5MS5jdXJyZW50KXtpZihsKWMxKHt0eXBlOiJlbmQiLC4uLmx9KTt5MS5jdXJyZW50PSExLGkobnVsbCk7cmV0dXJufWlmKHgxKCksRDEuY3VycmVudCl7bGV0IE09djEoKTtpZihNKXtsZXQgRT0oVy5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCxSPShXLmNsaWVudFktTS50b3ApL00uaGVpZ2h0O20xKHt0eXBlOiJlbmQiLHg6RSx5OlIsZWRnZTpaMn0pfUQxLmN1cnJlbnQ9ITE7cmV0dXJufWlmKFcuYnV0dG9ucz4wKUMwKCJlbmQiLFcpO2kobnVsbCl9LG9uVG91Y2hTdGFydDooVyk9PntXLnByZXZlbnREZWZhdWx0KCk7bGV0IE09djEoKTtpZighTSlyZXR1cm47aWYoVy50b3VjaGVzLmxlbmd0aD49Mil7eDEoKTtsZXQgSDE9Vy50b3VjaGVzWzBdLFAxPVcudG91Y2hlc1sxXSxBMD17eDE6KEgxLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLHkxOihIMS5jbGllbnRZLU0udG9wKS9NLmhlaWdodCx4MjooUDEuY2xpZW50WC1NLmxlZnQpL00ud2lkdGgseTI6KFAxLmNsaWVudFktTS50b3ApL00uaGVpZ2h0fTtpZighTjAuY3VycmVudCYmIUQxLmN1cnJlbnQpbTEoe3R5cGU6ImVuZCIseDpBMC54MSx5OkEwLnkxfSk7TjAuY3VycmVudD0hMCx5MS5jdXJyZW50PSEwLEQxLmN1cnJlbnQ9ITEsaShBMCksYzEoe3R5cGU6ImJlZ2luIiwuLi5BMH0pO3JldHVybn1sZXQgRT1XLnRvdWNoZXNbMF07aWYoIUUpcmV0dXJuO2xldCBSPShFLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLHQ9KEUuY2xpZW50WS1NLnRvcCkvTS5oZWlnaHQ7ZzEoUix0KTtsZXQgcTE9QzModCk7aWYocTEhPT12b2lkIDApRDEuY3VycmVudD0hMCxtMSh7dHlwZToiYmVnaW4iLHg6Uix5OnQsZWRnZTpxMX0pO2Vsc2UgRDEuY3VycmVudD0hMSxtMSh7dHlwZToiYmVnaW4iLHg6Uix5OnR9KX0sb25Ub3VjaE1vdmU6KFcpPT57Vy5wcmV2ZW50RGVmYXVsdCgpO2xldCBNPXYxKCk7aWYoIU0pcmV0dXJuO2lmKE4wLmN1cnJlbnQmJlcudG91Y2hlcy5sZW5ndGg+PTIpe2xldCBxMT1XLnRvdWNoZXNbMF0sSDE9Vy50b3VjaGVzWzFdLFAxPXt4MToocTEuY2xpZW50WC1NLmxlZnQpL00ud2lkdGgseTE6KHExLmNsaWVudFktTS50b3ApL00uaGVpZ2h0LHgyOihIMS5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCx5MjooSDEuY2xpZW50WS1NLnRvcCkvTS5oZWlnaHR9O2koUDEpLGMxKHt0eXBlOiJtb3ZlIiwuLi5QMX0pO3JldHVybn1sZXQgRT1XLnRvdWNoZXNbMF07aWYoIUUpcmV0dXJuO2xldCBSPShFLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLHQ9KEUuY2xpZW50WS1NLnRvcCkvTS5oZWlnaHQ7aWYocDEoUix0KSxEMS5jdXJyZW50KW0xKHt0eXBlOiJtb3ZlIix4OlIseTp0LGVkZ2U6WjJ9KTtlbHNlIG0xKHt0eXBlOiJtb3ZlIix4OlIseTp0fSl9LG9uVG91Y2hFbmQ6KFcpPT57Vy5wcmV2ZW50RGVmYXVsdCgpO2xldCBNPXYxKCk7aWYoIU0pcmV0dXJuO2lmKE4wLmN1cnJlbnQpe2lmKFcudG91Y2hlcy5sZW5ndGg8Mil7bGV0IHExPVcuY2hhbmdlZFRvdWNoZXNbMF0sSDE9bDtpZihxMSYmSDEpYzEoe3R5cGU6ImVuZCIseDE6KHExLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLHkxOihxMS5jbGllbnRZLU0udG9wKS9NLmhlaWdodCx4MjpIMS54Mix5MjpIMS55Mn0pO2Vsc2UgaWYoSDEpYzEoe3R5cGU6ImVuZCIsLi4uSDF9KTtOMC5jdXJyZW50PSExLHkxLmN1cnJlbnQ9ITEsaShudWxsKX1yZXR1cm59bGV0IEU9Vy5jaGFuZ2VkVG91Y2hlc1swXTtpZighRSlyZXR1cm47bGV0IFI9KEUuY2xpZW50WC1NLmxlZnQpL00ud2lkdGgsdD0oRS5jbGllbnRZLU0udG9wKS9NLmhlaWdodDtpZih4MSgpLEQxLmN1cnJlbnQpbTEoe3R5cGU6ImVuZCIseDpSLHk6dCxlZGdlOloyfSksRDEuY3VycmVudD0hMTtlbHNlIG0xKHt0eXBlOiJlbmQiLHg6Uix5OnR9KX19KSxYKCJkaXYiLHtyZWY6azEsImRhdGEtdGVzdGlkIjoidG91Y2gtaW5kaWNhdG9yIixzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIix3aWR0aDoyNCxoZWlnaHQ6MjQsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6InJnYmEoNTksMTMwLDI0NiwwLjUpIixib3hTaGFkb3c6IjAgMCA4cHggcmdiYSg1OSwxMzAsMjQ2LDAuMykiLHRyYW5zZm9ybToidHJhbnNsYXRlKC01MCUsIC01MCUpIixwb2ludGVyRXZlbnRzOiJub25lIn19KSxsJiZYKFoxLHtjaGlsZHJlbjpbWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZmluZ2VyLWRvdCIsc3R5bGU6RDkobC54MSxsLnkxKX0pLFgoImRpdiIseyJkYXRhLXRlc3RpZCI6ImZpbmdlci1kb3QiLHN0eWxlOkQ5KGwueDIsbC55Mil9KV19KSwhQzEmJiFnJiZYKCJkaXYiLHtzdHlsZTp7Li4uXzksLi4uWnx8e319LGNoaWxkcmVuOlgoInNwYW4iLHtzdHlsZTp7Y29sb3I6IiM4ODgiLGZvbnRTaXplOjE0fSxjaGlsZHJlbjoiQ29ubmVjdGluZy4uLiJ9KX0pLGcmJlgoImRpdiIse3N0eWxlOl85LGNoaWxkcmVuOlgoInNwYW4iLHtzdHlsZTp7Y29sb3I6IiNmNDQiLGZvbnRTaXplOjE0LHBhZGRpbmc6MjAsdGV4dEFsaWduOiJjZW50ZXIifSxjaGlsZHJlbjpnfSl9KSxsMSYmWCgiZGl2Iix7c3R5bGU6ZTcsY2hpbGRyZW46WCgic3BhbiIse3N0eWxlOntjb2xvcjoiI2ZiYmYyNCIsZm9udFNpemU6MTMsZm9udEZhbWlseToibW9ub3NwYWNlIn0sY2hpbGRyZW46IlNsb3cgY29ubmVjdGlvbiJ9KX0pXX0pfSksIUMmJlgoImRpdiIse3N0eWxlOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixwYWRkaW5nOiI0cHggOHB4Iixib3JkZXJUb3A6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIn0sY2hpbGRyZW46W1goImJ1dHRvbiIse29uQ2xpY2s6TDAsc3R5bGU6e2JhY2tncm91bmQ6Im5vbmUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4yKSIsY29sb3I6IiNhYWEiLGZvbnRTaXplOjExLGZvbnRGYW1pbHk6Im1vbm9zcGFjZSIscGFkZGluZzoiMnB4IDEwcHgiLGN1cnNvcjoicG9pbnRlciIsYm9yZGVyUmFkaXVzOjR9LGNoaWxkcmVuOiJIb21lIn0pLFgoInNwYW4iLHtzdHlsZTp7Y29sb3I6TzE+MD8iIzRmNCI6IiM4ODgiLGZvbnRTaXplOjEyLGZvbnRGYW1pbHk6Im1vbm9zcGFjZSIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6Nn0sY2hpbGRyZW46W08mJlgoInNwYW4iLHsiZGF0YS10ZXN0aWQiOiJxdWFsaXR5LWRvdCIsc3R5bGU6e3dpZHRoOjgsaGVpZ2h0OjgsYm9yZGVyUmFkaXVzOiI1MCUiLGRpc3BsYXk6ImlubGluZS1ibG9jayIsYmFja2dyb3VuZDpPPT09Imdvb2QiPyIjNGFkZTgwIjpPPT09ImRlZ3JhZGVkIj8iI2ZhY2MxNSI6IiNlZjQ0NDQifX0pLE8xLCIgZnBzIl19KV19KV19KX12YXIgZTc9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjgsbGVmdDoiNTAlIix0cmFuc2Zvcm06InRyYW5zbGF0ZVgoLTUwJSkiLGJhY2tncm91bmQ6InJnYmEoMCwwLDAsMC43KSIsYm9yZGVyUmFkaXVzOjYscGFkZGluZzoiNHB4IDEycHgiLHBvaW50ZXJFdmVudHM6Im5vbmUifSxfOT17cG9zaXRpb246ImFic29sdXRlIixpbnNldDowLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYmFja2dyb3VuZDoicmdiYSgwLDAsMCwwLjgpIn0sUDk9MjA7ZnVuY3Rpb24gRDkoJCxKKXtyZXR1cm57cG9zaXRpb246ImFic29sdXRlIixsZWZ0OmAkeyQqMTAwfSVgLHRvcDpgJHtKKjEwMH0lYCx3aWR0aDpQOSxoZWlnaHQ6UDksYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6InJnYmEoMjU1LDI1NSwyNTUsMC40NSkiLGJvcmRlcjoiMS4yNXB4IHNvbGlkIHJnYmEoMCwwLDAsMC41NSkiLGJveFNoYWRvdzoiMCAxcHggM3B4IHJnYmEoMCwwLDAsMC40NSkiLHRyYW5zZm9ybToidHJhbnNsYXRlKC01MCUsIC01MCUpIixwb2ludGVyRXZlbnRzOiJub25lIn19ZnVuY3Rpb24gSTAoJCl7aWYoISQpcmV0dXJuImlwaG9uZSI7bGV0IEo9JC50b0xvd2VyQ2FzZSgpO2lmKEouaW5jbHVkZXMoImlwYWQiKSlyZXR1cm4iaXBhZCI7aWYoSi5pbmNsdWRlcygid2F0Y2giKSlyZXR1cm4id2F0Y2giO2lmKEouaW5jbHVkZXMoInZpc2lvbiIpKXJldHVybiJ2aXNpb24iO3JldHVybiJpcGhvbmUifXZhciBTMT17aXBob25lOnt3aWR0aDo0MjcsaGVpZ2h0Ojg4MSxiZXplbFg6MTgsYmV6ZWxZOjE4LGlubmVyUmFkaXVzOjU1fSxpcGFkOnt3aWR0aDo0MzAsaGVpZ2h0OjYwNSxiZXplbFg6MTYsYmV6ZWxZOjE2LGlubmVyUmFkaXVzOjEyfSx3YXRjaDp7d2lkdGg6Mjc0LGhlaWdodDozMjIsYmV6ZWxYOjEyLGJlemVsWToxMixpbm5lclJhZGl1czo3OX0sdmlzaW9uOnt3aWR0aDo2NDAsaGVpZ2h0OjQwMCxiZXplbFg6MTIsYmV6ZWxZOjEyLGlubmVyUmFkaXVzOjMyfX0sQlg9UzEuaXBob25lLndpZHRoLE5YPVMxLmlwaG9uZS5oZWlnaHQsTFg9UzEuaXBob25lLmJlemVsWCx6WD1TMS5pcGhvbmUuYmV6ZWxZLFVYPVMxLmlwaG9uZS5pbm5lclJhZGl1cyx3OT17ImlQaG9uZSAxNyBQcm8gTWF4Ijp7d2lkdGg6MTMyMCxoZWlnaHQ6Mjg2OH0sImlQaG9uZSAxNyBQcm8iOnt3aWR0aDoxMjA2LGhlaWdodDoyNjIyfSwiaVBob25lIDE3Ijp7d2lkdGg6MTIwNixoZWlnaHQ6MjYyMn0sImlQaG9uZSBBaXIiOnt3aWR0aDoxMjYwLGhlaWdodDoyNzM2fSwiaVBob25lIDE2IFBybyBNYXgiOnt3aWR0aDoxMzIwLGhlaWdodDoyODY4fSwiaVBob25lIDE2IFBybyI6e3dpZHRoOjEyMDYsaGVpZ2h0OjI2MjJ9LCJpUGhvbmUgMTYgUGx1cyI6e3dpZHRoOjEyOTAsaGVpZ2h0OjI3OTZ9LCJpUGhvbmUgMTYiOnt3aWR0aDoxMTc5LGhlaWdodDoyNTU2fSwiaVBob25lIDE2ZSI6e3dpZHRoOjExNzAsaGVpZ2h0OjI1MzJ9LCJpUGhvbmUgMTUgUHJvIE1heCI6e3dpZHRoOjEyOTAsaGVpZ2h0OjI3OTZ9LCJpUGhvbmUgMTUgUHJvIjp7d2lkdGg6MTE3OSxoZWlnaHQ6MjU1Nn0sImlQaG9uZSAxNSBQbHVzIjp7d2lkdGg6MTI5MCxoZWlnaHQ6Mjc5Nn0sImlQaG9uZSAxNSI6e3dpZHRoOjExNzksaGVpZ2h0OjI1NTZ9LCJpUGFkIFBybyAxMy1pbmNoIChNNSkiOnt3aWR0aDoyMDY0LGhlaWdodDoyNzUyfSwiaVBhZCBQcm8gMTEtaW5jaCAoTTUpIjp7d2lkdGg6MTY2OCxoZWlnaHQ6MjQyMH0sImlQYWQgUHJvIDEzLWluY2ggKE00KSI6e3dpZHRoOjIwNjQsaGVpZ2h0OjI3NTJ9LCJpUGFkIFBybyAxMS1pbmNoIChNNCkiOnt3aWR0aDoxNjY4LGhlaWdodDoyNDIwfSwiaVBhZCBBaXIgMTMtaW5jaCAoTTMpIjp7d2lkdGg6MjA0OCxoZWlnaHQ6MjczMn0sImlQYWQgQWlyIDExLWluY2ggKE0zKSI6e3dpZHRoOjE2NDAsaGVpZ2h0OjIzNjB9LCJpUGFkIChBMTYpIjp7d2lkdGg6MTY0MCxoZWlnaHQ6MjM2MH0sImlQYWQgbWluaSAoQTE3IFBybykiOnt3aWR0aDoxNDg4LGhlaWdodDoyMjY2fSwiQXBwbGUgV2F0Y2ggVWx0cmEgMyAoNDltbSkiOnt3aWR0aDo0MjIsaGVpZ2h0OjUxNH0sIkFwcGxlIFdhdGNoIFVsdHJhIDIgKDQ5bW0pIjp7d2lkdGg6NDEwLGhlaWdodDo1MDJ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTEgKDQ2bW0pIjp7d2lkdGg6NDE2LGhlaWdodDo0OTZ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTEgKDQybW0pIjp7d2lkdGg6Mzc0LGhlaWdodDo0NDZ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTAgKDQ2bW0pIjp7d2lkdGg6NDE2LGhlaWdodDo0OTZ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTAgKDQybW0pIjp7d2lkdGg6Mzc0LGhlaWdodDo0NDZ9LCJBcHBsZSBXYXRjaCBTRSAzICg0NG1tKSI6e3dpZHRoOjM2OCxoZWlnaHQ6NDQ4fSwiQXBwbGUgV2F0Y2ggU0UgMyAoNDBtbSkiOnt3aWR0aDozMjQsaGVpZ2h0OjM5NH0sIkFwcGxlIFdhdGNoIFNFICg0NG1tKSI6e3dpZHRoOjM2OCxoZWlnaHQ6NDQ4fSwiQXBwbGUgV2F0Y2ggU0UgKDQwbW0pIjp7d2lkdGg6MzI0LGhlaWdodDozOTR9LCJBcHBsZSBWaXNpb24gUHJvIjp7d2lkdGg6MTkyMCxoZWlnaHQ6MTA4MH19O2Z1bmN0aW9uIEY1KCQsSil7bGV0IFE9JCYmJC53aWR0aD4wJiYkLmhlaWdodD4wPyQ6SixaPVgyKFEpO2lmKFopcmV0dXJuYCR7Wi53aWR0aH0gLyAke1ouaGVpZ2h0fWA7cmV0dXJuYCR7UzEuaXBob25lLndpZHRoLTIqUzEuaXBob25lLmJlemVsWH0gLyAke1MxLmlwaG9uZS5oZWlnaHQtMipTMS5pcGhvbmUuYmV6ZWxZfWB9ZnVuY3Rpb24gcTIoJD0iaXBob25lIixKKXtsZXQgUT1KP3c5W0pdOm51bGw7aWYoUSlyZXR1cm4gUTtsZXQgWj1TMVskXTtyZXR1cm57d2lkdGg6Wi53aWR0aC0yKlouYmV6ZWxYLGhlaWdodDpaLmhlaWdodC0yKlouYmV6ZWxZfX1mdW5jdGlvbiBHMigkPSJpcGhvbmUiLEope2lmKGYwKEopKXN3aXRjaCgkKXtjYXNlImlwYWQiOnJldHVybiA3MjA7Y2FzZSJ2aXNpb24iOnJldHVybiA1ODA7Y2FzZSJ3YXRjaCI6cmV0dXJuIDIwMDtkZWZhdWx0OnJldHVybiA2MjB9c3dpdGNoKCQpe2Nhc2UiaXBhZCI6cmV0dXJuIDQwMDtjYXNlIndhdGNoIjpyZXR1cm4gMjAwO2Nhc2UidmlzaW9uIjpyZXR1cm4gNTgwO2RlZmF1bHQ6cmV0dXJuIDMyMH19ZnVuY3Rpb24gazUoJD0iaXBob25lIixKKXtsZXQgUT1TMVskXSxaPVEud2lkdGgtMipRLmJlemVsWCxLPVEuaGVpZ2h0LTIqUS5iZXplbFk7aWYoWjxLJiZmMChKKSlyZXR1cm5gJHtRLmlubmVyUmFkaXVzL0sqMTAwfSUgLyAke1EuaW5uZXJSYWRpdXMvWioxMDB9JWA7cmV0dXJuYCR7US5pbm5lclJhZGl1cy9aKjEwMH0lIC8gJHtRLmlubmVyUmFkaXVzL0sqMTAwfSVgfWZ1bmN0aW9uIFQ5KCQpe2xldCBKPVMxWyQudHlwZV0sUT1KLndpZHRoLTIqSi5iZXplbFgsWj1KLmhlaWdodC0yKkouYmV6ZWxZLEssWTtpZihRPFomJmYwKCQuY29uZmlnPz9udWxsKSlLPUouaW5uZXJSYWRpdXMvWixZPUouaW5uZXJSYWRpdXMvUTtlbHNlIEs9Si5pbm5lclJhZGl1cy9RLFk9Si5pbm5lclJhZGl1cy9aO2xldCBxPUsqJC5jb250YWluZXJXaWR0aCxHPVkqJC5jb250YWluZXJIZWlnaHQsTj1NYXRoLnNxcnQoTWF0aC5tYXgocSpHLDApKTtyZXR1cm57cng6cSxyeTpHLHJHZW9tOk59fXZhciBKJD0xMyxRJD02MjtmdW5jdGlvbiBXMygkKXtsZXR7Y29udGFpbmVyV2lkdGg6Sixjb250YWluZXJIZWlnaHQ6UX09JCxaPShDKT0+Qy50b0ZpeGVkKDMpLEs9KEMsRik9PntsZXQgTz1GLEk9Rix3PVEkLzIqKE1hdGguUEkvMTgwKSxTPTIyNSpNYXRoLlBJLzE4MCxqPVMrdywkMT1TLXcsbT1PK0MqTWF0aC5jb3MoaiksYz1JK0MqTWF0aC5zaW4oaiksbj1PK0MqTWF0aC5jb3MoJDEpLG89SStDKk1hdGguc2luKCQxKSxyPWBNICR7WihtKX0gJHtaKGMpfSBBICR7WihDKX0gJHtaKEMpfSAwIDAgMSAke1oobil9ICR7WihvKX1gLFExPWBNICR7WihuKX0gJHtaKG8pfSBBICR7WihDKX0gJHtaKEMpfSAwIDAgMCAke1oobSl9ICR7WihjKX1gO3JldHVybntkOnIsZEZpbGw6UTF9fTtpZighKEo+MCl8fCEoUT4wKSl7bGV0IEM9SiQsRj1NYXRoLmNlaWwoQysxNCkse2Q6TyxkRmlsbDpJfT1LKEMsRik7cmV0dXJue2Q6TyxkRmlsbDpJLHZpZXdCb3hTaXplOkZ9fWxldHtyR2VvbTpZfT1UOSgkKSxxPU1hdGgubWF4KDIuMixNYXRoLm1pbig1LjIsMC4wMTEqTWF0aC5taW4oSixRKSkpLEc9WSowLjM0K3EsTj1NYXRoLm1pbihKLFEpLEI9TWF0aC5taW4oMjIsTWF0aC5tYXgoMTIsTiowLjA1MikpO0c9TWF0aC5taW4oMjQsTWF0aC5tYXgoMTIsRyxCKSk7bGV0IHo9TWF0aC5tYXgoMjYsTWF0aC5jZWlsKEcrMTMpKSx7ZDprLGRGaWxsOkh9PUsoRyx6KTtyZXR1cm57ZDprLGRGaWxsOkgsdmlld0JveFNpemU6en19ZnVuY3Rpb24gTTUoe3R5cGU6JD0iaXBob25lIixzdHJlYW1pbmc6Sj0hMX0pe3N3aXRjaCgkKXtjYXNlImlwYWQiOnJldHVybiBYKFgkLHtzdHJlYW1pbmc6Sn0pO2Nhc2Uid2F0Y2giOnJldHVybiBYKEskLHtzdHJlYW1pbmc6Sn0pO2Nhc2UidmlzaW9uIjpyZXR1cm4gWChZJCx7c3RyZWFtaW5nOkp9KTtkZWZhdWx0OnJldHVybiBYKFokLHtzdHJlYW1pbmc6Sn0pfX1mdW5jdGlvbiBaJCh7c3RyZWFtaW5nOiQ9ITF9KXtyZXR1cm4gWCgic3ZnIix7dmlld0JveDoiMCAwIDQyNyA4ODEiLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn0sZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbWCgiZGVmcyIse2NoaWxkcmVuOltYKCJmaWx0ZXIiLHtpZDoiY2hyb21lLWZpbHRlcjAiLHg6Ii0wLjE2Njk5MiIseToiMC4xNjY1MDQiLHdpZHRoOiI0MjciLGhlaWdodDoiODgwLjY2NyIsZmlsdGVyVW5pdHM6InVzZXJTcGFjZU9uVXNlIixjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiJzUkdCIixjaGlsZHJlbjpbWCgiZmVGbG9vZCIse2Zsb29kT3BhY2l0eToiMCIscmVzdWx0OiJCYWNrZ3JvdW5kSW1hZ2VGaXgifSksWCgiZmVCbGVuZCIse21vZGU6Im5vcm1hbCIsaW46IlNvdXJjZUdyYXBoaWMiLGluMjoiQmFja2dyb3VuZEltYWdlRml4IixyZXN1bHQ6InNoYXBlIn0pLFgoImZlR2F1c3NpYW5CbHVyIix7c3RkRGV2aWF0aW9uOiIwLjUiLHJlc3VsdDoiZWZmZWN0MV9mb3JlZ3JvdW5kQmx1ciJ9KV19KSxYKCJmaWx0ZXIiLHtpZDoiY2hyb21lLWZpbHRlcjEiLHg6IjYuMzMyMzYiLHk6IjYuMzMzODIiLHdpZHRoOiI0MTQiLGhlaWdodDoiODY4IixmaWx0ZXJVbml0czoidXNlclNwYWNlT25Vc2UiLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6InNSR0IiLGNoaWxkcmVuOltYKCJmZUZsb29kIix7Zmxvb2RPcGFjaXR5OiIwIixyZXN1bHQ6IkJhY2tncm91bmRJbWFnZUZpeCJ9KSxYKCJmZUJsZW5kIix7bW9kZToibm9ybWFsIixpbjoiU291cmNlR3JhcGhpYyIsaW4yOiJCYWNrZ3JvdW5kSW1hZ2VGaXgiLHJlc3VsdDoic2hhcGUifSksWCgiZmVHYXVzc2lhbkJsdXIiLHtzdGREZXZpYXRpb246IjAuMzMzMzMzIixyZXN1bHQ6ImVmZmVjdDFfZm9yZWdyb3VuZEJsdXIifSldfSldfSksWCgicmVjdCIse3g6IjMuODMyNjgiLHk6IjMuODMzNjYiLHdpZHRoOiI0MTkiLGhlaWdodDoiODczIixyeDoiNjYuMTY2NyIsc3Ryb2tlOiIjNDU0NTQ4IixzdHJva2VXaWR0aDoiNC4zMzMzMyJ9KSxYKCJyZWN0Iix7eDoiMC44MzMzMzMiLHk6IjAuODMzMzMzIix3aWR0aDoiNDI1IixoZWlnaHQ6Ijg3OSIscng6IjY5LjE2NjciLHN0cm9rZToiIzM3MzczYSIsc3Ryb2tlV2lkdGg6IjEuNjY2NjcifSksWCgiZyIse29wYWNpdHk6IjAuOSIsZmlsdGVyOiJ1cmwoI2Nocm9tZS1maWx0ZXIwKSIsY2hpbGRyZW46WCgicmVjdCIse3g6IjEuNjY2MDIiLHk6IjIiLHdpZHRoOiI0MjMuMzMzIixoZWlnaHQ6Ijg3NyIscng6IjY4LjY2NjciLHN0cm9rZToiIzQ1NDU0OCIsc3Ryb2tlV2lkdGg6IjEuNjY2NjcifSl9KSxYKCJnIix7b3BhY2l0eToiMC44IixmaWx0ZXI6InVybCgjY2hyb21lLWZpbHRlcjEpIixjaGlsZHJlbjpYKCJyZWN0Iix7eDoiNy4zMzI2OCIseToiNy4zMzM2NiIsd2lkdGg6IjQxMiIsaGVpZ2h0OiI4NjYiLHJ4OiI2Mi42NjY3IixzdHJva2U6IiM2NDY0NjQiLHN0cm9rZVdpZHRoOiIwLjY2NjY2NyJ9KX0pLFgoInJlY3QiLHt4OiIxNTEuNjY2Iix5OiIzMS42NjciLHdpZHRoOiIxMjMuMzMzIixoZWlnaHQ6IjM2IixyeDoiMTgiLGZpbGw6ImJsYWNrIixzdHlsZTp7b3BhY2l0eTokPzA6MSx0cmFuc2l0aW9uOiJvcGFjaXR5IDAuM3MgZWFzZSJ9fSldfSl9ZnVuY3Rpb24gWCQoe3N0cmVhbWluZzokPSExfSl7bGV0IEo9UzEuaXBhZC53aWR0aCxRPVMxLmlwYWQuaGVpZ2h0LFo9MzAsSz0yNjtyZXR1cm4gWCgic3ZnIix7dmlld0JveDpgMCAwICR7Sn0gJHtRfWAsc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifSxmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOltYKCJkZWZzIix7Y2hpbGRyZW46W1goImZpbHRlciIse2lkOiJpcGFkLWdsb3cwIix4OiIwIix5OiIwIix3aWR0aDpKLGhlaWdodDpRLGZpbHRlclVuaXRzOiJ1c2VyU3BhY2VPblVzZSIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoic1JHQiIsY2hpbGRyZW46W1goImZlRmxvb2QiLHtmbG9vZE9wYWNpdHk6IjAiLHJlc3VsdDoiQmFja2dyb3VuZEltYWdlRml4In0pLFgoImZlQmxlbmQiLHttb2RlOiJub3JtYWwiLGluOiJTb3VyY2VHcmFwaGljIixpbjI6IkJhY2tncm91bmRJbWFnZUZpeCIscmVzdWx0OiJzaGFwZSJ9KSxYKCJmZUdhdXNzaWFuQmx1ciIse3N0ZERldmlhdGlvbjoiMC41IixyZXN1bHQ6ImJsdXIifSldfSksWCgiZmlsdGVyIix7aWQ6ImlwYWQtZ2xvdzEiLHg6IjUiLHk6IjUiLHdpZHRoOkotMTAsaGVpZ2h0OlEtMTAsZmlsdGVyVW5pdHM6InVzZXJTcGFjZU9uVXNlIixjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiJzUkdCIixjaGlsZHJlbjpbWCgiZmVGbG9vZCIse2Zsb29kT3BhY2l0eToiMCIscmVzdWx0OiJCYWNrZ3JvdW5kSW1hZ2VGaXgifSksWCgiZmVCbGVuZCIse21vZGU6Im5vcm1hbCIsaW46IlNvdXJjZUdyYXBoaWMiLGluMjoiQmFja2dyb3VuZEltYWdlRml4IixyZXN1bHQ6InNoYXBlIn0pLFgoImZlR2F1c3NpYW5CbHVyIix7c3RkRGV2aWF0aW9uOiIwLjMzMzMzMyIscmVzdWx0OiJibHVyIn0pXX0pXX0pLFgoInJlY3QiLHt4OiIzLjUiLHk6IjMuNSIsd2lkdGg6Si03LGhlaWdodDpRLTcscng6MjYsc3Ryb2tlOiIjNDU0NTQ4IixzdHJva2VXaWR0aDoiNCJ9KSxYKCJyZWN0Iix7eDoiMC44MzMiLHk6IjAuODMzIix3aWR0aDpKLTEuNjY2LGhlaWdodDpRLTEuNjY2LHJ4OjMwLHN0cm9rZToiIzM3MzczYSIsc3Ryb2tlV2lkdGg6IjEuNjY2In0pLFgoImciLHtvcGFjaXR5OiIwLjkiLGZpbHRlcjoidXJsKCNpcGFkLWdsb3cwKSIsY2hpbGRyZW46WCgicmVjdCIse3g6IjEuNSIseToiMS41Iix3aWR0aDpKLTMsaGVpZ2h0OlEtMyxyeDoyOSxzdHJva2U6IiM0NTQ1NDgiLHN0cm9rZVdpZHRoOiIxLjY2NiJ9KX0pLFgoImciLHtvcGFjaXR5OiIwLjgiLGZpbHRlcjoidXJsKCNpcGFkLWdsb3cxKSIsY2hpbGRyZW46WCgicmVjdCIse3g6IjYiLHk6IjYiLHdpZHRoOkotMTIsaGVpZ2h0OlEtMTIscng6MjQsc3Ryb2tlOiIjNjQ2NDY0IixzdHJva2VXaWR0aDoiMC42NjYifSl9KSxYKCJjaXJjbGUiLHtjeDpKLzIsY3k6UzEuaXBhZC5iZXplbFkvMisxLHI6IjMiLGZpbGw6IiMxYTFhMWEiLHN0eWxlOntvcGFjaXR5OiQ/MDowLjgsdHJhbnNpdGlvbjoib3BhY2l0eSAwLjNzIGVhc2UifX0pLFgoInJlY3QiLHt4OihKLTEyMCkvMix5OlEtUzEuaXBhZC5iZXplbFkvMi0yLjUsd2lkdGg6IjEyMCIsaGVpZ2h0OiI1IixyeDoiMi41IixmaWxsOiJ3aGl0ZSIsc3R5bGU6e29wYWNpdHk6JD8wOjAuMzUsbWl4QmxlbmRNb2RlOiJkaWZmZXJlbmNlIix0cmFuc2l0aW9uOiJvcGFjaXR5IDAuM3MgZWFzZSJ9fSldfSl9ZnVuY3Rpb24gSyQoe3N0cmVhbWluZzokPSExfSl7bGV0IEo9UzEud2F0Y2gud2lkdGgsUT1TMS53YXRjaC5oZWlnaHQsWj04OCxLPTgyLFk9OCxxPTM2LEc9US8yLTE4LTE2LE49MjIsQj1RLzItMTErMTY7cmV0dXJuIFgoInN2ZyIse3ZpZXdCb3g6YDAgMCAke0p9ICR7UX1gLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9LGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46W1goImRlZnMiLHtjaGlsZHJlbjpYKCJmaWx0ZXIiLHtpZDoid2F0Y2gtZ2xvdzAiLHg6IjAiLHk6IjAiLHdpZHRoOkorMTIsaGVpZ2h0OlEsZmlsdGVyVW5pdHM6InVzZXJTcGFjZU9uVXNlIixjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiJzUkdCIixjaGlsZHJlbjpbWCgiZmVGbG9vZCIse2Zsb29kT3BhY2l0eToiMCIscmVzdWx0OiJCYWNrZ3JvdW5kSW1hZ2VGaXgifSksWCgiZmVCbGVuZCIse21vZGU6Im5vcm1hbCIsaW46IlNvdXJjZUdyYXBoaWMiLGluMjoiQmFja2dyb3VuZEltYWdlRml4IixyZXN1bHQ6InNoYXBlIn0pLFgoImZlR2F1c3NpYW5CbHVyIix7c3RkRGV2aWF0aW9uOiIwLjUiLHJlc3VsdDoiYmx1ciJ9KV19KX0pLFgoInJlY3QiLHt4OkotMix5Okcsd2lkdGg6OCxoZWlnaHQ6MzYscng6IjMiLGZpbGw6IiMyYTJhMmMiLHN0cm9rZToiIzQ1NDU0OCIsc3Ryb2tlV2lkdGg6IjEifSksWCgicmVjdCIse3g6Si0xLHk6Qix3aWR0aDo2LGhlaWdodDoyMixyeDoiMi41IixmaWxsOiIjMmEyYTJjIixzdHJva2U6IiM0NTQ1NDgiLHN0cm9rZVdpZHRoOiIwLjgifSksWCgicmVjdCIse3g6IjMuNSIseToiMy41Iix3aWR0aDpKLTcsaGVpZ2h0OlEtNyxyeDo4MixzdHJva2U6IiM0NTQ1NDgiLHN0cm9rZVdpZHRoOiIzLjUifSksWCgicmVjdCIse3g6IjAuODMzIix5OiIwLjgzMyIsd2lkdGg6Si0xLjY2NixoZWlnaHQ6US0xLjY2NixyeDo4OCxzdHJva2U6IiMzNzM3M2EiLHN0cm9rZVdpZHRoOiIxLjY2NiJ9KSxYKCJnIix7b3BhY2l0eToiMC45IixmaWx0ZXI6InVybCgjd2F0Y2gtZ2xvdzApIixjaGlsZHJlbjpYKCJyZWN0Iix7eDoiMS41Iix5OiIxLjUiLHdpZHRoOkotMyxoZWlnaHQ6US0zLHJ4Ojg3LHN0cm9rZToiIzQ1NDU0OCIsc3Ryb2tlV2lkdGg6IjEuNjY2In0pfSldfSl9ZnVuY3Rpb24gWSQoe3N0cmVhbWluZzokPSExfSl7bGV0IEo9UzEudmlzaW9uLndpZHRoLFE9UzEudmlzaW9uLmhlaWdodCxaPTQwLEs9MzQ7cmV0dXJuIFgoInN2ZyIse3ZpZXdCb3g6YDAgMCAke0p9ICR7UX1gLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn0sZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbWCgiZGVmcyIse2NoaWxkcmVuOltYKCJmaWx0ZXIiLHtpZDoidmlzaW9uLWdsb3cwIix4OiIwIix5OiIwIix3aWR0aDpKLGhlaWdodDpRLGZpbHRlclVuaXRzOiJ1c2VyU3BhY2VPblVzZSIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoic1JHQiIsY2hpbGRyZW46W1goImZlRmxvb2QiLHtmbG9vZE9wYWNpdHk6IjAiLHJlc3VsdDoiQmFja2dyb3VuZEltYWdlRml4In0pLFgoImZlQmxlbmQiLHttb2RlOiJub3JtYWwiLGluOiJTb3VyY2VHcmFwaGljIixpbjI6IkJhY2tncm91bmRJbWFnZUZpeCIscmVzdWx0OiJzaGFwZSJ9KSxYKCJmZUdhdXNzaWFuQmx1ciIse3N0ZERldmlhdGlvbjoiMC41IixyZXN1bHQ6ImJsdXIifSldfSksWCgiZmlsdGVyIix7aWQ6InZpc2lvbi1nbG93MSIseDoiNSIseToiNSIsd2lkdGg6Si0xMCxoZWlnaHQ6US0xMCxmaWx0ZXJVbml0czoidXNlclNwYWNlT25Vc2UiLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6InNSR0IiLGNoaWxkcmVuOltYKCJmZUZsb29kIix7Zmxvb2RPcGFjaXR5OiIwIixyZXN1bHQ6IkJhY2tncm91bmRJbWFnZUZpeCJ9KSxYKCJmZUJsZW5kIix7bW9kZToibm9ybWFsIixpbjoiU291cmNlR3JhcGhpYyIsaW4yOiJCYWNrZ3JvdW5kSW1hZ2VGaXgiLHJlc3VsdDoic2hhcGUifSksWCgiZmVHYXVzc2lhbkJsdXIiLHtzdGREZXZpYXRpb246IjAuMzMzIixyZXN1bHQ6ImJsdXIifSldfSksWCgibGluZWFyR3JhZGllbnQiLHtpZDoidmlzaW9uLWdsYXNzIix4MToiMCIseTE6IjAiLHgyOiIwIix5MjoiMSIsY2hpbGRyZW46W1goInN0b3AiLHtvZmZzZXQ6IjAlIixzdG9wQ29sb3I6IiM1NTU1NTgiLHN0b3BPcGFjaXR5OiIwLjMifSksWCgic3RvcCIse29mZnNldDoiMTAwJSIsc3RvcENvbG9yOiIjM2EzYTNkIixzdG9wT3BhY2l0eToiMC4xIn0pXX0pXX0pLFgoInJlY3QiLHt4OiIwIix5OiIwIix3aWR0aDpKLGhlaWdodDpRLHJ4OjQwLGZpbGw6InVybCgjdmlzaW9uLWdsYXNzKSJ9KSxYKCJyZWN0Iix7eDoiMy41Iix5OiIzLjUiLHdpZHRoOkotNyxoZWlnaHQ6US03LHJ4OjM0LHN0cm9rZToiIzQ1NDU0OCIsc3Ryb2tlV2lkdGg6IjMifSksWCgicmVjdCIse3g6IjAuODMzIix5OiIwLjgzMyIsd2lkdGg6Si0xLjY2NixoZWlnaHQ6US0xLjY2NixyeDo0MCxzdHJva2U6IiMzNzM3M2EiLHN0cm9rZVdpZHRoOiIxLjY2NiJ9KSxYKCJnIix7b3BhY2l0eToiMC45IixmaWx0ZXI6InVybCgjdmlzaW9uLWdsb3cwKSIsY2hpbGRyZW46WCgicmVjdCIse3g6IjEuNSIseToiMS41Iix3aWR0aDpKLTMsaGVpZ2h0OlEtMyxyeDozOSxzdHJva2U6IiM0NTQ1NDgiLHN0cm9rZVdpZHRoOiIxLjY2NiJ9KX0pLFgoImciLHtvcGFjaXR5OiIwLjgiLGZpbHRlcjoidXJsKCN2aXNpb24tZ2xvdzEpIixjaGlsZHJlbjpYKCJyZWN0Iix7eDoiNiIseToiNiIsd2lkdGg6Si0xMixoZWlnaHQ6US0xMixyeDozMixzdHJva2U6IiM2NDY0NjQiLHN0cm9rZVdpZHRoOiIwLjY2NiJ9KX0pLFgoImVsbGlwc2UiLHtjeDpKLzIsY3k6US8yLHJ4OkovMi0zMCxyeTpRLzItMjQsc3Ryb2tlOiIjNGE0YTRkIixzdHJva2VXaWR0aDoiMC41IixvcGFjaXR5OiIwLjMiLHN0eWxlOntvcGFjaXR5OiQ/MDowLjMsdHJhbnNpdGlvbjoib3BhY2l0eSAwLjNzIGVhc2UifX0pXX0pfXZhciBfMz16MChudWxsKTtmdW5jdGlvbiBPNSgkKXtsZXQgSj1VMChfMyk7aWYoIUopdGhyb3cgRXJyb3IoYDxTaW11bGF0b3JUb29sYmFyLiR7JH0+IG11c3QgYmUgcmVuZGVyZWQgaW5zaWRlIDxTaW11bGF0b3JUb29sYmFyPmApO3JldHVybiBKfXZhciBHJD17ZGlzcGxheToiZmxleCIsZmxleFdyYXA6IndyYXAiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLGdhcDoiNHB4IDEycHgiLHBhZGRpbmc6IjhweCAxMnB4Iixib3JkZXJSYWRpdXM6MjQsYmFja2dyb3VuZDoidmFyKC0tc2VydmUtc2ltLXBhbmVsLWJnLCAjMTgxODE4KSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpIixib3hTaGFkb3c6IjAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMikiLG1pbldpZHRoOjI0MCx3aWR0aDoiMTAwJSJ9O2Z1bmN0aW9uIFYkKHtleGVjOiQsb25Sb3RhdGU6SixvcmllbnRhdGlvbjpRLGRldmljZVVkaWQ6WixkZXZpY2VOYW1lOkssZGV2aWNlUnVudGltZTpZLHN0cmVhbWluZzpxPSExLGRpc2FibGVkOkc9ITEsY2hpbGRyZW46TixzdHlsZTpCLC4uLkx9KXtsZXQgVj1JMChLKSx6PXtleGVjOiQsb25Sb3RhdGU6SixvcmllbnRhdGlvbjpRLGRldmljZVVkaWQ6WixkZXZpY2VOYW1lOkssZGV2aWNlUnVudGltZTpZLGRldmljZVR5cGU6VixzdHJlYW1pbmc6cSxkaXNhYmxlZDpHfHwhWnx8IXF9O3JldHVybiBYKF8zLlByb3ZpZGVyLHt2YWx1ZTp6LGNoaWxkcmVuOlgoImRpdiIseyJkYXRhLXNpbXVsYXRvci10b29sYmFyIjohMCxzdHlsZTp7Li4uRyQsLi4uQn0sLi4uTCxjaGlsZHJlbjpOfSl9KX12YXIgQiQ9e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsYWxpZ25JdGVtczoiZmxleC1zdGFydCIsdGV4dEFsaWduOiJsZWZ0IixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixjb2xvcjoiI2ZmZiIscGFkZGluZzoiMnB4IDRweCIsbWFyZ2luOiItMnB4IC00cHgiLGJvcmRlclJhZGl1czo2LGN1cnNvcjoicG9pbnRlciIsbWluV2lkdGg6MCxtYXhXaWR0aDoiMTAwJSIsbGluZUhlaWdodDoxLjIsZm9udEZhbWlseToiaW5oZXJpdCJ9LE4kPVcwKGZ1bmN0aW9uKHtuYW1lOkosc3VidGl0bGU6USxoaWRlQ2hldnJvbjpaLGhpZGVTdWJ0aXRsZTpLLHN0eWxlOlksb25Nb3VzZUVudGVyOnEsb25Nb3VzZUxlYXZlOkcsLi4uTn0sQil7bGV0IEw9TzUoIlRpdGxlIiksW1YsVV09QSghMSksej1KPz9MLmRldmljZU5hbWU/PyJObyBzaW11bGF0b3IiLGs9UT8/KEwuZGV2aWNlUnVudGltZT9MLmRldmljZVJ1bnRpbWUucmVwbGFjZSgvXC4vLCIgIik6IuKAlCIpO3JldHVybiBYKCJidXR0b24iLHtyZWY6Qix0eXBlOiJidXR0b24iLCJkYXRhLXNpbXVsYXRvci10b29sYmFyLXRpdGxlIjohMCxvbk1vdXNlRW50ZXI6KEgpPT57VSghMCkscT8uKEgpfSxvbk1vdXNlTGVhdmU6KEgpPT57VSghMSksRz8uKEgpfSxzdHlsZTp7Li4uQiQsYmFja2dyb3VuZDpWPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMSkiOiJ0cmFuc3BhcmVudCIsLi4uWX0sLi4uTixjaGlsZHJlbjpbWCgic3BhbiIse3N0eWxlOntkaXNwbGF5OiJpbmxpbmUtZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6NCxmb250U2l6ZToxMixmb250V2VpZ2h0OjYwMCxjb2xvcjoiI2ZmZiIsbWF4V2lkdGg6IjEwMCUiLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LGNoaWxkcmVuOlt6LCFaJiZYKCJzdmciLHt3aWR0aDoiMTAiLGhlaWdodDoiMTAiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyLjUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLHN0eWxlOntjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjYpIixmbGV4U2hyaW5rOjB9LGNoaWxkcmVuOlgoInBvbHlsaW5lIix7cG9pbnRzOiI2IDkgMTIgMTUgMTggOSJ9KX0pXX0pLCFLJiZYKCJzcGFuIix7c3R5bGU6e2ZvbnRTaXplOjEwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNSkiLG1heFdpZHRoOiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjprfSldfSl9KSxMJD17ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6NCxmbGV4U2hyaW5rOjB9O2Z1bmN0aW9uIHokKHtzdHlsZTokLC4uLkp9KXtyZXR1cm4gWCgiZGl2Iix7c3R5bGU6ey4uLkwkLC4uLiR9LC4uLkp9KX12YXIgVSQ9e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLHBhZGRpbmc6Nixib3JkZXJSYWRpdXM6MTIsY3Vyc29yOiJwb2ludGVyIixkaXNwbGF5OiJpbmxpbmUtZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjgpIix0cmFuc2l0aW9uOiJiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzLCBjb2xvciAwLjE1cyIscG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoidmlzaWJsZSJ9LEE1PVcwKGZ1bmN0aW9uKHtmb3JjZURpc2FibGVkOkosdG9vbHRpcDpRLHN0eWxlOlosZGlzYWJsZWQ6Syx0aXRsZTpZLG9uTW91c2VFbnRlcjpxLG9uTW91c2VMZWF2ZTpHLG9uUG9pbnRlckRvd246TixvbkZvY3VzOkIsb25CbHVyOkwsb25DbGljazpWLGNoaWxkcmVuOlUsImFyaWEtbGFiZWwiOnosLi4ua30sSCl7bGV0IEM9VTAoXzMpLEY9S3x8Snx8Qz8uZGlzYWJsZWQsW08sSV09QSghMSksW3csU109QSghMSksaj1UKCExKSwkMT1RMigpLG09UT8/WT8/KHR5cGVvZiB6PT09InN0cmluZyI/ejpudWxsKSxjPSEhbSYmIUYmJihPfHx3KTtyZXR1cm4gWCgiYnV0dG9uIix7cmVmOkgsdHlwZToiYnV0dG9uIixkaXNhYmxlZDpGLCJhcmlhLWxhYmVsIjp6LCJhcmlhLWRlc2NyaWJlZGJ5IjptPyQxOnZvaWQgMCxvblBvaW50ZXJEb3duOihuKT0+e2ouY3VycmVudD0hMCxOPy4obil9LG9uTW91c2VFbnRlcjoobik9PntJKCEwKSxxPy4obil9LG9uTW91c2VMZWF2ZToobik9PntJKCExKSxHPy4obil9LG9uRm9jdXM6KG4pPT57Uyghai5jdXJyZW50KSxCPy4obil9LG9uQmx1cjoobik9PntqLmN1cnJlbnQ9ITEsUyghMSksTD8uKG4pfSxvbkNsaWNrOihuKT0+e0koITEpLFMoITEpLG4uY3VycmVudFRhcmdldC5ibHVyKCksVj8uKG4pfSxzdHlsZTp7Li4uVSQsY29sb3I6Rj8icmdiYSgyNTUsMjU1LDI1NSwwLjI1KSI6InJnYmEoMjU1LDI1NSwyNTUsMC44KSIsYmFja2dyb3VuZDpPJiYhRj8icmdiYSgyNTUsMjU1LDI1NSwwLjEpIjoidHJhbnNwYXJlbnQiLGN1cnNvcjpGPyJub3QtYWxsb3dlZCI6InBvaW50ZXIiLC4uLlp9LC4uLmssY2hpbGRyZW46W1UsbSYmWCgic3BhbiIse2lkOiQxLHJvbGU6InRvb2x0aXAiLCJhcmlhLWhpZGRlbiI6IWMsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiNTAlIixib3R0b206ImNhbGMoMTAwJSArIDhweCkiLHRyYW5zZm9ybTpgdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKCR7Yz8wOjJ9cHgpYCxvcGFjaXR5OmM/MTowLHBvaW50ZXJFdmVudHM6Im5vbmUiLHdoaXRlU3BhY2U6Im5vd3JhcCIscGFkZGluZzoiNHB4IDdweCIsYm9yZGVyUmFkaXVzOjYsYmFja2dyb3VuZDoidmFyKC0tc2VydmUtc2ltLXBhbmVsLWJnLCAjMTgxODE4KSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC45MikiLGZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NTAwLGxpbmVIZWlnaHQ6MSxib3hTaGFkb3c6IjAgNHB4IDE0cHggcmdiYSgwLDAsMCwwLjMyKSIsdHJhbnNpdGlvbjoib3BhY2l0eSAwLjEycyBlYXNlLCB0cmFuc2Zvcm0gMC4xMnMgZWFzZSIsekluZGV4OjEwMH0sY2hpbGRyZW46bX0pXX0pfSk7ZnVuY3Rpb24gSCQoJCxKKXtpZigkPT09IndhdGNoIilyZXR1cm4gQyQoKTtpZihKKXJldHVybmB4Y3J1biBzaW1jdGwgbGF1bmNoICR7Sn0gY29tLmFwcGxlLnNwcmluZ2JvYXJkYDtyZXR1cm4ic2VydmUtc2ltIGJ1dHRvbiBob21lIn1mdW5jdGlvbiBDJCgpe3JldHVyblsndGVsbCBhcHBsaWNhdGlvbiAiU3lzdGVtIEV2ZW50cyIgdG8gdGVsbCBwcm9jZXNzICJTaW11bGF0b3IiIHRvIHNldCBmcm9udG1vc3QgdG8gdHJ1ZScsJ3RlbGwgYXBwbGljYXRpb24gIlN5c3RlbSBFdmVudHMiIHRvIHRlbGwgcHJvY2VzcyAiU2ltdWxhdG9yIiB0byBwZXJmb3JtIGFjdGlvbiAiQVhSYWlzZSIgb2YgKGZpcnN0IHdpbmRvdyB3aG9zZSBuYW1lIGNvbnRhaW5zICJ3YXRjaE9TIiknLCd0ZWxsIGFwcGxpY2F0aW9uICJTeXN0ZW0gRXZlbnRzIiB0byB0ZWxsIHByb2Nlc3MgIlNpbXVsYXRvciIgdG8gY2xpY2sgbWVudSBpdGVtICJIb21lIiBvZiBtZW51ICJEZXZpY2UiIG9mIG1lbnUgYmFyIGl0ZW0gIkRldmljZSIgb2YgbWVudSBiYXIgMSddLm1hcCgoSik9PmAtZSAnJHtKfSdgKS5yZWR1Y2UoKEosUSk9PmAke0p9ICR7UX1gLCJvc2FzY3JpcHQiKX12YXIgRiQ9WCgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46WCgicGF0aCIse2Q6Ik0zIDEwLjUgMTIgM2w5IDcuNVYyMGExIDEgMCAwIDEtMSAxaC01di03aC02djdINGExIDEgMCAwIDEtMS0xeiJ9KX0pLGskPVgoInN2ZyIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIsdmlld0JveDoiMCAwIDQ0IDQ0IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOlgoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTQzLjY4NzUgMTIuNDY4OFY4LjI3MzQ0QzQzLjY4NzUgNS43MjY1NiA0Mi45NTMxIDMuNzEwOTQgNDEuNDg0NCAyLjIyNjU2QzQwLjAxNTYgMC43NDIxODggMzggMCAzNS40Mzc1IDBIMzEuMTQ4NEMzMC42MDE2IDAgMzAuMTMyOCAwLjE5NTMxMiAyOS43NDIyIDAuNTg1OTM4QzI5LjM1MTYgMC45NzY1NjIgMjkuMTU2MiAxLjQ0NTMxIDI5LjE1NjIgMS45OTIxOUMyOS4xNTYyIDIuNTIzNDQgMjkuMzUxNiAyLjk4NDM4IDI5Ljc0MjIgMy4zNzVDMzAuMTMyOCAzLjc2NTYyIDMwLjYwMTYgMy45NjA5NCAzMS4xNDg0IDMuOTYwOTRIMzUuNDM3NUMzNi43ODEyIDMuOTYwOTQgMzcuODM1OSA0LjM0Mzc1IDM4LjYwMTYgNS4xMDkzOEMzOS4zNTE2IDUuODc1IDM5LjcyNjYgNi45Mjk2OSAzOS43MjY2IDguMjczNDRWMTIuNDY4OEMzOS43MjY2IDEzIDM5LjkyMTkgMTMuNDYwOSA0MC4zMTI1IDEzLjg1MTZDNDAuNzAzMSAxNC4yNDIyIDQxLjE3MTkgMTQuNDM3NSA0MS43MTg4IDE0LjQzNzVDNDIuMjUgMTQuNDM3NSA0Mi43MTA5IDE0LjI0MjIgNDMuMTAxNiAxMy44NTE2QzQzLjQ5MjIgMTMuNDYwOSA0My42ODc1IDEzIDQzLjY4NzUgMTIuNDY4OFpNMCAxMi40Njg4QzAgMTMgMC4xOTUzMTIgMTMuNDYwOSAwLjU4NTkzOCAxMy44NTE2QzAuOTc2NTYyIDE0LjI0MjIgMS40Mzc1IDE0LjQzNzUgMS45Njg3NSAxNC40Mzc1QzIuNSAxNC40Mzc1IDIuOTYwOTQgMTQuMjQyMiAzLjM1MTU2IDEzLjg1MTZDMy43NDIxOSAxMy40NjA5IDMuOTM3NSAxMyAzLjkzNzUgMTIuNDY4OFY4LjI3MzQ0QzMuOTM3NSA2LjkyOTY5IDQuMzIwMzEgNS44NzUgNS4wODU5NCA1LjEwOTM4QzUuODM1OTQgNC4zNDM3NSA2Ljg5MDYyIDMuOTYwOTQgOC4yNSAzLjk2MDk0SDEyLjUzOTFDMTMuMDg1OSAzLjk2MDk0IDEzLjU1NDcgMy43NjU2MiAxMy45NDUzIDMuMzc1QzE0LjMyMDMgMi45ODQzOCAxNC41MDc4IDIuNTIzNDQgMTQuNTA3OCAxLjk5MjE5QzE0LjUwNzggMS40NDUzMSAxNC4zMjAzIDAuOTc2NTYyIDEzLjk0NTMgMC41ODU5MzhDMTMuNTU0NyAwLjE5NTMxMiAxMy4wODU5IDAgMTIuNTM5MSAwSDguMjVDNS42ODc1IDAgMy42NzE4OCAwLjc0MjE4OCAyLjIwMzEyIDIuMjI2NTZDMC43MzQzNzUgMy43MTA5NCAwIDUuNzI2NTYgMCA4LjI3MzQ0VjEyLjQ2ODhaTTQzLjY4NzUgMzEuMjQyMkM0My42ODc1IDMwLjcxMDkgNDMuNDkyMiAzMC4yNSA0My4xMDE2IDI5Ljg1OTRDNDIuNzEwOSAyOS40Njg4IDQyLjI1IDI5LjI3MzQgNDEuNzE4OCAyOS4yNzM0QzQxLjE3MTkgMjkuMjczNCA0MC43MDMxIDI5LjQ2ODggNDAuMzEyNSAyOS44NTk0QzM5LjkyMTkgMzAuMjUgMzkuNzI2NiAzMC43MTA5IDM5LjcyNjYgMzEuMjQyMlYzNS40Mzc1QzM5LjcyNjYgMzYuNzgxMiAzOS4zNTE2IDM3LjgzNTkgMzguNjAxNiAzOC42MDE2QzM3LjgzNTkgMzkuMzY3MiAzNi43ODEyIDM5Ljc1IDM1LjQzNzUgMzkuNzVIMzEuMTQ4NEMzMC42MDE2IDM5Ljc1IDMwLjEzMjggMzkuOTQ1MyAyOS43NDIyIDQwLjMzNTlDMjkuMzUxNiA0MC43MjY2IDI5LjE1NjIgNDEuMTg3NSAyOS4xNTYyIDQxLjcxODhDMjkuMTU2MiA0Mi4yNjU2IDI5LjM1MTYgNDIuNzI2NiAyOS43NDIyIDQzLjEwMTZDMzAuMTMyOCA0My40OTIyIDMwLjYwMTYgNDMuNjg3NSAzMS4xNDg0IDQzLjY4NzVIMzUuNDM3NUMzOCA0My42ODc1IDQwLjAxNTYgNDIuOTQ1MyA0MS40ODQ0IDQxLjQ2MDlDNDIuOTUzMSAzOS45OTIyIDQzLjY4NzUgMzcuOTg0NCA0My42ODc1IDM1LjQzNzVWMzEuMjQyMlpNMCAzMS4yNDIyVjM1LjQzNzVDMCAzNy45ODQ0IDAuNzM0Mzc1IDM5Ljk5MjIgMi4yMDMxMiA0MS40NjA5QzMuNjcxODggNDIuOTQ1MyA1LjY4NzUgNDMuNjg3NSA4LjI1IDQzLjY4NzVIMTIuNTM5MUMxMy4wODU5IDQzLjY4NzUgMTMuNTU0NyA0My40OTIyIDEzLjk0NTMgNDMuMTAxNkMxNC4zMjAzIDQyLjcyNjYgMTQuNTA3OCA0Mi4yNjU2IDE0LjUwNzggNDEuNzE4OEMxNC41MDc4IDQxLjE4NzUgMTQuMzIwMyA0MC43MjY2IDEzLjk0NTMgNDAuMzM1OUMxMy41NTQ3IDM5Ljk0NTMgMTMuMDg1OSAzOS43NSAxMi41MzkxIDM5Ljc1SDguMjVDNi44OTA2MiAzOS43NSA1LjgzNTk0IDM5LjM2NzIgNS4wODU5NCAzOC42MDE2QzQuMzIwMzEgMzcuODM1OSAzLjkzNzUgMzYuNzgxMiAzLjkzNzUgMzUuNDM3NVYzMS4yNDIyQzMuOTM3NSAzMC43MTA5IDMuNzQyMTkgMzAuMjUgMy4zNTE1NiAyOS44NTk0QzIuOTYwOTQgMjkuNDY4OCAyLjUgMjkuMjczNCAxLjk2ODc1IDI5LjI3MzRDMS40Mzc1IDI5LjI3MzQgMC45NzY1NjIgMjkuNDY4OCAwLjU4NTkzOCAyOS44NTk0QzAuMTk1MzEyIDMwLjI1IDAgMzAuNzEwOSAwIDMxLjI0MjJaTTMxLjU5MzggMzEuODA0N0MzMi43ODEyIDMxLjgwNDcgMzMuNjcxOSAzMS41MTU2IDM0LjI2NTYgMzAuOTM3NUMzNC44NTk0IDMwLjM0MzggMzUuMTU2MiAyOS40Njg4IDM1LjE1NjIgMjguMzEyNVYxNi43MTA5QzM1LjE1NjIgMTUuNTM5MSAzNC44NTk0IDE0LjY2NDEgMzQuMjY1NiAxNC4wODU5QzMzLjY3MTkgMTMuNDkyMiAzMi43ODEyIDEzLjE5NTMgMzEuNTkzOCAxMy4xOTUzSDI4Ljg5ODRDMjguNDYwOSAxMy4xOTUzIDI4LjE0ODQgMTMuMTQwNiAyNy45NjA5IDEzLjAzMTJDMjcuNzU3OCAxMi45MjE5IDI3LjUyMzQgMTIuNzI2NiAyNy4yNTc4IDEyLjQ0NTNMMjYuMzY3MiAxMS41MDc4QzI2LjA4NTkgMTEuMTk1MyAyNS43ODEyIDEwLjk2ODggMjUuNDUzMSAxMC44MjgxQzI1LjEwOTQgMTAuNjcxOSAyNC42NTYyIDEwLjU5MzggMjQuMDkzOCAxMC41OTM4SDE5LjYxNzJDMTkuMDU0NyAxMC41OTM4IDE4LjYwOTQgMTAuNjcxOSAxOC4yODEyIDEwLjgyODFDMTcuOTM3NSAxMC45Njg4IDE3LjYyNSAxMS4xOTUzIDE3LjM0MzggMTEuNTA3OEwxNi40NzY2IDEyLjQ0NTNDMTYuMjEwOSAxMi43NDIyIDE1Ljk3NjYgMTIuOTQ1MyAxNS43NzM0IDEzLjA1NDdDMTUuNTU0NyAxMy4xNDg0IDE1LjIzNDQgMTMuMTk1MyAxNC44MTI1IDEzLjE5NTNIMTIuMDQ2OUMxMC44OTA2IDEzLjE5NTMgMTAuMDE1NiAxMy40OTIyIDkuNDIxODggMTQuMDg1OUM4LjgxMjUgMTQuNjY0MSA4LjUwNzgxIDE1LjUzOTEgOC41MDc4MSAxNi43MTA5VjI4LjMxMjVDOC41MDc4MSAyOS40Njg4IDguODEyNSAzMC4zNDM4IDkuNDIxODggMzAuOTM3NUMxMC4wMTU2IDMxLjUxNTYgMTAuODkwNiAzMS44MDQ3IDEyLjA0NjkgMzEuODA0N0gzMS41OTM4Wk0yMS43OTY5IDI4Ljk0NTNDMjAuNTkzOCAyOC45NDUzIDE5LjUgMjguNjY0MSAxOC41MTU2IDI4LjEwMTZDMTcuNTE1NiAyNy41MjM0IDE2LjcyNjYgMjYuNzQyMiAxNi4xNDg0IDI1Ljc1NzhDMTUuNTU0NyAyNC43NTc4IDE1LjI1NzggMjMuNjMyOCAxNS4yNTc4IDIyLjM4MjhDMTUuMjU3OCAyMS4xNzk3IDE1LjU1NDcgMjAuMDg1OSAxNi4xNDg0IDE5LjEwMTZDMTYuNzI2NiAxOC4xMDE2IDE3LjUxNTYgMTcuMzEyNSAxOC41MTU2IDE2LjczNDRDMTkuNSAxNi4xNDA2IDIwLjU5MzggMTUuODQzOCAyMS43OTY5IDE1Ljg0MzhDMjMuMDE1NiAxNS44NDM4IDI0LjEyNSAxNi4xNDA2IDI1LjEyNSAxNi43MzQ0QzI2LjEwOTQgMTcuMzEyNSAyNi44OTg0IDE4LjEwMTYgMjcuNDkyMiAxOS4xMDE2QzI4LjA3MDMgMjAuMDg1OSAyOC4zNTk0IDIxLjE3OTcgMjguMzU5NCAyMi4zODI4QzI4LjM1OTQgMjMuNjE3MiAyOC4wNzAzIDI0LjcyNjYgMjcuNDkyMiAyNS43MTA5QzI2Ljg5ODQgMjYuNjk1MyAyNi4xMDk0IDI3LjQ4NDQgMjUuMTI1IDI4LjA3ODFDMjQuMTI1IDI4LjY1NjIgMjMuMDE1NiAyOC45NDUzIDIxLjc5NjkgMjguOTQ1M1pNMjEuODIwMyAyNi45MDYyQzIyLjY0ODQgMjYuOTA2MiAyMy40MDYyIDI2LjcxMDkgMjQuMDkzOCAyNi4zMjAzQzI0Ljc4MTIgMjUuOTE0MSAyNS4zMjgxIDI1LjM2NzIgMjUuNzM0NCAyNC42Nzk3QzI2LjEyNSAyMy45OTIyIDI2LjMyMDMgMjMuMjI2NiAyNi4zMjAzIDIyLjM4MjhDMjYuMzIwMyAyMS41NzAzIDI2LjEyNSAyMC44MjAzIDI1LjczNDQgMjAuMTMyOEMyNS4zMjgxIDE5LjQ0NTMgMjQuNzgxMiAxOC45MDYyIDI0LjA5MzggMTguNTE1NkMyMy40MDYyIDE4LjEwOTQgMjIuNjQ4NCAxNy45MDYyIDIxLjgyMDMgMTcuOTA2MkMyMC45OTIyIDE3LjkwNjIgMjAuMjQyMiAxOC4xMDk0IDE5LjU3MDMgMTguNTE1NkMxOC44ODI4IDE4LjkwNjIgMTguMzM1OSAxOS40NDUzIDE3LjkyOTcgMjAuMTMyOEMxNy41MjM0IDIwLjgyMDMgMTcuMzIwMyAyMS41NzAzIDE3LjMyMDMgMjIuMzgyOEMxNy4zMjAzIDIzLjIyNjYgMTcuNTIzNCAyMy45OTIyIDE3LjkyOTcgMjQuNjc5N0MxOC4zMzU5IDI1LjM2NzIgMTguODgyOCAyNS45MTQxIDE5LjU3MDMgMjYuMzIwM0MyMC4yNDIyIDI2LjcxMDkgMjAuOTkyMiAyNi45MDYyIDIxLjgyMDMgMjYuOTA2MlpNMTIuNjMyOCAxOC45ODQ0QzEyLjIxMDkgMTguOTg0NCAxMS44NTk0IDE4LjgzNTkgMTEuNTc4MSAxOC41MzkxQzExLjI4MTIgMTguMjQyMiAxMS4xMzI4IDE3Ljg5MDYgMTEuMTMyOCAxNy40ODQ0QzExLjEzMjggMTcuMDYyNSAxMS4yODEyIDE2LjcxMDkgMTEuNTc4MSAxNi40Mjk3QzExLjg1OTQgMTYuMTMyOCAxMi4yMTA5IDE1Ljk4NDQgMTIuNjMyOCAxNS45ODQ0QzEzLjAzOTEgMTUuOTg0NCAxMy4zOTA2IDE2LjEzMjggMTMuNjg3NSAxNi40Mjk3QzEzLjk4NDQgMTYuNzEwOSAxNC4xMzI4IDE3LjA2MjUgMTQuMTMyOCAxNy40ODQ0QzE0LjEzMjggMTcuODkwNiAxMy45ODQ0IDE4LjI0MjIgMTMuNjg3NSAxOC41MzkxQzEzLjM5MDYgMTguODM1OSAxMy4wMzkxIDE4Ljk4NDQgMTIuNjMyOCAxOC45ODQ0WiJ9KX0pLE0kPVgoInN2ZyIse3dpZHRoOiIyMSIsaGVpZ2h0OiIyMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46W1goInBhdGgiLHtkOiJNMTIgNUg2YTIgMiAwIDAgMC0yIDJ2MyJ9KSxYKCJwYXRoIix7ZDoibTkgOCAzLTMtMy0zIn0pLFgoInBhdGgiLHtkOiJNNCAxNHY0YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJoLTIifSldfSksTyQ9VzAoZnVuY3Rpb24oe29uQ2xpY2s6SiwuLi5RfSxaKXtsZXQgSz1PNSgiSG9tZUJ1dHRvbiIpO3JldHVybiBYKEE1LHtyZWY6WiwiYXJpYS1sYWJlbCI6IkhvbWUiLG9uQ2xpY2s6KFkpPT57aWYoSj8uKFkpLFkuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47Sy5leGVjKEgkKEsuZGV2aWNlVHlwZSxLLmRldmljZVVkaWQpKX0sLi4uUSxjaGlsZHJlbjpGJH0pfSksQSQ9VzAoZnVuY3Rpb24oe29uQ2xpY2s6SiwuLi5RfSxaKXtsZXQgSz1PNSgiU2NyZWVuc2hvdEJ1dHRvbiIpO3JldHVybiBYKEE1LHtyZWY6WiwiYXJpYS1sYWJlbCI6IlNjcmVlbnNob3QiLG9uQ2xpY2s6KFkpPT57aWYoSj8uKFkpLFkuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47aWYoSy5kZXZpY2VVZGlkKUsuZXhlYyhgeGNydW4gc2ltY3RsIGlvICR7Sy5kZXZpY2VVZGlkfSBzY3JlZW5zaG90IH4vRGVza3RvcC9zZXJ2ZS1zaW0tc2NyZWVuc2hvdC0kKGRhdGUgKyVzKS5wbmdgKX0sLi4uUSxjaGlsZHJlbjprJH0pfSksVyQ9VzAoZnVuY3Rpb24oe29uQ2xpY2s6Sixmb3JjZURpc2FibGVkOlEsLi4uWn0sSyl7bGV0IFk9TzUoIlJvdGF0ZUJ1dHRvbiIpLHE9WS5kZXZpY2VUeXBlPT09IndhdGNoInx8WS5kZXZpY2VUeXBlPT09InZpc2lvbiIsW0csTl09QSgicG9ydHJhaXQiKTtyZXR1cm4gYigoKT0+e04oWS5vcmllbnRhdGlvbj8/InBvcnRyYWl0Iil9LFtZLmRldmljZVVkaWQsWS5vcmllbnRhdGlvbl0pLFgoQTUse3JlZjpLLCJhcmlhLWxhYmVsIjoiUm90YXRlIGRldmljZSIsZm9yY2VEaXNhYmxlZDpRfHxxLG9uQ2xpY2s6KEIpPT57aWYoSj8uKEIpLEIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47aWYoIVkuZGV2aWNlVWRpZHx8cSlyZXR1cm47bGV0IEw9RDJbWS5vcmllbnRhdGlvbj8/R107aWYoTihMKSxZLm9uUm90YXRlKVkub25Sb3RhdGUoTCk7ZWxzZSBZLmV4ZWMoYHNlcnZlLXNpbSByb3RhdGUgJHtMfSAtZCAke1kuZGV2aWNlVWRpZH1gKX0sLi4uWixjaGlsZHJlbjpNJH0pfSkscjE9ViQ7cjEuVGl0bGU9TiQ7cjEuQWN0aW9ucz16JDtyMS5CdXR0b249QTU7cjEuSG9tZUJ1dHRvbj1PJDtyMS5TY3JlZW5zaG90QnV0dG9uPUEkO3IxLlJvdGF0ZUJ1dHRvbj1XJDt2YXIgVzU9KC4uLiQpPT4kLmZpbHRlcigoSixRLFopPT57cmV0dXJuIEJvb2xlYW4oSikmJkoudHJpbSgpIT09IiImJlouaW5kZXhPZihKKT09PVF9KS5qb2luKCIgIikudHJpbSgpO3ZhciBJOT0oJCk9PiQucmVwbGFjZSgvKFthLXowLTldKShbQS1aXSkvZywiJDEtJDIiKS50b0xvd2VyQ2FzZSgpO3ZhciBFOT0oJCk9PiQucmVwbGFjZSgvXihbQS1aXSl8W1xzLV9dKyhcdykvZywoSixRLFopPT5aP1oudG9VcHBlckNhc2UoKTpRLnRvTG93ZXJDYXNlKCkpO3ZhciBQMz0oJCk9PntsZXQgSj1FOSgkKTtyZXR1cm4gSi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStKLnNsaWNlKDEpfTt2YXIgXzU9e3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MjQsaGVpZ2h0OjI0LHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCJ9O3ZhciB5OT0oJCk9Pntmb3IobGV0IEogaW4gJClpZihKLnN0YXJ0c1dpdGgoImFyaWEtIil8fEo9PT0icm9sZSJ8fEo9PT0idGl0bGUiKXJldHVybiEwO3JldHVybiExfTt2YXIgXyQ9ejAoe30pO3ZhciBiOT0oKT0+VTAoXyQpO3ZhciBTOT1XMCgoe2NvbG9yOiQsc2l6ZTpKLHN0cm9rZVdpZHRoOlEsYWJzb2x1dGVTdHJva2VXaWR0aDpaLGNsYXNzTmFtZTpLPSIiLGNoaWxkcmVuOlksaWNvbk5vZGU6cSwuLi5HfSxOKT0+e2xldHtzaXplOkI9MjQsc3Ryb2tlV2lkdGg6TD0yLGFic29sdXRlU3Ryb2tlV2lkdGg6Vj0hMSxjb2xvcjpVPSJjdXJyZW50Q29sb3IiLGNsYXNzTmFtZTp6PSIifT1iOSgpPz97fSxrPVo/P1Y/TnVtYmVyKFE/P0wpKjI0L051bWJlcihKPz9CKTpRPz9MO3JldHVybiB1MSgic3ZnIix7cmVmOk4sLi4uXzUsd2lkdGg6Sj8/Qj8/XzUud2lkdGgsaGVpZ2h0Oko/P0I/P181LmhlaWdodCxzdHJva2U6JD8/VSxzdHJva2VXaWR0aDprLGNsYXNzTmFtZTpXNSgibHVjaWRlIix6LEspLC4uLiFZJiYheTkoRykmJnsiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sLi4uR30sWy4uLnEubWFwKChbSCxDXSk9PnUxKEgsQykpLC4uLkFycmF5LmlzQXJyYXkoWSk/WTpbWV1dKX0pO3ZhciBGMT0oJCxKKT0+e2xldCBRPVcwKCh7Y2xhc3NOYW1lOlosLi4uS30sWSk9PnUxKFM5LHtyZWY6WSxpY29uTm9kZTpKLGNsYXNzTmFtZTpXNShgbHVjaWRlLSR7STkoUDMoJCkpfWAsYGx1Y2lkZS0keyR9YCxaKSwuLi5LfSkpO3JldHVybiBRLmRpc3BsYXlOYW1lPVAzKCQpLFF9O3ZhciBQJD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiIsa2V5OiJhZml0djcifV0sWyJwYXRoIix7ZDoiTTkgM3YxOCIsa2V5OiJmaDNocWEifV1dLEUwPUYxKCJwYW5lbC1sZWZ0IixQJCk7dmFyIEQkPVtbInBhdGgiLHtkOiJNMTIuMDM0IDEyLjY4MWEuNDk4LjQ5OCAwIDAgMSAuNjQ3LS42NDdsOSAzLjVhLjUuNSAwIDAgMS0uMDMzLjk0M2wtMy40NDQgMS4wNjhhMSAxIDAgMCAwLS42Ni42NmwtMS4wNjcgMy40NDNhLjUuNSAwIDAgMS0uOTQzLjAzM3oiLGtleToieHduemlwIn1dLFsicGF0aCIse2Q6Ik0yMSAxMVY1YTIgMiAwIDAgMC0yLTJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNiIsa2V5OiIxNHJzdnEifV1dLG0wPUYxKCJzcXVhcmUtbW91c2UtcG9pbnRlciIsRCQpO3ZhciB3JD1bWyJwYXRoIix7ZDoibTIxLjczIDE4LTgtMTRhMiAyIDAgMCAwLTMuNDggMGwtOCAxNEEyIDIgMCAwIDAgNCAyMWgxNmEyIDIgMCAwIDAgMS43My0zIixrZXk6Indtb2VucSJ9XSxbInBhdGgiLHtkOiJNMTIgOXY0IixrZXk6Imp1enB1NyJ9XSxbInBhdGgiLHtkOiJNMTIgMTdoLjAxIixrZXk6InAzMnAwNSJ9XV0scDA9RjEoInRyaWFuZ2xlLWFsZXJ0Iix3JCk7dmFyIFQkPVtbInJlY3QiLHt4OiIyIix5OiI0Iix3aWR0aDoiMjAiLGhlaWdodDoiMTYiLHJ4OiIyIixrZXk6Iml6eGxhbyJ9XSxbInBhdGgiLHtkOiJNMTAgNHY0IixrZXk6InBwOHU4MCJ9XSxbInBhdGgiLHtkOiJNMiA4aDIwIixrZXk6ImQxMWNzNyJ9XSxbInBhdGgiLHtkOiJNNiA0djQiLGtleToiMXN2dGp3In1dXSxUMj1GMSgiYXBwLXdpbmRvdyIsVCQpO3ZhciBJJD1bWyJwYXRoIix7ZDoiTTcgN2gxMHYxMCIsa2V5OiIxdGl2bjkifV0sWyJwYXRoIix7ZDoiTTcgMTcgMTcgNyIsa2V5OiIxdmtpemEifV1dLEkyPUYxKCJhcnJvdy11cC1yaWdodCIsSSQpO3ZhciBFJD1bWyJwYXRoIix7ZDoiTTIwIDYgOSAxN2wtNS01IixrZXk6IjFnbWYyYyJ9XV0sRTI9RjEoImNoZWNrIixFJCk7dmFyIHkkPVtbInBhdGgiLHtkOiJtNiA5IDYgNiA2LTYiLGtleToicXJ1bnNsIn1dXSx5Mj1GMSgiY2hldnJvbi1kb3duIix5JCk7dmFyIGIkPVtbInBhdGgiLHtkOiJtOSAxOCA2LTYtNi02IixrZXk6Im10aGh3cSJ9XV0sYjI9RjEoImNoZXZyb24tcmlnaHQiLGIkKTt2YXIgUyQ9W1sicGF0aCIse2Q6Ik0xMiA2YTIgMiAwIDAgMSAzLjQxNC0xLjQxNGw2IDZhMiAyIDAgMCAxIDAgMi44MjhsLTYgNkEyIDIgMCAwIDEgMTIgMTh6IixrZXk6ImIxOWg1cSJ9XSxbInBhdGgiLHtkOiJNMiA2YTIgMiAwIDAgMSAzLjQxNC0xLjQxNGw2IDZhMiAyIDAgMCAxIDAgMi44MjhsLTYgNkEyIDIgMCAwIDEgMiAxOHoiLGtleToiaDdoNWdlIn1dXSxTMj1GMSgiZmFzdC1mb3J3YXJkIixTJCk7dmFyIHgkPVtbInBhdGgiLHtkOiJtMyA3IDUgNS01IDVWNyIsa2V5OiJjb3VoaTcifV0sWyJwYXRoIix7ZDoibTIxIDctNSA1IDUgNVY3IixrZXk6IjZvdWlhNyJ9XSxbInBhdGgiLHtkOiJNMTIgMjB2MiIsa2V5OiIxbGgxa2cifV0sWyJwYXRoIix7ZDoiTTEyIDE0djIiLGtleToiOGpjeHVkIn1dLFsicGF0aCIse2Q6Ik0xMiA4djIiLGtleToiMXdvcWl2In1dLFsicGF0aCIse2Q6Ik0xMiAydjIiLGtleToidHVzMDNtIn1dXSx4Mj1GMSgiZmxpcC1ob3Jpem9udGFsLTIiLHgkKTt2YXIgaiQ9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIixrZXk6IjFtZ2xheSJ9XSxbInBhdGgiLHtkOiJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIsa2V5OiIxM28xemwifV0sWyJwYXRoIix7ZDoiTTIgMTJoMjAiLGtleToiOWk0cHU0In1dXSxqMj1GMSgiZ2xvYmUiLGokKTt2YXIgdiQ9W1sicGF0aCIse2Q6Im0yMiAxMS0xLjI5Ni0xLjI5NmEyLjQgMi40IDAgMCAwLTMuNDA4IDBMMTEgMTYiLGtleToiOWt6eTM1In1dLFsicGF0aCIse2Q6Ik00IDhhMiAyIDAgMCAwLTIgMnYxMGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTIiLGtleToiMXQwZjB0In1dLFsiY2lyY2xlIix7Y3g6IjEzIixjeToiNyIscjoiMSIsZmlsbDoiY3VycmVudENvbG9yIixrZXk6IjFvYnVzNiJ9XSxbInJlY3QiLHt4OiI4Iix5OiIyIix3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHJ4OiIyIixrZXk6IjFndmhieSJ9XV0sdjI9RjEoImltYWdlcyIsdiQpO3ZhciBSJD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiIsa2V5OiJhZml0djcifV0sWyJwYXRoIix7ZDoiTTE1IDN2MTgiLGtleToiMTRudnAwIn1dXSxSMj1GMSgicGFuZWwtcmlnaHQiLFIkKTt2YXIgaCQ9W1sicGF0aCIse2Q6Ik0zIDEyYTkgOSAwIDEgMCA5LTkgOS43NSA5Ljc1IDAgMCAwLTYuNzQgMi43NEwzIDgiLGtleToiMTM1N2UzIn1dLFsicGF0aCIse2Q6Ik0zIDN2NWg1IixrZXk6IjF4aHE4YSJ9XV0saDI9RjEoInJvdGF0ZS1jY3ciLGgkKTt2YXIgZyQ9W1sicGF0aCIse2Q6Im0yMSAyMS00LjM0LTQuMzQiLGtleToiMTRqN3JqIn1dLFsiY2lyY2xlIix7Y3g6IjExIixjeToiMTEiLHI6IjgiLGtleToiNGVqOTd1In1dXSxnMj1GMSgic2VhcmNoIixnJCk7dmFyIGYkPVtbInBhdGgiLHtkOiJNMTAgNUgzIixrZXk6IjFxZ2ZhdyJ9XSxbInBhdGgiLHtkOiJNMTIgMTlIMyIsa2V5OiJ5aG1uMWoifV0sWyJwYXRoIix7ZDoiTTE0IDN2NCIsa2V5OiIxc3VhMDMifV0sWyJwYXRoIix7ZDoiTTE2IDE3djQiLGtleToiMXEwcjE0In1dLFsicGF0aCIse2Q6Ik0yMSAxMmgtOSIsa2V5OiIxbzRsc3EifV0sWyJwYXRoIix7ZDoiTTIxIDE5aC01IixrZXk6IjFybHQxcCJ9XSxbInBhdGgiLHtkOiJNMjEgNWgtNyIsa2V5OiIxb3N6ejIifV0sWyJwYXRoIix7ZDoiTTggMTB2NCIsa2V5OiJ0Z3B4cWsifV0sWyJwYXRoIix7ZDoiTTggMTJIMyIsa2V5OiJhN3M0amIifV1dLGowPUYxKCJzbGlkZXJzLWhvcml6b250YWwiLGYkKTt2YXIgbSQ9W1sicGF0aCIse2Q6Ik0xMiAzdjEyIixrZXk6IjF4MGo1cyJ9XSxbInBhdGgiLHtkOiJtMTcgOC01LTUtNSA1IixrZXk6IjdxOTdyOCJ9XSxbInBhdGgiLHtkOiJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCIsa2V5OiJpaDduM2gifV1dLGYyPUYxKCJ1cGxvYWQiLG0kKTt2YXIgcCQ9W1sicGF0aCIse2Q6Im0xNiAxMyA1LjIyMyAzLjQ4MmEuNS41IDAgMCAwIC43NzctLjQxNlY3Ljg3YS41LjUgMCAwIDAtLjc1Mi0uNDMyTDE2IDEwLjUiLGtleToiZnR5bWVjIn1dLFsicmVjdCIse3g6IjIiLHk6IjYiLHdpZHRoOiIxNCIsaGVpZ2h0OiIxMiIscng6IjIiLGtleToiMTU4eDAxIn1dXSxyMD1GMSgidmlkZW8iLHAkKTt2YXIgdSQ9W1sicGF0aCIse2Q6Ik0xOCA2IDYgMTgiLGtleToiMWJsNWY4In1dLFsicGF0aCIse2Q6Im02IDYgMTIgMTIiLGtleToiZDhiazZ2In1dXSxHMD1GMSgieCIsdSQpO2Z1bmN0aW9uIG0yKHtvcGVuOiR9KXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjEwIixoZWlnaHQ6IjEwIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjbGFzc05hbWU6ImxlbS1jaGV2cm9uIHRleHQtd2hpdGUvNTAiLHN0eWxlOnt0cmFuc2Zvcm06JD8icm90YXRlKDE4MGRlZykiOiJyb3RhdGUoMGRlZykifSxjaGlsZHJlbjpYKCJwb2x5bGluZSIse3BvaW50czoiNiA5IDEyIDE1IDE4IDkifSl9KX1mdW5jdGlvbiBQNSh7ZGlyOiR9KXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjkiLGhlaWdodDoiOSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJjdXJyZW50Q29sb3IiLGNsYXNzTmFtZToibXItWzNweF0iLGNoaWxkcmVuOiQ9PT0idXAiP1goInBvbHlnb24iLHtwb2ludHM6IjEyLDQgMjAsMTggNCwxOCJ9KTpYKCJwb2x5Z29uIix7cG9pbnRzOiI0LDYgMjAsNiAxMiwyMCJ9KX0pfWZ1bmN0aW9uIHAyKCl7cmV0dXJuIFgoInN2ZyIse3dpZHRoOiIxMSIsaGVpZ2h0OiIxMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJjdXJyZW50Q29sb3IiLGNoaWxkcmVuOlgoInBvbHlnb24iLHtwb2ludHM6IjYsNCAyMCwxMiA2LDIwIn0pfSl9ZnVuY3Rpb24gRDMoKXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6ImN1cnJlbnRDb2xvciIsY2hpbGRyZW46W1goInJlY3QiLHt4OiI2Iix5OiI0Iix3aWR0aDoiNCIsaGVpZ2h0OiIxNiJ9KSxYKCJyZWN0Iix7eDoiMTQiLHk6IjQiLHdpZHRoOiI0IixoZWlnaHQ6IjE2In0pXX0pfWZ1bmN0aW9uIHUyKCl7cmV0dXJuIFgoInN2ZyIse3dpZHRoOiIxMCIsaGVpZ2h0OiIxMCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJjdXJyZW50Q29sb3IiLGNoaWxkcmVuOlgoInJlY3QiLHt4OiI1Iix5OiI1Iix3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHJ4OiIxLjUifSl9KX1mdW5jdGlvbiB3Mygpe3JldHVybiBYKFMyLHtzaXplOjEyLHN0cm9rZVdpZHRoOjIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KX1mdW5jdGlvbiBUMygpe3JldHVybiBYKCJzdmciLHt3aWR0aDoiOSIsaGVpZ2h0OiIxNCIsdmlld0JveDoiNCAyIDkgMTMiLGZpbGw6ImN1cnJlbnRDb2xvciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjpYKCJwYXRoIix7ZDoiTTYuMDA4NTIgMTQuODA1NEM1Ljg5MTgxIDE0LjkzNSA1Ljc1ODE1IDE0Ljk5OTggNS42MDc1NiAxNC45OTk4QzUuNDU2OTYgMTUuMDAzMyA1LjMyMzMgMTQuOTYxMyA1LjIwNjU5IDE0Ljg3MzdDNS4wOTM2NCAxNC43ODYxIDUuMDI1ODcgMTQuNjcyMyA1LjAwMzI4IDE0LjUzMjJDNC45ODQ0NiAxNC4zOTIxIDUuMDQ2NTggMTQuMjQ1IDUuMTg5NjUgMTQuMDkwOUw2Ljk0NTk5IDEyLjE1MjJMNy4yNDUzIDEwLjg3NTVMOC4xOTk3MSAxMS45ODkzTDguMDU4NTMgMTIuMzkzOUM4LjAyMDg4IDEyLjQ5NTUgNy45ODY5OSAxMi41NzA4IDcuOTU2ODcgMTIuNjE5OEM3LjkzMDUyIDEyLjY2ODggNy44NzQwNCAxMi43NDA2IDcuNzg3NDUgMTIuODM1Mkw2LjAwODUyIDE0LjgwNTRaTTEwLjM0NTcgMTQuNjQyNUw5LjEwMzI5IDEyLjMwNDZDOS4wNzY5NCAxMi4yNjI1IDkuMDU0MzUgMTIuMjIyMyA5LjAzNTUzIDEyLjE4MzdDOS4wMTY3IDEyLjE0NTIgOC45NzcxNyAxMi4wOTA5IDguOTE2OTMgMTIuMDIwOUw3LjcxOTY4IDEwLjYxODFDNy40OTM3OSAxMC4zNTU0IDcuMzM3NTQgMTAuMTI5NSA3LjI1MDk1IDkuOTQwMzRDNy4xNjQzNSA5Ljc0NzcgNy4xMzQyNCA5LjQ5OTAxIDcuMTYwNTkgOS4xOTQyOUw3LjI2MjI0IDcuOTgwNjVDNy4yNjk3NyA3LjkwNzEgNy4yMzIxMiA3Ljg1NDU2IDcuMTQ5MjkgNy44MjMwNEM3LjA2NjQ3IDcuNzkxNTEgNi45ODU1MiA3LjgwOTAzIDYuOTA2NDYgNy44NzU1N0w2LjQ3MTYxIDguMjQzMzRMNi4zNDE3MiA5LjY3MjM5QzYuMzIyODkgOS44NDc1MiA2LjI2NDU0IDkuOTc4ODcgNi4xNjY2NSAxMC4wNjY0QzYuMDY4NzYgMTAuMTU0IDUuOTM4ODcgMTAuMTkyNSA1Ljc3Njk4IDEwLjE4MkM1LjYxMTMyIDEwLjE3NSA1LjQ4MzMxIDEwLjExOSA1LjM5Mjk1IDEwLjAxMzlDNS4zMDYzNiA5LjkwODgyIDUuMjY4NzEgOS43NzM5NyA1LjI4MDAxIDkuNjA5MzVMNS4zODczMSA4LjMwNjM5QzUuNDAyMzcgOC4xMjc3NiA1LjQzODEzIDcuOTc1NCA1LjQ5NDYxIDcuODQ5MzFDNS41NTQ4NSA3LjcyMzIxIDUuNjYwMjYgNy41OTE4NyA1LjgxMDg2IDcuNDU1MjdMNi43MTQ0NSA2LjYyNTE2QzcuMDA0MzUgNi4zNjI0NyA3LjI2OTc3IDYuMTYxMDcgNy41MTA3MyA2LjAyMDk2QzcuNzUxNjggNS44NzczNiA4LjAyODQxIDUuODA1NTYgOC4zNDA5IDUuODA1NTZDOC43NTg4IDUuODA1NTYgOS4wNzg4MiA1LjkzMzQgOS4zMDA5NSA2LjE4OTA5QzkuNTI2ODUgNi40NDQ3OCA5LjYyNDc0IDYuNzYxNzYgOS41OTQ2MiA3LjE0MDA0TDkuNDc2MDIgOC43MzE5NUM5LjQ1MzQzIDkuMDE1NjYgOS40MTk1NSA5LjI2MjU5IDkuMzc0MzcgOS40NzI3NUM5LjMyOTE5IDkuNjgyOSA5LjI1Mzg5IDkuOTI5ODMgOS4xNDg0NyAxMC4yMTM1TDkuMDkyIDEwLjM2MDZMOS44NjU2OSAxMS4zNzk5QzkuOTIyMTcgMTEuNDUzNCA5Ljk4MDUyIDExLjUzNCAxMC4wNDA4IDExLjYyMTZDMTAuMTAxIDExLjcwOTEgMTAuMTUzNyAxMS43OTY3IDEwLjE5ODkgMTEuODg0M0wxMS40MDc0IDE0LjE2NDRDMTEuNTA1MyAxNC4zNTAxIDExLjUyNDEgMTQuNTExMiAxMS40NjM5IDE0LjY0NzhDMTEuNDAzNyAxNC43ODQ0IDExLjMwMiAxNC44ODI1IDExLjE1ODkgMTQuOTQyQzExLjAxOTYgMTUuMDAxNSAxMC44NzA5IDE1LjAxMDMgMTAuNzEyOCAxNC45NjgzQzEwLjU1ODQgMTQuOTI2MiAxMC40MzYxIDE0LjgxNzcgMTAuMzQ1NyAxNC42NDI1Wk0xMi40MDcgNy45NjQ4OUMxMi41ODQgNy45NjQ4OSAxMi43MjcgOC4wMTA0MiAxMi44MzYyIDguMTAxNDlDMTIuOTQ1NCA4LjE4OTA1IDEzIDguMzA2MzkgMTMgOC40NTM1QzEzIDguNjExMTEgMTIuOTQ1NCA4LjczMzcgMTIuODM2MiA4LjgyMTI3QzEyLjczMDggOC45MDg4MyAxMi41ODc3IDguOTUyNjEgMTIuNDA3IDguOTUyNjFIMTEuMTMwN0MxMC45NTM4IDguOTUyNjEgMTAuODE0NSA4LjkzNjg1IDEwLjcxMjggOC45MDUzM0MxMC42MTEyIDguODcwMyAxMC41MTMzIDguODA3MjYgMTAuNDE5MSA4LjcxNjE5TDEwLjA1MjEgOC4zNzk5NEwxMC4xNDI0IDcuMDQwMjFMMTEuMDM0NyA3Ljk2NDg5SDEyLjQwN1pNOS4wMDE2NCA1LjMxMTY5QzguNzcxOTggNS4zMTE2OSA4LjU2MzAzIDUuMjYwOTEgOC4zNzQ3OCA1LjE1OTMzQzguMTg2NTMgNS4wNTQyNiA4LjAzNTk0IDQuOTE0MTUgNy45MjI5OSA0LjczOTAzQzcuODEzODEgNC41NjM5IDcuNzU5MjEgNC4zNjk1IDcuNzU5MjEgNC4xNTU4NUM3Ljc1OTIxIDMuOTQyMTkgNy44MTM4MSAzLjc0NzggNy45MjI5OSAzLjU3MjY3QzguMDM1OTQgMy4zOTc1NCA4LjE4NjUzIDMuMjU5MTkgOC4zNzQ3OCAzLjE1NzYyQzguNTYzMDMgMy4wNTI1NCA4Ljc3MTk4IDMgOS4wMDE2NCAzQzkuMjMxMyAzIDkuNDQwMjYgMy4wNTI1NCA5LjYyODUgMy4xNTc2MkM5LjgxNjc1IDMuMjU5MTkgOS45NjU0NiAzLjM5NzU0IDEwLjA3NDYgMy41NzI2N0MxMC4xODc2IDMuNzQ3OCAxMC4yNDQxIDMuOTQyMTkgMTAuMjQ0MSA0LjE1NTg1QzEwLjI0NDEgNC4zNjk1IDEwLjE4NzYgNC41NjM5IDEwLjA3NDYgNC43MzkwM0M5Ljk2NTQ2IDQuOTE0MTUgOS44MTY3NSA1LjA1NDI2IDkuNjI4NSA1LjE1OTMzQzkuNDQwMjYgNS4yNjA5MSA5LjIzMTMgNS4zMTE2OSA5LjAwMTY0IDUuMzExNjlaIn0pfSl9ZnVuY3Rpb24gSTMoKXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIyNiAxIDEyIDE0IixmaWxsOiJjdXJyZW50Q29sb3IiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WCgicGF0aCIse2Q6Ik0zMy4yNDM3IDQuNTg0NTlDMzMuMDAwOCA0LjU4NDU5IDMyLjc4MTcgNC41MjcyOCAzMi41ODY2IDQuNDEyNjhDMzIuMzkxNSA0LjI5NDEyIDMyLjIzNDIgNC4xMzgwMSAzMi4xMTQ3IDMuOTQ0MzdDMzEuOTk5MiAzLjc0Njc3IDMxLjk0MTQgMy41Mjk0MSAzMS45NDE0IDMuMjkyMjlDMzEuOTQxNCAzLjA1MTIyIDMxLjk5OTIgMi44MzM4NyAzMi4xMTQ3IDIuNjQwMjJDMzIuMjM0MiAyLjQ0NjU3IDMyLjM5MTUgMi4yOTI0NSAzMi41ODY2IDIuMTc3ODRDMzIuNzgxNyAyLjA1OTI4IDMzLjAwMDggMiAzMy4yNDM3IDJDMzMuNDgyNiAyIDMzLjY5OTcgMi4wNTkyOCAzMy44OTQ4IDIuMTc3ODRDMzQuMDkzOSAyLjI5MjQ1IDM0LjI1MTIgMi40NDY1NyAzNC4zNjY3IDIuNjQwMjJDMzQuNDg2MiAyLjgzMzg3IDM0LjU0NTkgMy4wNTEyMiAzNC41NDU5IDMuMjkyMjlDMzQuNTQ1OSAzLjUyOTQxIDM0LjQ4NjIgMy43NDY3NyAzNC4zNjY3IDMuOTQ0MzdDMzQuMjUxMiA0LjEzODAxIDM0LjA5MzkgNC4yOTQxMiAzMy44OTQ4IDQuNDEyNjhDMzMuNjk5NyA0LjUyNzI4IDMzLjQ4MjYgNC41ODQ1OSAzMy4yNDM3IDQuNTg0NTlaTTMxLjIwMDcgOS43NDE5MUMzMS4wNzMzIDkuNjcwNzcgMzAuOTQxOSA5LjU5NTY4IDMwLjgwNjUgOS41MTY2NEMzMC42NzUgOS40Mzc2IDMwLjU1OTYgOS4zNDI3NiAzMC40NiA5LjIzMjFDMzAuMzYwNCA5LjExNzQ5IDMwLjI5MjcgOC45NzcyIDMwLjI1NjkgOC44MTEyMkMzMC4yMjUgOC42NDEyOCAzMC4yNDQ5IDguNDI5ODUgMzAuMzE2NiA4LjE3NjkzTDMwLjgwNjUgNi40ODE1M0MzMC44MzgzIDYuMzY2OTIgMzAuODE4NCA2LjI3OTk4IDMwLjc0NjcgNi4yMjA3QzMwLjY3OSA2LjE1NzQ3IDMwLjU5NzQgNi4xMjk4MSAzMC41MDE4IDYuMTM3NzFMMjkuNjU5NSA2LjE5Njk5TDI5LjQwMjcgNy45MjIwMkMyOS4zNzg4IDguMTA3NzcgMjkuMzE1MSA4LjI0NjA5IDI5LjIxMTUgOC4zMzY5OEMyOS4xMDggOC40Mjc4OCAyOC45NzI2IDguNDY1NDIgMjguODA1MyA4LjQ0OTYxQzI4LjY0MiA4LjQzMzggMjguNTE4NiA4LjM2NjYyIDI4LjQzNDkgOC4yNDgwNkMyOC4zNTEzIDguMTI5NSAyOC4zMjE0IDcuOTc3MzUgMjguMzQ1MyA3Ljc5MTYxTDI4LjYyNjEgNS42ODEyNkMyOC42NSA1LjUxMTMyIDI4LjcxNTcgNS4zNzQ5OCAyOC44MjMyIDUuMjcyMjNDMjguOTMwOCA1LjE2OTQ4IDI5LjA2ODEgNS4xMTIxNyAyOS4yMzU0IDUuMTAwMzJMMzEuMzMyMSA0Ljk1MjEyQzMxLjg4MTcgNC45MTI2IDMyLjMzNTcgNC45Njk5IDMyLjY5NDEgNS4xMjQwM0MzMy4wNTI1IDUuMjc4MTYgMzMuMzY3MSA1LjUzODk5IDMzLjYzNzkgNS45MDY1MkwzNC42NzE0IDcuMzIzM0wzNi4xNzA4IDYuNjY1M0MzNi4zMzggNi41OTAyMSAzNi40ODkzIDYuNTc0NCAzNi42MjQ4IDYuNjE3ODdDMzYuNzYwMiA2LjY1NzM5IDM2Ljg2NTcgNi43NTIyNCAzNi45NDE0IDYuOTAyNDJDMzcuMDEzIDcuMDUyNTkgMzcuMDE5IDcuMTk0ODYgMzYuOTU5MyA3LjMyOTIzQzM2LjkwMzUgNy40NjM2IDM2Ljc5MiA3LjU2ODMyIDM2LjYyNDggNy42NDM0MUwzNC43MzExIDguNDc5MjVDMzQuNjAzNyA4LjUzODUzIDM0LjQ3NDMgOC41NTAzOSAzNC4zNDI4IDguNTE0ODJDMzQuMjE1NCA4LjQ3NTMgMzQuMTEzOCA4LjQwMDIxIDM0LjAzODIgOC4yODk1NkwzMy4zODExIDcuMzM1MTZDMzMuMzEzNCA3LjI0MDMxIDMzLjIyOTggNy4xOTg4MSAzMy4xMzAyIDcuMjEwNjdDMzMuMDMwNiA3LjIyMjUzIDMyLjk2NDkgNy4yODM3OCAzMi45MzMxIDcuMzk0NDRMMzIuNDkxIDguOTI5NzhMMzQuNzMxMSAxMC4zODgxQzM0Ljg0MjYgMTAuNDU5MiAzNC45MjIzIDEwLjU1NiAzNC45NzAxIDEwLjY3ODVDMzUuMDE3OSAxMC44MDEgMzUuMDI5OCAxMC45MjU1IDM1LjAwNTkgMTEuMDUyQzM0Ljk4NiAxMS4xNzQ1IDM0LjkyODIgMTEuMjc1MyAzNC44MzI3IDExLjM1NDNMMzIuNzcxOCAxMy4wOTcxQzMyLjYwODUgMTMuMjM1NCAzMi40NDUyIDEzLjI5ODcgMzIuMjgxOSAxMy4yODY4QzMyLjEyMjYgMTMuMjc1IDMxLjk5MzIgMTMuMjEzNyAzMS44OTM3IDEzLjEwMzFDMzEuNzk4MSAxMi45OTY0IDMxLjc1NDMgMTIuODY1OSAzMS43NjIyIDEyLjcxMThDMzEuNzcwMiAxMi41NTM3IDMxLjg1MzggMTIuNDA3NSAzMi4wMTMxIDEyLjI3MzFMMzMuNDg4NiAxMS4wMTY0TDMxLjIwMDcgOS43NDE5MVpNMjcuMjA0NCAxNC44NjM3QzI3LjA4NDkgMTQuNzU3IDI3LjAxNzIgMTQuNjE4NiAyNy4wMDEzIDE0LjQ0ODdDMjYuOTg5MyAxNC4yNzg4IDI3LjA2MSAxNC4xMTY3IDI3LjIxNjMgMTMuOTYyNkwyOS4yMjM1IDExLjk3NjdMMjkuOTM0MyA5LjQ4MTA4QzMwLjA0MTggOS42MTU0NCAzMC4xNzUzIDkuNzQ1ODYgMzAuMzM0NSA5Ljg3MjMyQzMwLjQ5NzggOS45OTQ4MyAzMC42OTMgMTAuMTE3MyAzMC45MiAxMC4yMzk5TDMxLjExNzEgMTAuMzQ2NkwzMC4zMDQ3IDEyLjQzMzJDMzAuMjUyOSAxMi41NTU3IDMwLjIwOTEgMTIuNjQwNyAzMC4xNzMzIDEyLjY4ODFDMzAuMTQxNCAxMi43MzU1IDMwLjA4NTYgMTIuNzk4OCAzMC4wMDYgMTIuODc3OEwyOC4wNzA2IDE0Ljc4MDdDMjcuOTE5MiAxNC45MjY5IDI3Ljc2MzkgMTUgMjcuNjA0NiAxNUMyNy40NDkzIDE1IDI3LjMxNTkgMTQuOTU0NiAyNy4yMDQ0IDE0Ljg2MzdaIn0pfSl9ZnVuY3Rpb24gRTMoKXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiI0OSAzIDE2IDEyIixmaWxsOiJjdXJyZW50Q29sb3IiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WCgicGF0aCIse2Q6Ik01Ny4wMDI4IDExLjk0OUM1Ni44NDggMTEuOTQ5IDU2LjcxNzIgMTEuODk4NyA1Ni42MTAzIDExLjc5OEM1Ni41MDM1IDExLjY5MzkgNTYuNDUwMSAxMS41NzA3IDU2LjQ1MDEgMTEuNDI4NFY5LjAyODYzTDU0LjQyMTYgNy4xMDc3NkM1NC4yMjI3IDYuOTIwMzUgNTQuMDk1NSA2LjY5ODI1IDU0LjA0MDMgNi40NDE0NEM1My45ODUgNi4xODExNiA1NC4wMTA4IDUuOTI3ODIgNTQuMTE3NiA1LjY4MTQyQzU0LjIyODIgNS40Mzg0OSA1NC4zOTc3IDUuMjQ0MTQgNTQuNjI2MSA1LjA5ODM5QzU0Ljg1ODMgNC45NDkxNiA1NS4xMTYyIDQuODc0NTQgNTUuMzk5OSA0Ljg3NDU0SDU4LjExMzdDNTguNDIzMiA0Ljg3NDU0IDU4LjY4NDggNC45NzY5MiA1OC44OTg1IDUuMTgxNjhDNTkuMTE1OSA1LjM4Mjk2IDU5LjIyNDYgNS42MjkzNiA1OS4yMjQ2IDUuOTIwODdWNy43NjM2Nkg2MC44OTkzQzYxLjA1MDQgNy43NjM2NiA2MS4xNzk0IDcuODEzOTkgNjEuMjg2MiA3LjkxNDYzQzYxLjM5MzEgOC4wMTUyNyA2MS40NDY1IDguMTM4NDcgNjEuNDQ2NSA4LjI4NDIzQzYxLjQ0NjUgOC40MjY1MSA2MS4zOTMxIDguNTQ3OTggNjEuMjg2MiA4LjY0ODYyQzYxLjE3OTQgOC43NDkyNiA2MS4wNTA0IDguNzk5NTggNjAuODk5MyA4Ljc5OTU4SDU4LjY3MTlDNTguNTIwOSA4Ljc5OTU4IDU4LjM5MDEgOC43NDkyNiA1OC4yNzk1IDguNjQ4NjJDNTguMTcyNyA4LjU0Nzk4IDU4LjExOTIgOC40MjY1MSA1OC4xMTkyIDguMjg0MjNWNi45ODgwM0M1OC4xMTkyIDYuOTE4NjIgNTguMDk5IDYuODU0NDIgNTguMDU4NCA2Ljc5NTQyQzU4LjAxNzkgNi43MzI5NSA1Ny45NDQyIDYuNzAxNzIgNTcuODM3MyA2LjcwMTcySDU2LjA2MzJDNTUuOTkzMiA2LjcwMTcyIDU1Ljk0NTMgNi43Mjk0OCA1NS45MTk1IDYuNzg1MDFDNTUuODk3NCA2LjgzNzA2IDU1LjkwODQgNi44ODczOSA1NS45NTI2IDYuOTM1OTdMNTcuNDAwNyA4LjQ1NjAxQzU3LjUwMzkgOC41NjM2IDU3LjU1NTUgOC42ODE1OSA1Ny41NTU1IDguODA5OTlWMTEuNDI4NEM1Ny41NTU1IDExLjU3MDcgNTcuNTAwMiAxMS42OTM5IDU3LjM4OTcgMTEuNzk4QzU3LjI4MjggMTEuODk4NyA1Ny4xNTM4IDExLjk0OSA1Ny4wMDI4IDExLjk0OVpNNTMuMDAxMiAxNEM1Mi41ODQ4IDE0IDUyLjE5NDIgMTMuOTI3MSA1MS44Mjk1IDEzLjc4MTRDNTEuNDY4NCAxMy42MzU2IDUxLjE0OTYgMTMuNDMyNiA1MC44NzMzIDEzLjE3MjNDNTAuNjAwNiAxMi45MTIgNTAuMzg2OSAxMi42MTE4IDUwLjIzMjEgMTIuMjcxN0M1MC4wNzc0IDExLjkyODIgNTAgMTEuNTYwMyA1MCAxMS4xNjgxQzUwIDEwLjc3NiA1MC4wNzc0IDEwLjQwOTkgNTAuMjMyMSAxMC4wNjk4QzUwLjM4NjkgOS43MjYxOCA1MC42MDA2IDkuNDI0MjYgNTAuODczMyA5LjE2Mzk4QzUxLjE0OTYgOC45MDM3IDUxLjQ2ODQgOC43MDA2OCA1MS44Mjk1IDguNTU0OTJDNTIuMTk0MiA4LjQwOTE2IDUyLjU4NDggOC4zMzYyOCA1My4wMDEyIDguMzM2MjhDNTMuNDIxMiA4LjMzNjI4IDUzLjgxMTggOC40MDkxNiA1NC4xNzI5IDguNTU0OTJDNTQuNTM3NyA4LjcwMDY4IDU0Ljg1NjQgOC45MDM3IDU1LjEyOTEgOS4xNjM5OEM1NS40MDU0IDkuNDI0MjYgNTUuNjIxIDkuNzI2MTggNTUuNzc1OCAxMC4wNjk4QzU1LjkzMDUgMTAuNDA5OSA1Ni4wMDc5IDEwLjc3NiA1Ni4wMDc5IDExLjE2ODFDNTYuMDA3OSAxMS41NjAzIDU1LjkzMDUgMTEuOTI4MiA1NS43NzU4IDEyLjI3MTdDNTUuNjIxIDEyLjYxMTggNTUuNDA1NCAxMi45MTIgNTUuMTI5MSAxMy4xNzIzQzU0Ljg1NjQgMTMuNDMyNiA1NC41Mzc3IDEzLjYzNTYgNTQuMTcyOSAxMy43ODE0QzUzLjgxMTggMTMuOTI3MSA1My40MjEyIDE0IDUzLjAwMTIgMTRaTTUzLjAwMTIgMTMuMjY2QzUzLjQxMDIgMTMuMjY2IDUzLjc4MjMgMTMuMTcwNiA1NC4xMTc2IDEyLjk3OTdDNTQuNDU2NiAxMi43OTIzIDU0LjcyNTYgMTIuNTQwNyA1NC45MjQ2IDEyLjIyNDlDNTUuMTI3MyAxMS45MDU2IDU1LjIyODYgMTEuNTUzNCA1NS4yMjg2IDExLjE2ODFDNTUuMjI4NiAxMC43ODI5IDU1LjEyNzMgMTAuNDMyNCA1NC45MjQ2IDEwLjExNjZDNTQuNzI1NiA5Ljc5NzMzIDU0LjQ1NjYgOS41NDM5OSA1NC4xMTc2IDkuMzU2NTlDNTMuNzgyMyA5LjE2NTcxIDUzLjQxMDIgOS4wNzAyOCA1My4wMDEyIDkuMDcwMjhDNTIuNTk1OSA5LjA3MDI4IDUyLjIyMzcgOS4xNjU3MSA1MS44ODQ3IDkuMzU2NTlDNTEuNTQ5NCA5LjU0Mzk5IDUxLjI4MDQgOS43OTczMyA1MS4wNzc4IDEwLjExNjZDNTAuODc4OCAxMC40MzI0IDUwLjc3OTMgMTAuNzgyOSA1MC43NzkzIDExLjE2ODFDNTAuNzc5MyAxMS41NTM0IDUwLjg3ODggMTEuOTA1NiA1MS4wNzc4IDEyLjIyNDlDNTEuMjgwNCAxMi41NDA3IDUxLjU0OTQgMTIuNzkyMyA1MS44ODQ3IDEyLjk3OTdDNTIuMjIzNyAxMy4xNzA2IDUyLjU5NTkgMTMuMjY2IDUzLjAwMTIgMTMuMjY2Wk02Mi40ODAxIDkuNjExNjZDNjIuMzYyMiA5LjUxNDQ5IDYyLjMwMTQgOS40MTU1OCA2Mi4yOTc3IDkuMzE0OTRDNjIuMjk3NyA5LjIxMDgzIDYyLjMzMDggOS4xMjQwNyA2Mi4zOTcyIDkuMDU0NjZDNjIuNDY3MiA4Ljk4NTI1IDYyLjU1MzggOC45NDUzNCA2Mi42NTY5IDguOTM0OTNDNjIuNzYzOCA4LjkyMTA1IDYyLjg2ODggOC45NTU3NSA2Mi45NzIgOS4wMzkwNEM2My4yODg5IDkuMzAyNzkgNjMuNTM5NCA5LjYxNjg3IDYzLjcyMzYgOS45ODEyNkM2My45MDc5IDEwLjM0NTcgNjQgMTAuNzQxMyA2NCAxMS4xNjgxQzY0IDExLjU2MDMgNjMuOTIyNiAxMS45MjgyIDYzLjc2NzkgMTIuMjcxN0M2My42MTMxIDEyLjYxMTggNjMuMzk3NiAxMi45MTIgNjMuMTIxMiAxMy4xNzIzQzYyLjg0ODUgMTMuNDMyNiA2Mi41Mjk4IDEzLjYzNTYgNjIuMTY1IDEzLjc4MTRDNjEuODAzOSAxMy45MjcxIDYxLjQxNTIgMTQgNjAuOTk4OCAxNEM2MC41ODI0IDE0IDYwLjE5MTkgMTMuOTI3MSA1OS44MjcxIDEzLjc4MTRDNTkuNDYyMyAxMy42MzU2IDU5LjE0MTcgMTMuNDMyNiA1OC44NjU0IDEzLjE3MjNDNTguNTkyNyAxMi45MTIgNTguMzc5IDEyLjYxMTggNTguMjI0MiAxMi4yNzE3QzU4LjA2OTUgMTEuOTI4MiA1Ny45OTIxIDExLjU2MDMgNTcuOTkyMSAxMS4xNjgxQzU3Ljk5MjEgMTAuOTYzNCA1OC4wMTQyIDEwLjc2NTYgNTguMDU4NCAxMC41NzQ3QzU4LjEwNjMgMTAuMzgwNCA1OC4xNzI3IDEwLjE5MyA1OC4yNTc0IDEwLjAxMjVDNTguMzA5IDkuOTAxNDQgNTguMzgwOCA5LjgzMDMgNTguNDczIDkuNzk5MDZDNTguNTY4OCA5Ljc2NDM2IDU4LjY2MjcgOS43NjQzNiA1OC43NTQ4IDkuNzk5MDZDNTguODUwNiA5LjgzMDMgNTguOTIyNSA5Ljg5Mjc2IDU4Ljk3MDQgOS45ODY0N0M1OS4wMTgzIDEwLjA4MDIgNTkuMDEwOSAxMC4xOTgyIDU4Ljk0ODMgMTAuMzQwNEM1OC44MzA0IDEwLjYwMDcgNTguNzcxNCAxMC44NzY2IDU4Ljc3MTQgMTEuMTY4MUM1OC43NzE0IDExLjU1MzQgNTguODcwOSAxMS45MDU2IDU5LjA2OTkgMTIuMjI0OUM1OS4yNzI1IDEyLjU0MDcgNTkuNTQxNSAxMi43OTIzIDU5Ljg3NjggMTIuOTc5N0M2MC4yMTU4IDEzLjE3MDYgNjAuNTg5OCAxMy4yNjYgNjAuOTk4OCAxMy4yNjZDNjEuNDA3OCAxMy4yNjYgNjEuNzggMTMuMTcwNiA2Mi4xMTUzIDEyLjk3OTdDNjIuNDUwNiAxMi43OTIzIDYyLjcxNzcgMTIuNTQwNyA2Mi45MTY3IDEyLjIyNDlDNjMuMTE5NCAxMS45MDU2IDYzLjIyMDcgMTEuNTUzNCA2My4yMjA3IDExLjE2ODFDNjMuMjIwNyAxMC44NTkzIDYzLjE1MjUgMTAuNTcxMiA2My4wMTYyIDEwLjMwNEM2Mi44ODM1IDEwLjAzMzMgNjIuNzA0OCA5LjgwMjUzIDYyLjQ4MDEgOS42MTE2NlpNNjAuOTk4OCA2LjI3NDg2QzYwLjc3NCA2LjI3NDg2IDYwLjU2OTUgNi4yMjQ1NCA2MC4zODUzIDYuMTIzODlDNjAuMjAxMSA2LjAxOTc4IDYwLjA1MzcgNS44ODI3IDU5Ljk0MzIgNS43MTI2NUM1OS44MzYzIDUuNTM5MTMgNTkuNzgyOSA1LjM0NjUyIDU5Ljc4MjkgNS4xMzQ4M0M1OS43ODI5IDQuOTI2NiA1OS44MzYzIDQuNzM3NDYgNTkuOTQzMiA0LjU2NzQxQzYwLjA1MzcgNC4zOTM4OSA2MC4yMDExIDQuMjU2ODEgNjAuMzg1MyA0LjE1NjE3QzYwLjU2OTUgNC4wNTIwNiA2MC43NzQgNCA2MC45OTg4IDRDNjEuMjE5OSA0IDYxLjQyMDcgNC4wNTIwNiA2MS42MDEzIDQuMTU2MTdDNjEuNzgxOCA0LjI1NjgxIDYxLjkyNTUgNC4zOTM4OSA2Mi4wMzI0IDQuNTY3NDFDNjIuMTQyOSA0LjczNzQ2IDYyLjE5ODIgNC45MjY2IDYyLjE5ODIgNS4xMzQ4M0M2Mi4xOTgyIDUuMzQ2NTIgNjIuMTQyOSA1LjUzOTEzIDYyLjAzMjQgNS43MTI2NUM2MS45MjU1IDUuODgyNyA2MS43ODE4IDYuMDE5NzggNjEuNjAxMyA2LjEyMzg5QzYxLjQyMDcgNi4yMjQ1NCA2MS4yMTk5IDYuMjc0ODYgNjAuOTk4OCA2LjI3NDg2WiJ9KX0pfWZ1bmN0aW9uIHkzKCl7cmV0dXJuIFgoInN2ZyIse3dpZHRoOiIxNiIsaGVpZ2h0OiIxNCIsdmlld0JveDoiNzAgNSAxOCA5IixmaWxsOiJjdXJyZW50Q29sb3IiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WCgicGF0aCIse2Q6Ik04NS41NzIgMTIuMTAzOEM4Ni4wNiAxMi4xMDM4IDg2LjQyMDcgMTEuOTg5MiA4Ni42NTQyIDExLjc2MDFDODYuODg0NyAxMS41MjgxIDg3IDExLjE2NDEgODcgMTAuNjY4MVYxMC4xMTEyQzg3IDkuNzY5MDEgODYuOTIwNyA5LjQ2MzAyIDg2Ljc2MiA5LjE5MzI5Qzg2LjYwMzMgOC45MjA2NSA4Ni4zNzU4IDguNjk3MzMgODYuMDc5NCA4LjUyMzMxQzg1Ljc4MDEgOC4zNDkyOSA4NS40MjIzIDguMjM3NjIgODUuMDA2MiA4LjE4ODMyTDgzLjAxNjggNy45NTMzOUw4MS4xOTgxIDYuODQ4MzVDODAuOTIyNyA2LjY4MDEzIDgwLjY2MDggNi41NDIzNyA4MC40MTIzIDYuNDM1MDVDODAuMTYwOCA2LjMyNDg0IDc5Ljg5NzQgNi4yMzc4MyA3OS42MjE5IDYuMTc0MDJDNzkuMzQ2NSA2LjExMDIxIDc5LjAzODIgNi4wNjUyNiA3OC42OTY5IDYuMDM5MTVDNzguMzUyNiA2LjAxMzA1IDc3Ljk1MTQgNiA3Ny40OTM0IDZINzYuODEwOEM3Ni4zODg3IDYgNzUuOTk1IDYuMDQ5MzEgNzUuNjI5OCA2LjE0NzkyQzc1LjI2MTYgNi4yNDM2MyA3NC45MTg4IDYuMzcxMjUgNzQuNjAxNSA2LjUzMDc2Qzc0LjI4MTEgNi42OTAyOCA3My45ODYyIDYuODY1NzYgNzMuNzE2OCA3LjA1NzE4QzczLjQ0NDQgNy4yNDg2IDczLjE5NTkgNy40MzcxMiA3Mi45NzE0IDcuNjIyNzVMNzIuMjU3NCA3Ljg1MzMzQzcxLjgzMjMgNy45ODY3NCA3MS41MTY0IDguMTgzOTcgNzEuMzA5OSA4LjQ0NUM3MS4xMDMzIDguNzAzMTMgNzEgOS4wMzM3NyA3MSA5LjQzNjkyVjEwLjY0MkM3MSAxMS4xNDY3IDcxLjExNTMgMTEuNTE2NSA3MS4zNDU4IDExLjc1MTRDNzEuNTc2MyAxMS45ODYzIDcxLjkzNyAxMi4xMDM4IDcyLjQyOCAxMi4xMDM4SDcyLjcxNTRDNzIuNzAwNCAxMi4wMzcxIDcyLjY4ODUgMTEuOTcwNCA3Mi42Nzk1IDExLjkwMzdDNzIuNjcwNSAxMS44MzQxIDcyLjY2NiAxMS43NjQ1IDcyLjY2NiAxMS42OTQ4QzcyLjY2NiAxMS4zNTU1IDcyLjc0OTggMTEuMDQ5NSA3Mi45MTc1IDEwLjc3NjlDNzMuMDg1MSAxMC41MDQyIDczLjMxMTIgMTAuMjg4MiA3My41OTU2IDEwLjEyODdDNzMuODc3IDkuOTY2MjMgNzQuMTkyOCA5Ljg4NTAyIDc0LjU0MzEgOS44ODUwMkM3NC44OTA0IDkuODg1MDIgNzUuMjA2MiA5Ljk2NjIzIDc1LjQ5MDYgMTAuMTI4N0M3NS43NzIgMTAuMjg4MiA3NS45OTY1IDEwLjUwNDIgNzYuMTY0MiAxMC43NzY5Qzc2LjMzMTggMTEuMDQ5NSA3Ni40MTU3IDExLjM1NTUgNzYuNDE1NyAxMS42OTQ4Qzc2LjQxNTcgMTEuNzY0NSA3Ni40MTEyIDExLjgzNDEgNzYuNDAyMiAxMS45MDM3Qzc2LjM5MzIgMTEuOTcwNCA3Ni4zODI3IDEyLjAzNzEgNzYuMzcwOCAxMi4xMDM4SDgxLjYzODJDODEuNjIwMyAxMi4wMzcxIDgxLjYwODMgMTEuOTcwNCA4MS42MDIzIDExLjkwMzdDODEuNTkzMyAxMS44MzQxIDgxLjU4ODggMTEuNzY0NSA4MS41ODg4IDExLjY5NDhDODEuNTg4OCAxMS4zNTU1IDgxLjY3MjcgMTEuMDQ5NSA4MS44NDAzIDEwLjc3NjlDODIuMDA1IDEwLjUwNDIgODIuMjI5NSAxMC4yODgyIDgyLjUxMzkgMTAuMTI4N0M4Mi43OTUzIDkuOTY2MjMgODMuMTExMSA5Ljg4NTAyIDgzLjQ2MTQgOS44ODUwMkM4My44MTE3IDkuODg1MDIgODQuMTI5IDkuOTY2MjMgODQuNDEzNCAxMC4xMjg3Qzg0LjY5NDggMTAuMjg4MiA4NC45MTk0IDEwLjUwNDIgODUuMDg3IDEwLjc3NjlDODUuMjUxNyAxMS4wNDk1IDg1LjMzNCAxMS4zNTU1IDg1LjMzNCAxMS42OTQ4Qzg1LjMzNCAxMS43NjQ1IDg1LjMzMSAxMS44MzQxIDg1LjMyNSAxMS45MDM3Qzg1LjMxNiAxMS45NzA0IDg1LjMwNDEgMTIuMDM3MSA4NS4yODkxIDEyLjEwMzhIODUuNTcyWk04My40NjE0IDEzQzgzLjcxMjkgMTMgODMuOTQwNCAxMi45NDIgODQuMTQ0IDEyLjgyNkM4NC4zNDc2IDEyLjcxIDg0LjUwOTIgMTIuNTUzMyA4NC42MjkgMTIuMzU2MUM4NC43NDg3IDEyLjE1ODkgODQuODA4NiAxMS45Mzg1IDg0LjgwODYgMTEuNjk0OEM4NC44MDg2IDExLjQ1MTIgODQuNzQ4NyAxMS4yMzA4IDg0LjYyOSAxMS4wMzM2Qzg0LjUwOTIgMTAuODM2MyA4NC4zNDc2IDEwLjY3OTcgODQuMTQ0IDEwLjU2MzdDODMuOTQwNCAxMC40NDc3IDgzLjcxMjkgMTAuMzg5NyA4My40NjE0IDEwLjM4OTdDODMuMjA2OSAxMC4zODk3IDgyLjk3NzkgMTAuNDQ3NyA4Mi43NzQzIDEwLjU2MzdDODIuNTcwOCAxMC42Nzk3IDgyLjQwOTEgMTAuODM2MyA4Mi4yODk0IDExLjAzMzZDODIuMTY5NiAxMS4yMzA4IDgyLjEwOTcgMTEuNDUxMiA4Mi4xMDk3IDExLjY5NDhDODIuMTA5NyAxMS45Mzg1IDgyLjE2OTYgMTIuMTU4OSA4Mi4yODk0IDEyLjM1NjFDODIuNDA5MSAxMi41NTMzIDgyLjU3MDggMTIuNzEgODIuNzc0MyAxMi44MjZDODIuOTc3OSAxMi45NDIgODMuMjA2OSAxMyA4My40NjE0IDEzWk03NC41NDMxIDEzQzc0Ljc5NDYgMTMgNzUuMDIyMSAxMi45NDIgNzUuMjI1NyAxMi44MjZDNzUuNDI5MiAxMi43MSA3NS41OTA5IDEyLjU1MzMgNzUuNzEwNiAxMi4zNTYxQzc1LjgzMDQgMTIuMTU4OSA3NS44OTAzIDExLjkzODUgNzUuODkwMyAxMS42OTQ4Qzc1Ljg5MDMgMTEuNDUxMiA3NS44MzA0IDExLjIzMDggNzUuNzEwNiAxMS4wMzM2Qzc1LjU5MDkgMTAuODM2MyA3NS40MjkyIDEwLjY3OTcgNzUuMjI1NyAxMC41NjM3Qzc1LjAyMjEgMTAuNDQ3NyA3NC43OTQ2IDEwLjM4OTcgNzQuNTQzMSAxMC4zODk3Qzc0LjI4ODYgMTAuMzg5NyA3NC4wNTk2IDEwLjQ0NzcgNzMuODU2IDEwLjU2MzdDNzMuNjUyNCAxMC42Nzk3IDczLjQ5MDggMTAuODM2MyA3My4zNzEgMTEuMDMzNkM3My4yNTEzIDExLjIzMDggNzMuMTkxNCAxMS40NTEyIDczLjE5MTQgMTEuNjk0OEM3My4xOTE0IDExLjkzODUgNzMuMjUxMyAxMi4xNTg5IDczLjM3MSAxMi4zNTYxQzczLjQ5MDggMTIuNTUzMyA3My42NTI0IDEyLjcxIDczLjg1NiAxMi44MjZDNzQuMDU5NiAxMi45NDIgNzQuMjg4NiAxMyA3NC41NDMxIDEzWiJ9KX0pfWZ1bmN0aW9uIGkwKHtzaXplOiQ9MTgsc3Ryb2tlV2lkdGg6Sj0yfSl7cmV0dXJuIFgoaDIse3NpemU6JCxzdHJva2VXaWR0aDpKfSl9dmFyIHg5PSJBY2Nlc3NpYmlsaXR5IHVuYXZhaWxhYmxlIG9uIHRoaXMgc2ltdWxhdG9yLiI7ZnVuY3Rpb24gRDUoJCl7cmV0dXJuICQ/LmVycm9ycz8uaW5jbHVkZXMoeDkpPz8hMX1mdW5jdGlvbiB3NSgkLEope2lmKCQ9PT1KKXJldHVybiEwO2lmKCQuaWQhPT1KLmlkfHwkLnBhdGghPT1KLnBhdGh8fCQubGFiZWwhPT1KLmxhYmVsfHwkLnZhbHVlIT09Si52YWx1ZXx8JC5yb2xlIT09Si5yb2xlfHwkLnR5cGUhPT1KLnR5cGV8fCQuZW5hYmxlZCE9PUouZW5hYmxlZClyZXR1cm4hMTtsZXQgUT0kLmZyYW1lLFo9Si5mcmFtZTtyZXR1cm4gUT09PVp8fFEueD09PVoueCYmUS55PT09Wi55JiZRLndpZHRoPT09Wi53aWR0aCYmUS5oZWlnaHQ9PT1aLmhlaWdodH1mdW5jdGlvbiBUNSgkLEope2xldCBRPSQubGFiZWx8fCQucm9sZXx8YGVsZW1lbnQgJHtKKzF9YCxaPSQucm9sZXx8JC50eXBlO3JldHVybntpZDokLmlkLHBhdGg6JC5wYXRoLGxhYmVsOlEsdmFsdWU6JC52YWx1ZSxyb2xlOlosdHlwZTokLnR5cGUsZW5hYmxlZDokLmVuYWJsZWQsZnJhbWU6JC5mcmFtZX19ZnVuY3Rpb24gajkoJCxKKXtsZXQgUT1NYXRoLm1heCgwLCQueCksWj1NYXRoLm1heCgwLCQueSksSz1NYXRoLm1pbihKLndpZHRoLCQueCskLndpZHRoKSxZPU1hdGgubWluKEouaGVpZ2h0LCQueSskLmhlaWdodCkscT1NYXRoLm1heCgwLEstUSksRz1NYXRoLm1heCgwLFktWik7cmV0dXJuIHE+MCYmRz4wP3t4OlEseTpaLHdpZHRoOnEsaGVpZ2h0Okd9Om51bGx9ZnVuY3Rpb24gYTAoJCl7cmV0dXJuICQuaWR9ZnVuY3Rpb24gYjMoJCl7cmV0dXJuYCR7JC54fSwkeyQueX0gJHskLndpZHRofXgkeyQuaGVpZ2h0fWB9ZnVuY3Rpb24gdjkoJCl7cmV0dXJuW2BBWCBsYWJlbDogJHskLmxhYmVsfHwiVW5sYWJlbGVkIn1gLCQucm9sZT9gcm9sZTogJHskLnJvbGV9YDoiIiwkLnR5cGU/YHR5cGU6ICR7JC50eXBlfWA6IiIsJC52YWx1ZT9gdmFsdWU6ICR7JC52YWx1ZX1gOiIiLCQuaWQ/YGlkOiAkeyQuaWR9YDoiIixgcGF0aDogJHskLnBhdGh9YCxgZnJhbWU6ICR7YjMoJC5mcmFtZSl9YF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIjsgIil9ZnVuY3Rpb24gbDIoJCl7cmV0dXJuICQmJnR5cGVvZiAkLmRldmljZT09PSJzdHJpbmciJiZ0eXBlb2YgJC51cmw9PT0ic3RyaW5nIj8kOm51bGx9ZnVuY3Rpb24gUjkoJCl7bGV0IEo9bmV3IFVSTCgkLnN0cmVhbVVybCk7cmV0dXJuIEoucGF0aG5hbWU9Si5wYXRobmFtZS5yZXBsYWNlKC9cL3N0cmVhbVwuW14vXSskLywiL3N0cmVhbS5tanBlZyIpLEouc2VhcmNoPSIiLEouaGFzaD0iIixKLnRvU3RyaW5nKCl9ZnVuY3Rpb24gUzMoJCl7bGV0IEo9bmV3IFVSTCgkLnN0cmVhbVVybCk7cmV0dXJuIEoucGF0aG5hbWU9Si5wYXRobmFtZS5yZXBsYWNlKC9cL3N0cmVhbVwuW14vXSskLywiL3dlYnJ0Yy9vZmZlciIpLEouc2VhcmNoPSIiLEouaGFzaD0iIixKLnRvU3RyaW5nKCl9ZnVuY3Rpb24gaDkoJCl7bGV0IEo9bmV3IFVSTChTMygkKSk7cmV0dXJuIEoucGF0aG5hbWU9Si5wYXRobmFtZS5yZXBsYWNlKC9cL29mZmVyJC8sIi9jbG9zZSIpLEoudG9TdHJpbmcoKX1mdW5jdGlvbiBmMSgkKXtsZXQgUT13aW5kb3cuX19TSU1fUFJFVklFV19fPy5iYXNlUGF0aD8/KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyskLywiIil8fCIvIik7cmV0dXJuIFE9PT0iLyI/YC8keyR9YDpgJHtRfS8keyR9YH12YXIgbCQ9NTAwMCxkJD0yMDAwLGQyPW51bGwseDM9bnVsbCxjJD0xLG8kPTEsQjI9bmV3IE1hcCxWMj1uZXcgTWFwO2Z1bmN0aW9uIHIkKCl7bGV0ICQ9bmV3IFVSTChmMSgiZXhlYy13cyIpLHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtyZXR1cm4gJC5wcm90b2NvbD0kLnByb3RvY29sPT09Imh0dHBzOiI/IndzczoiOiJ3czoiLCQudG9TdHJpbmcoKX1mdW5jdGlvbiBpJCgkKXtmb3IobGV0IEogb2YgQjIudmFsdWVzKCkpSi5yZWplY3QoJCk7QjIuY2xlYXIoKX1mdW5jdGlvbiBnOSgpe3JldHVybiBkMj8/PW5ldyBQcm9taXNlKCgkLEopPT57bGV0IFE9ITEsWjt0cnl7Wj1uZXcgV2ViU29ja2V0KHIkKCkpfWNhdGNoKHEpe2QyPW51bGwsSihxKTtyZXR1cm59bGV0IEs9c2V0VGltZW91dCgoKT0+e2lmKCFRKVE9ITAsZDI9bnVsbCxKKEVycm9yKCJjb250cm9sIHNvY2tldCBjb25uZWN0IHRpbWVvdXQiKSksWi5jbG9zZSgpfSxsJCk7Wi5vbm9wZW49KCk9PntaLnNlbmQoSlNPTi5zdHJpbmdpZnkoe3Rva2VuOndpbmRvdy5fX1NJTV9QUkVWSUVXX18/LmV4ZWNUb2tlbj8/IiJ9KSl9LFoub25tZXNzYWdlPShxKT0+e2xldCBHO3RyeXtHPUpTT04ucGFyc2UoU3RyaW5nKHEuZGF0YSkpfWNhdGNoe3JldHVybn1pZihHLnJlYWR5KXtpZighUSlRPSEwLGNsZWFyVGltZW91dChLKSx4Mz1aLCQoWik7cmV0dXJufWlmKHR5cGVvZiBHLnN1Yj09PSJudW1iZXIiKXtsZXQgQj1WMi5nZXQoRy5zdWIpO2lmKCFCKXJldHVybjtpZihHLmVuZClWMi5kZWxldGUoRy5zdWIpLEIub25FbmQoKTtlbHNlIGlmKHR5cGVvZiBHLmRhdGE9PT0ic3RyaW5nIilCLm9uRGF0YShHLmRhdGEpO3JldHVybn1pZih0eXBlb2YgRy5pZCE9PSJudW1iZXIiKXJldHVybjtsZXQgTj1CMi5nZXQoRy5pZCk7aWYoIU4pcmV0dXJuO0IyLmRlbGV0ZShHLmlkKSxOLnJlc29sdmUoRyl9O2xldCBZPSgpPT57ZDI9bnVsbCx4Mz1udWxsO2xldCBxPUVycm9yKCJjb250cm9sIHNvY2tldCBjbG9zZWQg4oCUIHJlbG9hZCB0aGUgcGFnZSBpZiB0aGlzIHBlcnNpc3RzIik7aSQocSk7bGV0IEc9Wy4uLlYyLnZhbHVlcygpXTtWMi5jbGVhcigpO2ZvcihsZXQgTiBvZiBHKU4ub25FbmQoKTtpZighUSlRPSEwLGNsZWFyVGltZW91dChLKSxKKHEpfTtaLm9uZXJyb3I9WSxaLm9uY2xvc2U9WX0pLGQyfWFzeW5jIGZ1bmN0aW9uIGY5KCQsSil7bGV0IFE9YXdhaXQgZzkoKTtpZihRLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTil0aHJvdyBFcnJvcigiY29udHJvbCBzb2NrZXQgbm90IG9wZW4iKTtyZXR1cm4gbmV3IFByb21pc2UoKFosSyk9PntsZXQgWT1jJCsrLHE9KCk9PntCMi5kZWxldGUoWSksSyhKPy5yZWFzb24/P25ldyBET01FeGNlcHRpb24oIkFib3J0ZWQiLCJBYm9ydEVycm9yIikpfTtpZihKKXtpZihKLmFib3J0ZWQpe3EoKTtyZXR1cm59Si5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIscSx7b25jZTohMH0pfUIyLnNldChZLHtyZXNvbHZlOihHKT0+e0o/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixxKSxaKEcpfSxyZWplY3Q6KEcpPT57Sj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHEpLEsoRyl9fSksUS5zZW5kKEpTT04uc3RyaW5naWZ5KHtpZDpZLC4uLiR9KSl9KX1hc3luYyBmdW5jdGlvbiBFMSgkLEope2xldCBRPWF3YWl0IGY5KHtjb21tYW5kOiR9LEo/LnNpZ25hbCk7cmV0dXJue3N0ZG91dDpRLnN0ZG91dD8/IiIsc3RkZXJyOlEuc3RkZXJyPz8iIixleGl0Q29kZTpRLmV4aXRDb2RlPz8xfX1hc3luYyBmdW5jdGlvbiBqMygkLEope2xldCBRPWF3YWl0IGY5KHt1aTokfSxKPy5zaWduYWwpO2lmKFEuZXJyb3IpdGhyb3cgRXJyb3IoUS5lcnJvcik7cmV0dXJuIFEuc3RhdHVzPz9udWxsfWZ1bmN0aW9uIHkwKCQpe2xldCBKPXtvbm1lc3NhZ2U6bnVsbCxvbmVycm9yOm51bGwsY2xvc2U6KCk9Pnt9fSxRPSExLFo9bnVsbCxLPW51bGwsWT0iIixxPShCKT0+e1krPUIucmVwbGFjZSgvXHJcbi9nLGAKYCk7bGV0IEw7d2hpbGUoKEw9WS5pbmRleE9mKGAKCmApKSE9PS0xKXtsZXQgVj1ZLnNsaWNlKDAsTCk7WT1ZLnNsaWNlKEwrMik7bGV0IFU9Vi5zcGxpdChgCmApLmZpbHRlcigoeik9Pnouc3RhcnRzV2l0aCgiZGF0YToiKSkubWFwKCh6KT0+ei5zbGljZSg1KS5yZXBsYWNlKC9eIC8sIiIpKS5qb2luKGAKYCk7aWYoVSlKLm9ubWVzc2FnZT8uKHtkYXRhOlV9KX19LEc9KCk9PntpZihRfHxLKXJldHVybjtKLm9uZXJyb3I/LigpLEs9c2V0VGltZW91dCgoKT0+e0s9bnVsbCxOKCl9LGQkKX0sTj1hc3luYygpPT57aWYoUSlyZXR1cm47dHJ5e2xldCBCPWF3YWl0IGc5KCk7aWYoUSlyZXR1cm47WT0iIixaPW8kKyssVjIuc2V0KFose29uRGF0YTpxLG9uRW5kOkd9KSxCLnNlbmQoSlNPTi5zdHJpbmdpZnkoe3N1YjpaLHBhdGg6JH0pKX1jYXRjaHtHKCl9fTtyZXR1cm4gTigpLEouY2xvc2U9KCk9PntpZihRPSEwLEspY2xlYXJUaW1lb3V0KEspO2lmKFohPT1udWxsKXtWMi5kZWxldGUoWik7dHJ5e3gzPy5zZW5kKEpTT04uc3RyaW5naWZ5KHt1bnN1YjpafSkpfWNhdGNoe31aPW51bGx9fSxKfWZ1bmN0aW9uIE0xKCQpe3JldHVybmAnJHskLnJlcGxhY2UoLycvZywiJ1xcJyciKX0nYH1mdW5jdGlvbiBtOSgkKXtsZXRbSixRXT1BKG51bGwpLFtaLEtdPUEoIkFYIG9mZiIpO3JldHVybiBiKCgpPT57aWYoISQpe1EobnVsbCksSygiQVggb2ZmIik7cmV0dXJufVEobnVsbCksSygiQVggd2FpdGluZyIpO2xldCBZPXkwKCQpO3JldHVybiBZLm9ubWVzc2FnZT0ocSk9Pnt0cnl7bGV0IEc9SlNPTi5wYXJzZShxLmRhdGEpO1EoRyksSyhENShHKT8iQVggdW5hdmFpbGFibGUiOmAke0cuZWxlbWVudHMubGVuZ3RofSBBWCBlbGVtZW50c2ApfWNhdGNoe0soIkFYIHBhcnNlIGVycm9yIil9fSxZLm9uZXJyb3I9KCk9PntLKCJBWCByZWNvbm5lY3RpbmciKX0sKCk9PlkuY2xvc2UoKX0sWyRdKSx7c25hcHNob3Q6SixzdGF0dXM6Wn19dmFyIHYzPXowKHtzbmFwc2hvdDpudWxsLHN0YXR1czoiQVggb2ZmIn0pLFIzPXowKG51bGwpO2Z1bmN0aW9uIE4yKCl7cmV0dXJuIFUwKHYzKX1mdW5jdGlvbiBJNSgpe2xldCAkPVUwKFIzKTtpZighJCl0aHJvdyBFcnJvcigiQVggc2VsZWN0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUiKTtyZXR1cm4gJH12YXIgcDk9YzAoZnVuY3Rpb24oe2VsZW1lbnQ6SixpbmRleDpRLHNjcmVlbjpaLGhpZ2hsaWdodGVkOkssc2VsZWN0ZWQ6WSxvbkhpZ2hsaWdodDpxLG9uU2VsZWN0Okd9KXtsZXQgTj1hMChKKSxCPVQ1KEosUSksTD1qOShKLmZyYW1lLFopO2lmKCFMKXJldHVybiBudWxsO2xldCBWPXY5KEIpO3JldHVybiBYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLCJkYXRhLWF4LWtleSI6TiwiZGF0YS1heC1pZCI6Qi5pZCwiZGF0YS1heC1wYXRoIjpCLnBhdGgsImRhdGEtYXgtbGFiZWwiOkIubGFiZWwsImRhdGEtYXgtdmFsdWUiOkIudmFsdWUsImRhdGEtYXgtcm9sZSI6Qi5yb2xlLCJkYXRhLWF4LXR5cGUiOkIudHlwZSwiZGF0YS1heC1lbmFibGVkIjpTdHJpbmcoQi5lbmFibGVkKSwiZGF0YS1heC1mcmFtZSI6YjMoQi5mcmFtZSksImRhdGEtYXgtc2VsZWN0ZWQiOlN0cmluZyhZKSwiYXJpYS1sYWJlbCI6Si5sYWJlbHx8Vix0aXRsZTpWLG9uQ2xpY2s6KCk9PkcoTiksb25Nb3VzZUVudGVyOigpPT5xKE4pLG9uTW91c2VMZWF2ZTooKT0+cShudWxsKSxjbGFzc05hbWU6ImFic29sdXRlIGJveC1ib3JkZXIgbWluLXctcHggbWluLWgtcHggcC0wIHJvdW5kZWQtWzNweF0gYm9yZGVyIGN1cnNvci1wb2ludGVyIHBvaW50ZXItZXZlbnRzLWF1dG8iLHN0eWxlOntsZWZ0OmAke0wueC9aLndpZHRoKjEwMH0lYCx0b3A6YCR7TC55L1ouaGVpZ2h0KjEwMH0lYCx3aWR0aDpgJHtMLndpZHRoL1oud2lkdGgqMTAwfSVgLGhlaWdodDpgJHtMLmhlaWdodC9aLmhlaWdodCoxMDB9JWAsYm9yZGVyQ29sb3I6WT8iIzYwYTVmYSI6Sz8iI2ZiYmYyNCI6IiMzNGQzOTkiLGJhY2tncm91bmQ6WT8icmdiYSg5NiwxNjUsMjUwLDAuMjQpIjpLPyJyZ2JhKDI0NSwxNTgsMTEsMC4yOCkiOiJyZ2JhKDE2LDE4NSwxMjksMC4xMikifX0pfSwoJCxKKT0+JC5pbmRleD09PUouaW5kZXgmJiQuaGlnaGxpZ2h0ZWQ9PT1KLmhpZ2hsaWdodGVkJiYkLnNlbGVjdGVkPT09Si5zZWxlY3RlZCYmJC5vbkhpZ2hsaWdodD09PUoub25IaWdobGlnaHQmJiQub25TZWxlY3Q9PT1KLm9uU2VsZWN0JiYkLnNjcmVlbi53aWR0aD09PUouc2NyZWVuLndpZHRoJiYkLnNjcmVlbi5oZWlnaHQ9PT1KLnNjcmVlbi5oZWlnaHQmJnc1KCQuZWxlbWVudCxKLmVsZW1lbnQpKTtmdW5jdGlvbiB1OSgpe2xldHtzbmFwc2hvdDokfT1OMigpLHtoaWdobGlnaHRlZEtleTpKLHNlbGVjdGVkS2V5OlEsc2V0SGlnaGxpZ2h0ZWRLZXk6WixzZXRTZWxlY3RlZEtleTpLfT1JNSgpO2lmKCEkPy5zY3JlZW4ud2lkdGh8fCEkPy5zY3JlZW4uaGVpZ2h0KXJldHVybiBudWxsO3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAgei0xMCBvdmVyZmxvdy1oaWRkZW4gcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46JC5lbGVtZW50cy5tYXAoKFkscSk9PntsZXQgRz1hMChZKTtyZXR1cm4gWChwOSx7ZWxlbWVudDpZLGluZGV4OnEsc2NyZWVuOiQuc2NyZWVuLGhpZ2hsaWdodGVkOkc9PT1KLHNlbGVjdGVkOkc9PT1RLG9uSGlnaGxpZ2h0Olosb25TZWxlY3Q6S30sRyl9KX0pfWZ1bmN0aW9uIGw5KHtlbmRwb2ludDokLGNoaWxkcmVuOkp9KXtsZXR7c25hcHNob3Q6USxzdGF0dXM6Wn09bTkoJCksW0ssWV09QShudWxsKSxbcSxHXT1BKG51bGwpO2IoKCk9PntpZighJClZKG51bGwpLEcobnVsbCl9LFskXSk7bGV0IE49VDEoKCk9Pih7c25hcHNob3Q6USxzdGF0dXM6Wn0pLFtRLFpdKSxCPVQxKCgpPT4oe2hpZ2hsaWdodGVkS2V5Okssc2VsZWN0ZWRLZXk6cSxzZXRIaWdobGlnaHRlZEtleTpZLHNldFNlbGVjdGVkS2V5Okd9KSxbSyxxXSk7cmV0dXJuIFgodjMse3ZhbHVlOk4sY2hpbGRyZW46WChSMyx7dmFsdWU6QixjaGlsZHJlbjpKfSl9KX1mdW5jdGlvbiBkOSh7b3ZlcmxheUVuYWJsZWQ6JCxzdHJlYW1pbmc6SixvblRvZ2dsZU92ZXJsYXk6UX0pe2xldHtzdGF0dXM6Wn09TjIoKSxbSyxZXT1BKCExKSxxPSQmJko7cmV0dXJuIFgocjEuQnV0dG9uLHsiYXJpYS1sYWJlbCI6JD8iSGlkZSBhY2Nlc3NpYmlsaXR5IG92ZXJsYXkiOiJTaG93IGFjY2Vzc2liaWxpdHkgb3ZlcmxheSIsImFyaWEtcHJlc3NlZCI6JCx0aXRsZTpaLG9uQ2xpY2s6USxvbk1vdXNlRW50ZXI6KCk9PlkoITApLG9uTW91c2VMZWF2ZTooKT0+WSghMSksc3R5bGU6cT97YmFja2dyb3VuZDpLPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIjoicmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC45NSkifTp2b2lkIDAsY2hpbGRyZW46WChtMCx7c2l6ZToxOSxzdHJva2VXaWR0aDoyfSl9KX1mdW5jdGlvbiBFNSh7Y2xhc3NOYW1lOiQ9IiJ9KXtyZXR1cm4gWCgiYSIse2hyZWY6Imh0dHBzOi8vZ2l0aHViLmNvbS9leHBvL3NlcnZlLXNpbSIsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9yZWZlcnJlciIsY2xhc3NOYW1lOmBpbmxpbmUtZmxleCBoLVszMHB4XSBtaW4tdy0wIGl0ZW1zLWNlbnRlciB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkLW1kIHB4LTEuNSBmb250LW1vbm8gdGV4dC1bMTJweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzY1IG5vLXVuZGVybGluZSBbdHJhbnNpdGlvbjpiYWNrZ3JvdW5kXzAuMTVzX2Vhc2UsY29sb3JfMC4xNXNfZWFzZV0gaG92ZXI6Ymctd2hpdGUvOCBob3Zlcjp0ZXh0LXdoaXRlLzg1IGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXdoaXRlLzYwICR7JH1gLnRyaW0oKSwiYXJpYS1sYWJlbCI6Ik9wZW4gc2VydmUtc2ltIix0aXRsZToiT3BlbiBzZXJ2ZS1zaW0iLGNoaWxkcmVuOiJzZXJ2ZS1zaW0ifSl9ZnVuY3Rpb24gYzkoe29wZW46JCxvbkNsaWNrOkp9KXtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOmBmaXhlZCB0b3AtMyBsZWZ0LTMgei0zMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBwLTEgW3RyYW5zaXRpb246b3BhY2l0eV8wLjE4c19lYXNlXSAkeyQ/Im9wYWNpdHktMCBwb2ludGVyLWV2ZW50cy1ub25lIjoib3BhY2l0eS0xMDAgcG9pbnRlci1ldmVudHMtYXV0byJ9YCxjaGlsZHJlbjpbWCgiYnV0dG9uIix7b25DbGljazpKLGNsYXNzTmFtZToidy1bMzBweF0gaC1bMzBweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcm91bmRlZC1tZCB0ZXh0LVsjOGU4ZTkzXSBjdXJzb3ItcG9pbnRlciBbdHJhbnNpdGlvbjpiYWNrZ3JvdW5kXzAuMTVzX2Vhc2UsY29sb3JfMC4xNXNfZWFzZV0gaG92ZXI6Ymctd2hpdGUvOCBob3Zlcjp0ZXh0LXdoaXRlIiwiYXJpYS1sYWJlbCI6Ik9wZW4gZGV2aWNlcyBzaWRlYmFyIiwiYXJpYS1wcmVzc2VkIjokLHRpdGxlOiJEZXZpY2VzIixjaGlsZHJlbjpYKEUwLHtzaXplOjE4LHN0cm9rZVdpZHRoOjEuNzV9KX0pLFgoRTUse30pXX0pfWZ1bmN0aW9uIG85KCQpe2lmKCFOdW1iZXIuaXNGaW5pdGUoJCl8fCQ8PTApcmV0dXJuIjAgQiI7bGV0IEo9JC8xMDczNzQxODI0O2lmKEo+PTEpcmV0dXJuYCR7Si50b0ZpeGVkKEo+PTEwPzA6MSl9IEdCYDtyZXR1cm5gJHsoJC8xMDQ4NTc2KS50b0ZpeGVkKDApfSBNQmB9ZnVuY3Rpb24geTUoJCl7bGV0IEo9JC5tYXRjaCgvXihbYS16QS1aXSspLSguKykkLyk7aWYoIUopcmV0dXJue29zOiQsdmVyc2lvbjoiIn07cmV0dXJue29zOkpbMV0sdmVyc2lvbjpKWzJdLnJlcGxhY2UoLy0vZywiLiIpfX1mdW5jdGlvbiByOSgkKXtyZXR1cm4geTUoJCkudmVyc2lvbnx8JH1mdW5jdGlvbiBiNSgkKXtsZXR7b3M6Six2ZXJzaW9uOlF9PXk1KCQpO3JldHVybiBRP2Ake0p9ICR7UX1gOkp9ZnVuY3Rpb24geDUoe2Nocm9tZTokLHNjcmVlbjpKLGludGVyYWN0aXZlOlE9ITEsb25CdXR0b246WixvbkNyb3duV2hlZWw6S30pe3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAiLGNoaWxkcmVuOlskLmJ1dHRvbnMubWFwKChZKT0+WChuJCx7Y2hyb21lOiQsYnV0dG9uOlksaW50ZXJhY3RpdmU6USxvbkJ1dHRvbjpaLG9uV2hlZWw6USYmWS5uYW1lPT09ImRpZ2l0YWwtY3Jvd24iP0s6dm9pZCAwfSxgYnV0dG9uLSR7WS5uYW1lfWApKSwkLmNvbXBvc2l0ZUltYWdlP1goYTkse2Nocm9tZTokLGltYWdlOiQuY29tcG9zaXRlSW1hZ2UscmVjdDokLmJvZHksekluZGV4OjF9KTokLnNsaWNlJiYkLmNvcm5lcj9YKHMkLHtjaHJvbWU6JH0pOm51bGwsWCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gYmctYmxhY2siLHN0eWxlOnsuLi5oMygkLCQuc2NyZWVuLDIpLGJvcmRlclJhZGl1czphJCgkKX0sY2hpbGRyZW46Sn0pXX0pfWZ1bmN0aW9uIGEkKCQpe3JldHVybmAkeyQuc2NyZWVuUmFkaXVzLyQuc2NyZWVuLndpZHRoKjEwMH0lIC8gJHskLnNjcmVlblJhZGl1cy8kLnNjcmVlbi5oZWlnaHQqMTAwfSVgfWZ1bmN0aW9uIG4kKHtjaHJvbWU6JCxidXR0b246SixpbnRlcmFjdGl2ZTpRLG9uQnV0dG9uOlosb25XaGVlbDpLfSl7bGV0W1kscV09QSghMSksW0csTl09QSghMSksQj1UKG51bGwpLEw9VChudWxsKSxWPVQoSyk7Vi5jdXJyZW50PUssYigoKT0+e2xldCBTPUwuY3VycmVudDtpZighU3x8IUspcmV0dXJuO2xldCBqPSgkMSk9PnskMS5wcmV2ZW50RGVmYXVsdCgpLCQxLnN0b3BQcm9wYWdhdGlvbigpLFYuY3VycmVudD8uKCQxLmRlbHRhWSwkMS5kZWx0YU1vZGUpfTtyZXR1cm4gUy5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsaix7cGFzc2l2ZTohMX0pLCgpPT5TLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndoZWVsIixqKX0sWyEhS10pO2xldCBVPVEmJkoudXNhZ2VQYWdlIT1udWxsJiZKLnVzYWdlIT1udWxsLHo9RCgoKT0+e2lmKEIuY3VycmVudD09PW51bGwpcmV0dXJuO0IuY3VycmVudD1udWxsLE4oITEpLFo/Lih7cGhhc2U6InVwIixidXR0b246Sn0pfSxbSixaXSksaz1EKChTKT0+e2lmKFMuYnV0dG9uIT09MCYmUy5wb2ludGVyVHlwZT09PSJtb3VzZSIpcmV0dXJuO1MucHJldmVudERlZmF1bHQoKSxTLnN0b3BQcm9wYWdhdGlvbigpLEIuY3VycmVudD1TLnBvaW50ZXJJZDt0cnl7Uy5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKFMucG9pbnRlcklkKX1jYXRjaHt9TighMCksWj8uKHtwaGFzZToiZG93biIsYnV0dG9uOkp9KX0sW0osWl0pLEg9Si5vblRvcD81OjAsQz1VJiYoWXx8RyksRj0oQz9KLmhvdmVyLng6MCkqMTAwLE89KEM/Si5ob3Zlci55OjApKjEwMCxJPUcmJkouaW1hZ2VEb3duP0ouaW1hZ2VEb3duOkouaW1hZ2Usdz1VP3tvblBvaW50ZXJEb3duOmssb25Qb2ludGVyVXA6eixvblBvaW50ZXJDYW5jZWw6eixvblBvaW50ZXJFbnRlcjooKT0+cSghMCksb25Qb2ludGVyTGVhdmU6KCk9PntxKCExKSx6KCl9fTp7fTtyZXR1cm4gWCgiZGl2Iix7cmVmOkwscm9sZTpVPyJidXR0b24iOnZvaWQgMCwiYXJpYS1sYWJlbCI6VT9pOShKLm5hbWUpOnZvaWQgMCwiYXJpYS1oaWRkZW4iOlU/dm9pZCAwOiEwLHRpdGxlOlU/aTkoSi5uYW1lKTp2b2lkIDAsY2xhc3NOYW1lOiJhYnNvbHV0ZSBzZWxlY3Qtbm9uZSIsc3R5bGU6ey4uLmgzKCQsSi5mcmFtZSxIKSx0cmFuc2Zvcm06Rnx8Tz9gdHJhbnNsYXRlKCR7Rn0lLCAke099JSlgOnZvaWQgMCx0cmFuc2l0aW9uOiJ0cmFuc2Zvcm0gMC4xMnMgZWFzZSIsY3Vyc29yOlU/InBvaW50ZXIiOnZvaWQgMCxwb2ludGVyRXZlbnRzOlU/ImF1dG8iOiJub25lIix0b3VjaEFjdGlvbjoibm9uZSJ9LC4uLncsY2hpbGRyZW46SSYmWCgiaW1nIix7YWx0OiIiLCJhcmlhLWhpZGRlbiI6ITAsZHJhZ2dhYmxlOiExLHNyYzpuOSgkLmlkZW50aWZpZXIsSSksY2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIHNpemUtZnVsbCBzZWxlY3Qtbm9uZSIsc3R5bGU6e29iamVjdEZpdDoiZmlsbCIsZmlsdGVyOkcmJiFKLmltYWdlRG93bj8iYnJpZ2h0bmVzcygxLjQpIjp2b2lkIDAsdHJhbnNpdGlvbjoiZmlsdGVyIDAuMTJzIGVhc2UiLFdlYmtpdFVzZXJEcmFnOiJub25lIn19KX0pfWZ1bmN0aW9uIGk5KCQpe3JldHVybiAkLnNwbGl0KCItIikubWFwKChKKT0+Si5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStKLnNsaWNlKDEpKS5qb2luKCIgIil9ZnVuY3Rpb24gcyQoe2Nocm9tZTokfSl7aWYoISQuc2xpY2V8fCEkLmNvcm5lcilyZXR1cm4gbnVsbDtsZXR7Ym9keTpKLGNvcm5lcjpRLHNsaWNlOlp9PSQsSz1NYXRoLm1heChKLndpZHRoLVEud2lkdGgqMiwwKSxZPU1hdGgubWF4KEouaGVpZ2h0LVEuaGVpZ2h0KjIsMCkscT1be2tleToidG9wLWxlZnQiLGltYWdlOloudG9wTGVmdCxyZWN0Ont4OkoueCx5OkoueSx3aWR0aDpRLndpZHRoLGhlaWdodDpRLmhlaWdodH19LHtrZXk6InRvcC1yaWdodCIsaW1hZ2U6Wi50b3BSaWdodCxyZWN0Ont4OkoueCtKLndpZHRoLVEud2lkdGgseTpKLnksd2lkdGg6US53aWR0aCxoZWlnaHQ6US5oZWlnaHR9fSx7a2V5OiJib3R0b20tbGVmdCIsaW1hZ2U6Wi5ib3R0b21MZWZ0LHJlY3Q6e3g6Si54LHk6Si55K0ouaGVpZ2h0LVEuaGVpZ2h0LHdpZHRoOlEud2lkdGgsaGVpZ2h0OlEuaGVpZ2h0fX0se2tleToiYm90dG9tLXJpZ2h0IixpbWFnZTpaLmJvdHRvbVJpZ2h0LHJlY3Q6e3g6Si54K0oud2lkdGgtUS53aWR0aCx5OkoueStKLmhlaWdodC1RLmhlaWdodCx3aWR0aDpRLndpZHRoLGhlaWdodDpRLmhlaWdodH19LHtrZXk6InRvcCIsaW1hZ2U6Wi50b3AscmVjdDp7eDpKLngrUS53aWR0aCx5OkoueSx3aWR0aDpLLGhlaWdodDpRLmhlaWdodH19LHtrZXk6ImJvdHRvbSIsaW1hZ2U6Wi5ib3R0b20scmVjdDp7eDpKLngrUS53aWR0aCx5OkoueStKLmhlaWdodC1RLmhlaWdodCx3aWR0aDpLLGhlaWdodDpRLmhlaWdodH19LHtrZXk6ImxlZnQiLGltYWdlOloubGVmdCxyZWN0Ont4OkoueCx5OkoueStRLmhlaWdodCx3aWR0aDpRLndpZHRoLGhlaWdodDpZfX0se2tleToicmlnaHQiLGltYWdlOloucmlnaHQscmVjdDp7eDpKLngrSi53aWR0aC1RLndpZHRoLHk6Si55K1EuaGVpZ2h0LHdpZHRoOlEud2lkdGgsaGVpZ2h0Oll9fV07cmV0dXJuIFgoWjEse2NoaWxkcmVuOnEuZmlsdGVyKChHKT0+Ry5yZWN0LndpZHRoPjAmJkcucmVjdC5oZWlnaHQ+MCkubWFwKChHKT0+WChhOSx7Y2hyb21lOiQsaW1hZ2U6Ry5pbWFnZSxyZWN0OkcucmVjdCx6SW5kZXg6MX0sRy5rZXkpKX0pfWZ1bmN0aW9uIGE5KHtjaHJvbWU6JCxpbWFnZTpKLHJlY3Q6USx6SW5kZXg6Wn0pe3JldHVybiBYKCJpbWciLHthbHQ6IiIsImFyaWEtaGlkZGVuIjohMCxkcmFnZ2FibGU6ITEsc3JjOm45KCQuaWRlbnRpZmllcixKKSxjbGFzc05hbWU6ImFic29sdXRlIHNlbGVjdC1ub25lIixzdHlsZTp7Li4uaDMoJCxRLFopLG9iamVjdEZpdDoiZmlsbCIscG9pbnRlckV2ZW50czoibm9uZSIsV2Via2l0VXNlckRyYWc6Im5vbmUifX0pfWZ1bmN0aW9uIG45KCQsSil7bGV0IFE9YGdyaWQvYXBpL2RldmljZWtpdC1jaHJvbWU/Y2hyb21lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCQpfSZpbWFnZT0ke2VuY29kZVVSSUNvbXBvbmVudChKKX1gO3JldHVybiB0eXBlb2Ygd2luZG93PiJ1Ij9gLyR7UX1gOmYxKFEpfWZ1bmN0aW9uIGgzKCQsSixRKXtyZXR1cm57bGVmdDpTNShKLngsJC5mcmFtZS53aWR0aCksdG9wOlM1KEoueSwkLmZyYW1lLmhlaWdodCksd2lkdGg6UzUoSi53aWR0aCwkLmZyYW1lLndpZHRoKSxoZWlnaHQ6UzUoSi5oZWlnaHQsJC5mcmFtZS5oZWlnaHQpLHpJbmRleDpRfX1mdW5jdGlvbiBTNSgkLEope3JldHVybmAkeyQvSioxMDB9JWB9ZnVuY3Rpb24gczkoe25hbWU6JCxydW50aW1lOkosY2hyb21lOlEscGxhY2Vob2xkZXJBc3NldDpaLGJ1c3k6SyxidXN5TGFiZWw6WT0iU3RhcnRpbmfigKYiLGVycm9yOnEsb25TdGFydDpHfSl7bGV0IE49STAoJCksQj1TMVtOXSxMPVo/P251bGwsVj1MP251bGw6UT8/bnVsbCxVPVY/e3dpZHRoOlYuc2NyZWVuLndpZHRoLGhlaWdodDpWLnNjcmVlbi5oZWlnaHR9OnEyKE4sJCksej1HMihOLFUpLGs9TD90JChOLEwubmFtZSk6Vj96KlYuZnJhbWUud2lkdGgvVi5zY3JlZW4ud2lkdGg6eipCLndpZHRoLyhCLndpZHRoLTIqQi5iZXplbFgpLEg9TD97d2lkdGg6TC53aWR0aCxoZWlnaHQ6TC5oZWlnaHR9OlY/e3dpZHRoOlYuZnJhbWUud2lkdGgsaGVpZ2h0OlYuZnJhbWUuaGVpZ2h0fTp7d2lkdGg6Qi53aWR0aCxoZWlnaHQ6Qi5oZWlnaHR9LEM9YCR7SC53aWR0aH0gLyAke0guaGVpZ2h0fWAsRj0oSC53aWR0aC9ILmhlaWdodCplJChOKSkudG9GaXhlZCgyKSxPPU49PT0idmlzaW9uIj9YKFFKLHt9KTpYKCRKLHt0eXBlOk59KTtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtNSBtaW4tdy0wIHctZnVsbCIsY2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToicmVsYXRpdmUgdy1mdWxsIixzdHlsZTp7d2lkdGg6YG1pbigxMDAlLCAke2t9cHgsICR7Rn1kdmgpYCxtYXhXaWR0aDprLGFzcGVjdFJhdGlvOkN9LGNoaWxkcmVuOkw/WChKSix7bmFtZTpMLm5hbWUsZmFsbGJhY2s6T30pOlY/WCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIHBvaW50ZXItZXZlbnRzLW5vbmUiLGNoaWxkcmVuOlgoeDUse2Nocm9tZTpWfSl9KTpPfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LWNlbnRlciIsY2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToidGV4dC1bMTdweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzkwIixjaGlsZHJlbjokfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LVsxM3B4XSB0ZXh0LXdoaXRlLzQ1IixjaGlsZHJlbjpbYjUoSiksIiBTaW11bGF0b3IiXX0pXX0pLHEmJlgoImRpdiIse2NsYXNzTmFtZToidGV4dC1kYW5nZXIgdGV4dC1bMTJweF0gZm9udC1tb25vIG1heC13LTkwIHRleHQtY2VudGVyIixjaGlsZHJlbjpxfSksWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOkcsZGlzYWJsZWQ6SyxjbGFzc05hbWU6YGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHB4LTUgcHktMiByb3VuZGVkLWZ1bGwgdGV4dC1bMTRweF0gZm9udC1tZWRpdW0gW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjE1c10gJHtLPyJiZy13aGl0ZS84IHRleHQtd2hpdGUvNTUgY3Vyc29yLWRlZmF1bHQiOiJiZy13aGl0ZS8xMiB0ZXh0LXdoaXRlLzkwIGhvdmVyOmJnLXdoaXRlLzE4IGN1cnNvci1wb2ludGVyIn1gLGNoaWxkcmVuOltLJiZYKCJzcGFuIix7ImFyaWEtaGlkZGVuIjohMCxjbGFzc05hbWU6InNpemUtMy41IHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItd2hpdGUvMjUgYW5pbWF0ZS1bZ3JpZC1zcGluXzAuOHNfbGluZWFyX2luZmluaXRlXSIsc3R5bGU6e2JvcmRlclRvcENvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOSkifX0pLEs/WToiU3RhcnQiXX0pXX0pfWZ1bmN0aW9uIHQkKCQsSil7aWYoJD09PSJ3YXRjaCIpe2lmKEouaW5jbHVkZXMoInVsdHJhIikpcmV0dXJuIDI1NTtpZihKLmluY2x1ZGVzKCJ3YXRjaC1zZS0iKXx8Si5pbmNsdWRlcygiYXBwbGUtd2F0Y2gtc2UtIikpcmV0dXJuIDIzODtyZXR1cm4gMjUwfWlmKCQ9PT0idmlzaW9uIilyZXR1cm4gMzkwO2lmKCQ9PT0iaXBhZCIpcmV0dXJuIDM0MDtyZXR1cm4gMjgwfWZ1bmN0aW9uIGUkKCQpe2lmKCQ9PT0idmlzaW9uIilyZXR1cm4gMzQ7aWYoJD09PSJpcGFkIilyZXR1cm4gNTA7aWYoJD09PSJ3YXRjaCIpcmV0dXJuIDU2O3JldHVybiA1Mn1mdW5jdGlvbiAkSih7dHlwZTokfSl7bGV0IEo9UzFbJF07cmV0dXJuIFgoWjEse2NoaWxkcmVuOltYKCJzdmciLHt2aWV3Qm94OmAwIDAgJHtKLndpZHRofSAke0ouaGVpZ2h0fWAsY2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIHNpemUtZnVsbCIscHJlc2VydmVBc3BlY3RSYXRpbzoieE1pZFlNaWQgbWVldCIsY2hpbGRyZW46W1goImRlZnMiLHtjaGlsZHJlbjpYKCJsaW5lYXJHcmFkaWVudCIse2lkOiJwbGFjZWhvbGRlci1zY3JlZW4iLHgxOiIwIix5MToiMCIseDI6IjEiLHkyOiIxIixjaGlsZHJlbjpbWCgic3RvcCIse29mZnNldDoiMCUiLHN0b3BDb2xvcjoiIzZmYThlNiJ9KSxYKCJzdG9wIix7b2Zmc2V0OiI1NSUiLHN0b3BDb2xvcjoiIzViOTNkNiJ9KSxYKCJzdG9wIix7b2Zmc2V0OiIxMDAlIixzdG9wQ29sb3I6IiM1MTg4Y2YifSldfSl9KSxYKCJyZWN0Iix7eDpKLmJlemVsWCx5OkouYmV6ZWxZLHdpZHRoOkoud2lkdGgtMipKLmJlemVsWCxoZWlnaHQ6Si5oZWlnaHQtMipKLmJlemVsWSxyeDpKLmlubmVyUmFkaXVzLGZpbGw6InVybCgjcGxhY2Vob2xkZXItc2NyZWVuKSJ9KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAgcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46WChNNSx7dHlwZTokfSl9KV19KX1mdW5jdGlvbiBKSih7bmFtZTokLGZhbGxiYWNrOkp9KXtsZXRbUSxaXT1BKCJsb2FkaW5nIik7cmV0dXJuIFgoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCBzaXplLWZ1bGwgcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46W1EhPT0ibG9hZGVkIiYmSixRIT09ImVycm9yIiYmWCgiaW1nIix7YWx0OiIiLCJhcmlhLWhpZGRlbiI6ITAsZHJhZ2dhYmxlOiExLHNyYzpaSigkKSxjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAgc2l6ZS1mdWxsIHNlbGVjdC1ub25lIG9iamVjdC1jb250YWluIixzdHlsZTp7V2Via2l0VXNlckRyYWc6Im5vbmUifSxvbkxvYWQ6KCk9PlooImxvYWRlZCIpLG9uRXJyb3I6KCk9PlooImVycm9yIil9KV19KX1mdW5jdGlvbiBRSigpe2xldHt3aWR0aDokLGhlaWdodDpKfT1TMS52aXNpb247cmV0dXJuIFgoInN2ZyIse3ZpZXdCb3g6YDAgMCAkeyR9ICR7Sn1gLGNsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCBzaXplLWZ1bGwiLHByZXNlcnZlQXNwZWN0UmF0aW86InhNaWRZTWlkIG1lZXQiLGZpbGw6Im5vbmUiLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46W1goImRlZnMiLHtjaGlsZHJlbjpbWCgibGluZWFyR3JhZGllbnQiLHtpZDoidmlzaW9uLXBsYWNlaG9sZGVyLXNoZWxsIix4MToiMCIseTE6IjAiLHgyOiIwIix5MjoiMSIsY2hpbGRyZW46W1goInN0b3AiLHtvZmZzZXQ6IjAlIixzdG9wQ29sb3I6IiMyODI4MmIifSksWCgic3RvcCIse29mZnNldDoiNTQlIixzdG9wQ29sb3I6IiMxMjEyMTQifSksWCgic3RvcCIse29mZnNldDoiMTAwJSIsc3RvcENvbG9yOiIjMDcwNzA4In0pXX0pLFgoImxpbmVhckdyYWRpZW50Iix7aWQ6InZpc2lvbi1wbGFjZWhvbGRlci1nbGFzcyIseDE6IjAiLHkxOiIwIix4MjoiMSIseTI6IjEiLGNoaWxkcmVuOltYKCJzdG9wIix7b2Zmc2V0OiIwJSIsc3RvcENvbG9yOiIjMzEzNTNhIn0pLFgoInN0b3AiLHtvZmZzZXQ6IjQ4JSIsc3RvcENvbG9yOiIjMGEwYjBkIn0pLFgoInN0b3AiLHtvZmZzZXQ6IjEwMCUiLHN0b3BDb2xvcjoiIzAxMDEwMiJ9KV19KSxYKCJyYWRpYWxHcmFkaWVudCIse2lkOiJ2aXNpb24tcGxhY2Vob2xkZXItbGVucyIsY3g6IjUwJSIsY3k6IjQ2JSIscjoiNjAlIixjaGlsZHJlbjpbWCgic3RvcCIse29mZnNldDoiMCUiLHN0b3BDb2xvcjoiIzIwMjgzMiJ9KSxYKCJzdG9wIix7b2Zmc2V0OiI3MiUiLHN0b3BDb2xvcjoiIzA5MGEwZCJ9KSxYKCJzdG9wIix7b2Zmc2V0OiIxMDAlIixzdG9wQ29sb3I6IiMwMTAxMDIifSldfSldfSksWCgicGF0aCIse2Q6Ik05NSAxNzdDOTUgMTE5IDE0NyA4NiAyMTggOTFDMjU3IDk0IDI4NiAxMTEgMzIwIDExMUMzNTQgMTExIDM4MyA5NCA0MjIgOTFDNDkzIDg2IDU0NSAxMTkgNTQ1IDE3N1YyMjJDNTQ1IDI3OCA1MDEgMzExIDQ0MyAzMTBDMzk4IDMwOSAzNzEgMjg2IDM0NSAyNjhDMzI5IDI1NyAzMTEgMjU3IDI5NSAyNjhDMjY5IDI4NiAyNDIgMzA5IDE5NyAzMTBDMTM5IDMxMSA5NSAyNzggOTUgMjIyVjE3N1oiLGZpbGw6InVybCgjdmlzaW9uLXBsYWNlaG9sZGVyLXNoZWxsKSIsc3Ryb2tlOiIjM2QzZDQyIixzdHJva2VXaWR0aDoiNyJ9KSxYKCJwYXRoIix7ZDoiTTExNyAxODFDMTE3IDEzNCAxNTcgMTEyIDIyMCAxMTZDMjYwIDExOSAyODcgMTM2IDMyMCAxMzZDMzUzIDEzNiAzODAgMTE5IDQyMCAxMTZDNDgzIDExMiA1MjMgMTM0IDUyMyAxODFWMjE3QzUyMyAyNjMgNDg4IDI4NyA0MzkgMjg3QzM5OSAyODcgMzY5IDI2NCAzNDUgMjUwQzMyOSAyNDAgMzExIDI0MCAyOTUgMjUwQzI3MSAyNjQgMjQxIDI4NyAyMDEgMjg3QzE1MiAyODcgMTE3IDI2MyAxMTcgMjE3VjE4MVoiLGZpbGw6InVybCgjdmlzaW9uLXBsYWNlaG9sZGVyLWdsYXNzKSIsc3Ryb2tlOiIjMTcxODFiIixzdHJva2VXaWR0aDoiNSJ9KSxYKCJwYXRoIix7ZDoiTTE0MyAxODZDMTQ1IDE0OCAxNzYgMTM1IDIyNiAxMzhDMjY0IDE0MSAyODkgMTU2IDMyMCAxNTZDMzUxIDE1NiAzNzYgMTQxIDQxNCAxMzhDNDY0IDEzNSA0OTUgMTQ4IDQ5NyAxODZWMjEzQzQ5NyAyNTAgNDY5IDI2NiA0MzIgMjY2QzM5NCAyNjYgMzY5IDI0NiAzNDMgMjM1QzMyOCAyMjkgMzEyIDIyOSAyOTcgMjM1QzI3MSAyNDYgMjQ2IDI2NiAyMDggMjY2QzE3MSAyNjYgMTQzIDI1MCAxNDMgMjEzVjE4NloiLGZpbGw6InVybCgjdmlzaW9uLXBsYWNlaG9sZGVyLWxlbnMpIixzdHJva2U6IiMyNjJhMmYiLHN0cm9rZVdpZHRoOiIyIn0pLFgoInBhdGgiLHtkOiJNMTUxIDE3MUMxNzkgMTUwIDIxNyAxNDcgMjUxIDE1NE0zODkgMTU0QzQyMyAxNDcgNDYxIDE1MCA0ODkgMTcxIixzdHJva2U6IiM0ZTUzNWEiLHN0cm9rZVdpZHRoOiIzIixzdHJva2VMaW5lY2FwOiJyb3VuZCJ9KSxYKCJwYXRoIix7ZDoiTTI3NyAyMzNDMjg5IDIyNCAzMDQgMjE5IDMyMCAyMTlDMzM2IDIxOSAzNTEgMjI0IDM2MyAyMzMiLHN0cm9rZToiIzNiNDA0NiIsc3Ryb2tlV2lkdGg6IjQiLHN0cm9rZUxpbmVjYXA6InJvdW5kIn0pXX0pfWZ1bmN0aW9uIFpKKCQpe2xldCBKPWBncmlkL2FwaS9kZXZpY2UtcGxhY2Vob2xkZXItYXNzZXQ/bmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudCgkKX1gO3JldHVybiB0eXBlb2Ygd2luZG93PiJ1Ij9gLyR7Sn1gOmYxKEopfWZ1bmN0aW9uIEwyKHtvcGVuOiQsd2lkdGg6SixjaGlsZHJlbjpRLHN0eWxlOlosc2lkZTpLPSJyaWdodCJ9KXtyZXR1cm4gWCgiYXNpZGUiLHtjbGFzc05hbWU6YGZpeGVkIHotMzUgbWluLXctMCBvdmVyZmxvdy1oaWRkZW4gYmctcGFuZWwtYmcgdGV4dC13aGl0ZS85MCBiYWNrZHJvcC1ibHVyLVsxOHB4XSBbZm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxzeXN0ZW0tdWksc2Fucy1zZXJpZl0gW3RyYW5zaXRpb246dHJhbnNmb3JtXzAuMjVzX2Vhc2Usb3BhY2l0eV8wLjJzX2Vhc2VdIGZsZXggZmxleC1jb2wgJHtLPT09ImxlZnQiPyJ0b3AtMCBib3R0b20tMCBsZWZ0LTAgcm91bmRlZC1ub25lIGJvcmRlci0wIGJvcmRlci1yIGJvcmRlci13aGl0ZS8xMCBzaGFkb3ctWzhweF8wXzMycHhfcmdiYSgwLDAsMCwwLjM1KV0iOiJ0b3AtMyBib3R0b20tMyByaWdodC0zIHJvdW5kZWQtWzE0cHhdIGJvcmRlciBib3JkZXItd2hpdGUvMTAgc2hhZG93LVswXzEycHhfNDBweF9yZ2JhKDAsMCwwLDAuNTUpXSJ9YCxzdHlsZTp7d2lkdGg6Six0cmFuc2Zvcm06JD8idHJhbnNsYXRlWCgwKSI6Sz09PSJsZWZ0Ij8idHJhbnNsYXRlWCgtMTAwJSkiOiJ0cmFuc2xhdGVYKGNhbGMoMTAwJSArIDI0cHgpKSIsb3BhY2l0eTokPzE6MCxwb2ludGVyRXZlbnRzOiQ/ImF1dG8iOiJub25lIiwuLi5afSwiYXJpYS1oaWRkZW4iOiEkLGNoaWxkcmVuOlF9KX1mdW5jdGlvbiB6Mih7Y2hpbGRyZW46JCxzdHlsZTpKfSl7cmV0dXJuIFgoImhlYWRlciIse2NsYXNzTmFtZToiZmxleCBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yLjUgcHgtMi41IHB5LTEuNSBwbC0zIixzdHlsZTpKLGNoaWxkcmVuOiR9KX1mdW5jdGlvbiB0OSh7Y2hpbGRyZW46JH0pe3JldHVybiBYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LW1lZGl1bSB0ZXh0LXdoaXRlLzU1IixjaGlsZHJlbjokfSl9ZnVuY3Rpb24gajUoe29uQ2xpY2s6JCxhcmlhTGFiZWw6Sj0iQ2xvc2UgcGFuZWwiLHRpdGxlOlEsaWNvblNpemU6Wj0xNn0pe3JldHVybiBYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6JCxjbGFzc05hbWU6ImZsZXggaC1bMzBweF0gdy1bMzBweF0gc2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyLW5vbmUgYmctdHJhbnNwYXJlbnQgcC0wIHRleHQtWyM4ZThlOTNdIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjpKLHRpdGxlOlEsY2hpbGRyZW46WChHMCx7c2l6ZTpaLHN0cm9rZVdpZHRoOjJ9KX0pfWZ1bmN0aW9uIGU5KCQsSil7bGV0W1EsWl09QShudWxsKTtyZXR1cm4gYigoKT0+e2lmKCFKfHwhJClyZXR1cm47bGV0IEs9ITEsWT1hc3luYygpPT57dHJ5e2xldCBOPWF3YWl0KGF3YWl0IGZldGNoKCQse2NhY2hlOiJuby1zdG9yZSJ9KSkuanNvbigpO2lmKCFLKVooTil9Y2F0Y2h7fX07WSgpO2xldCBxPXNldEludGVydmFsKFksNTAwMCk7cmV0dXJuKCk9PntLPSEwLGNsZWFySW50ZXJ2YWwocSl9fSxbJCxKXSksUX1mdW5jdGlvbiAkNih7cmVwb3J0OiR9KXtpZighJHx8JC50b3RhbEJ5dGVzPT09MClyZXR1cm4gbnVsbDtsZXR7ZXN0aW1hdGVkQWRkaXRpb25hbDpKLGF2YWlsYWJsZUJ5dGVzOlEsdG90YWxCeXRlczpaLHJ1bm5pbmdTaW11bGF0b3JzOkt9PSQsWT1NYXRoLm1heCgwLE1hdGgubWluKDEsMS1RL1opKSxxPUsrSixHPUo9PT0wPyIjZTY2IjpKPD0xPyIjZTlhMTNiIjoiIzNiMyIsTj1ZPjAuOT8iI2U2NiI6WT4wLjc1PyIjZTlhMTNiIjoiIzNiMyI7cmV0dXJuIFgoImRpdiIse2NsYXNzTmFtZToiaW5saW5lLWZsZXggbWF4LXctZnVsbCBtaW4tdy0wIGZsZXgtbm93cmFwIGl0ZW1zLWNlbnRlciBnYXAtMS41IG92ZXJmbG93LWhpZGRlbiB3aGl0ZXNwYWNlLW5vd3JhcCBweC0yIHB5LVszcHhdIHJvdW5kZWQtZnVsbCBiZy1bIzEwMTAxMF0gYm9yZGVyIGJvcmRlci1bIzIyMl0gZm9udC1tb25vIHRleHQtWzExcHhdIHRleHQtd2hpdGUvNzAgbGVhZGluZy1ub25lIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToic2l6ZS0xLjUgcm91bmRlZC1bM3B4XSBzaHJpbmstMCIsc3R5bGU6e2JhY2tncm91bmQ6R319KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJtaW4tdy0wIHRydW5jYXRlIixjaGlsZHJlbjpbWCgic3BhbiIse2NoaWxkcmVuOltLLCIvIixxLCIgc2ltcyJdfSksWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC13aGl0ZS80MCIsY2hpbGRyZW46IiDCtyAifSksWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC13aGl0ZS81NSIsY2hpbGRyZW46W285KFEpLCIgZnJlZSJdfSldfSksWCgic3BhbiIseyJhcmlhLWhpZGRlbiI6ITAsY2xhc3NOYW1lOiJtbC0wLjUgdy03IGgtWzNweF0gc2hyaW5rLTAgYmctWyMxYzFjMWNdIHJvdW5kZWQtWzJweF0gb3ZlcmZsb3ctaGlkZGVuIGlubGluZS1ibG9jayIsY2hpbGRyZW46WCgic3BhbiIse2NsYXNzTmFtZToiYmxvY2sgaC1mdWxsIHRyYW5zaXRpb24tW3dpZHRoLGJhY2tncm91bmRdIGR1cmF0aW9uLTMwMCBlYXNlLW91dCIsc3R5bGU6e3dpZHRoOmAkeyhZKjEwMCkudG9GaXhlZCgxKX0lYCxiYWNrZ3JvdW5kOk59fSl9KV19KX1mdW5jdGlvbiBKNih7dHlwZTokLHNpemU6Sj0yMCxzY3JlZW5PbjpRPSExfSl7bGV0IFo9e3dpZHRoOkosaGVpZ2h0Okosdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6MS42LHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQifTtzd2l0Y2goJCl7Y2FzZSJpcGFkIjpyZXR1cm4gWCgic3ZnIix7Li4uWixjaGlsZHJlbjpbUSYmWCgicmVjdCIse3g6IjUiLHk6IjMiLHdpZHRoOiIxNSIsaGVpZ2h0OiIxOSIscng6IjEuNjUiLGZpbGw6IiM0N2I3ZmYiLHN0cm9rZToibm9uZSIsImRhdGEtdGVzdGlkIjoiZGV2aWNlLWdseXBoLXNjcmVlbi1vbiJ9KSxYKCJyZWN0Iix7eDoiNCIseToiMi41Iix3aWR0aDoiMTYiLGhlaWdodDoiMTkiLHJ4OiIyLjUifSksWCgibGluZSIse3gxOiIxMiIseTE6IjE4LjUiLHgyOiIxMiIseTI6IjE4LjUifSldfSk7Y2FzZSJ3YXRjaCI6cmV0dXJuIFgoInN2ZyIsey4uLlosY2hpbGRyZW46W1goInJlY3QiLHt4OiI2LjUiLHk6IjciLHdpZHRoOiIxMSIsaGVpZ2h0OiIxMCIscng6IjMifSksWCgicGF0aCIse2Q6Ik04LjUgN2wuNi0zLjJBMS41IDEuNSAwIDAgMSAxMC42IDIuNWgyLjhhMS41IDEuNSAwIDAgMSAxLjUgMS4zTDE1LjUgNyJ9KSxYKCJwYXRoIix7ZDoiTTguNSAxN2wuNiAzLjJhMS41IDEuNSAwIDAgMCAxLjUgMS4zaDIuOGExLjUgMS41IDAgMCAwIDEuNS0xLjNsLjYtMy4yIn0pXX0pO2Nhc2UidmlzaW9uIjpyZXR1cm4gWCgic3ZnIix7Li4uWixjaGlsZHJlbjpYKCJwYXRoIix7ZDoiTTMgMTFhNCA0IDAgMCAxIDQtNGgxMGE0IDQgMCAwIDEgNCA0djIuNWEyLjUgMi41IDAgMCAxLTIuNSAyLjVjLTEuOCAwLTIuNS0xLjItMy41LTEuOC0uOS0uNS0xLjYtLjctMi41LS43cy0xLjYuMi0yLjUuN2MtMSAuNi0xLjcgMS44LTMuNSAxLjhBMi41IDIuNSAwIDAgMSAzIDEzLjV6In0pfSk7ZGVmYXVsdDpyZXR1cm4gWCgic3ZnIix7Li4uWixjaGlsZHJlbjpbUSYmWCgicmVjdCIse3g6IjYiLHk6IjMiLHdpZHRoOiIxMSIsaGVpZ2h0OiIxOSIscng6IjIiLGZpbGw6IiM0N2I3ZmYiLHN0cm9rZToibm9uZSIsImRhdGEtdGVzdGlkIjoiZGV2aWNlLWdseXBoLXNjcmVlbi1vbiJ9KSxYKCJyZWN0Iix7eDoiNi41Iix5OiIyLjUiLHdpZHRoOiIxMSIsaGVpZ2h0OiIxOSIscng6IjIuOCJ9KSxYKCJsaW5lIix7eDE6IjEwLjUiLHkxOiI1Iix4MjoiMTMuNSIseTI6IjUifSldfSl9fWZ1bmN0aW9uIFE2KHtkZXZpY2U6JCxhY3RpdmU6SixzdGFydGluZzpRLHNodXR0aW5nRG93bjpaLG9uU2VsZWN0Okssb25TaHV0ZG93bjpZfSl7bGV0IHE9JC5oZWxwZXIsRz0kLnN0YXRlPT09IkJvb3RlZCIsTj1JMCgkLm5hbWUpLEI9cjkoJC5ydW50aW1lKSxMPXE/IlN0cmVhbWluZyI6UT9HPyJTdGFydGluZ+KApiI6IkJvb3RpbmfigKYiOlo/IlNodXR0aW5nIGRvd27igKYiOkc/IkJvb3RlZCI6bnVsbCxWPXE/IiMzNGQzOTkiOkc/IiNlOWExM2IiOm51bGwsVT1xfHxHLHo9cT9KPyJiZy1bIzI2MzY0Y10iOiJiZy1bIzIwMmIzYV0iOko/ImJnLXdoaXRlLzE1IjoiYmctd2hpdGUvNiIsaz1xPyJ0ZXh0LVsjZDJlN2ZmXSI6Sj8idGV4dC13aGl0ZS85MCI6InRleHQtd2hpdGUvNTUiO3JldHVybiBYKCJkaXYiLHtyb2xlOiJidXR0b24iLHRhYkluZGV4OjAsImFyaWEtcHJlc3NlZCI6SixvbkNsaWNrOkssb25LZXlEb3duOihIKT0+e2lmKEgua2V5PT09IkVudGVyInx8SC5rZXk9PT0iICIpSC5wcmV2ZW50RGVmYXVsdCgpLEsoKX0sY2xhc3NOYW1lOmBncm91cCByZWxhdGl2ZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMi41IHB4LTIgcHktMS41IHJvdW5kZWQtbGcgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmUgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjEyc10gJHtKPyJiZy13aGl0ZS8xMCB0ZXh0LXdoaXRlIjoidGV4dC13aGl0ZS85MCBob3ZlcjpiZy13aGl0ZS84In1gLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6YHJlbGF0aXZlIHNocmluay0wIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHNpemUtOSByb3VuZGVkLVs5cHhdIG92ZXJmbG93LWhpZGRlbiAke3p9YCxjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZTprLGNoaWxkcmVuOlgoSjYse3R5cGU6TixzY3JlZW5PbjpCb29sZWFuKHEpfSl9KSxWJiYhcSYmWCgic3BhbiIse2NsYXNzTmFtZToiYWJzb2x1dGUgYm90dG9tLTAuNSByaWdodC0wLjUgc2l6ZS0xLjUgcm91bmRlZC1mdWxsIHJpbmctMiByaW5nLVsjMWMxYzFlXSIsc3R5bGU6e2JhY2tncm91bmQ6Vn19KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6Im1pbi13LTAgZmxleC0xIixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJ0cnVuY2F0ZSB0ZXh0LVsxM3B4XSBmb250LXNlbWlib2xkIGxlYWRpbmctdGlnaHQiLGNoaWxkcmVuOiQubmFtZX0pLEwmJlgoImRpdiIse2NsYXNzTmFtZTpgdHJ1bmNhdGUgdGV4dC1bMTFweF0gbGVhZGluZy10aWdodCAke3E/InRleHQtWyMzNGQzOTldIjpKPyJ0ZXh0LXdoaXRlLzc1IjoidGV4dC13aGl0ZS80NSJ9YCxjaGlsZHJlbjpMfSldfSksWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLXJvdy10cmFpbGluZy1zbG90IixjbGFzc05hbWU6InJlbGF0aXZlIHNocmluay0wIHctOCBoLTYgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQiLGNoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOmBhYnNvbHV0ZSByaWdodC0wIHRleHQtWzExcHhdIGZvbnQtbW9ubyB0YWJ1bGFyLW51bXMgW3RyYW5zaXRpb246b3BhY2l0eV8wLjEyc10gJHtKPyJ0ZXh0LXdoaXRlLzg1IjoidGV4dC13aGl0ZS80MCJ9ICR7VT8iZ3JvdXAtaG92ZXI6b3BhY2l0eS0wIGdyb3VwLWZvY3VzLXdpdGhpbjpvcGFjaXR5LTAiOiIifWAsY2hpbGRyZW46Qn0pLFUmJlgoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsdGl0bGU6Wj8iU2h1dHRpbmcgZG93buKApiI6IlNodXQgZG93biBzaW11bGF0b3IiLCJhcmlhLWxhYmVsIjoiU2h1dCBkb3duIHNpbXVsYXRvciIsb25DbGljazooSCk9PntILnByZXZlbnREZWZhdWx0KCksSC5zdG9wUHJvcGFnYXRpb24oKSxZKCl9LGRpc2FibGVkOlosY2xhc3NOYW1lOmBhYnNvbHV0ZSByaWdodC0wIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciBzaXplLTUgcm91bmRlZC1tZCBvcGFjaXR5LTAgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgZm9jdXMtdmlzaWJsZTpvcGFjaXR5LTEwMCBbdHJhbnNpdGlvbjpvcGFjaXR5XzAuMTJzLGJhY2tncm91bmRfMC4xMnMsY29sb3JfMC4xMnNdICR7Sj8idGV4dC13aGl0ZS84MCBob3ZlcjpiZy13aGl0ZS8yMCI6InRleHQtd2hpdGUvNzAgaG92ZXI6Ymctd2hpdGUvMTIgaG92ZXI6dGV4dC13aGl0ZSJ9YCxjaGlsZHJlbjpYKEcwLHtzaXplOjEzLHN0cm9rZVdpZHRoOjIuMn0pfSldfSldfSl9dmFyIFUyPSJ2YXIoLS1zZXJ2ZS1zaW0tcGFuZWwtYmcpIixnMz0idmFyKC0tc2VydmUtc2ltLXBhbmVsLWJnLXRyYW5zcGFyZW50KSI7dmFyIFhKPTEyO2Z1bmN0aW9uIFo2KHtvcGVuOiQsb25DbG9zZTpKLHdpZHRoOlEsc2lkZTpaPSJyaWdodCIsZGV2aWNlczpLLHRvdGFsOlk9MCxoYXNNb3JlOnE9ITEsb25Mb2FkTW9yZTpHLG9uTG9hZEFsbDpOLG9uUmVzZXRQYWdlOkIsc2VsZWN0ZWRVZGlkOkwsb25TZWxlY3Q6VixzdGFydGluZzpVLHNodXR0aW5nRG93bjp6LG9uU2h1dGRvd246a30pe2xldCBDPSh0eXBlb2Ygd2luZG93PiJ1Ij92b2lkIDA6d2luZG93Ll9fU0lNX1BSRVZJRVdfXyk/LmdyaWRNZW1vcnlFbmRwb2ludD8/KHR5cGVvZiB3aW5kb3c+InUiP3ZvaWQgMDpmMSgiZ3JpZC9hcGkvbWVtb3J5IikpLEY9ZTkoQywkKSxbTyxJXT1BKCIiKSx3PVQxKCgpPT57bGV0IG09Ty50cmltKCkudG9Mb3dlckNhc2UoKTtpZighbXx8IUspcmV0dXJuIEs7cmV0dXJuIEsuZmlsdGVyKChjKT0+Yy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobSl8fGI1KGMucnVudGltZSkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhtKSl9LFtLLE9dKSxTPVQoITEpO2IoKCk9PntsZXQgbT0hIU8udHJpbSgpO2lmKG0mJnEpTj8uKCk7ZWxzZSBpZighbSYmUy5jdXJyZW50KUI/LigpO1MuY3VycmVudD1tfSxbTyxxLE4sQl0pO2xldCBqPVQobnVsbCk7cmV0dXJuIFgoTDIse29wZW46JCx3aWR0aDpRLHNpZGU6WixzdHlsZTp7YmFja2dyb3VuZENvbG9yOlUyfSxjaGlsZHJlbjpbWCh6Mix7c3R5bGU6e2p1c3RpZnlDb250ZW50OiJmbGV4LXN0YXJ0IixwYWRkaW5nTGVmdDoxNixwYWRkaW5nVG9wOjE2LGdhcDo0fSxjaGlsZHJlbjpbWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOkosY2xhc3NOYW1lOiJmbGV4IGgtWzMwcHhdIHctWzMwcHhdIHNocmluay0wIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIGJvcmRlci1ub25lIGJnLXRyYW5zcGFyZW50IHRleHQtWyM4ZThlOTNdIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjoiQ2xvc2UgZGV2aWNlcyBzaWRlYmFyIiwiYXJpYS1wcmVzc2VkIjohMCx0aXRsZToiRGV2aWNlcyIsY2hpbGRyZW46WChFMCx7c2l6ZToxOCxzdHJva2VXaWR0aDoxLjc1fSl9KSxYKEU1LHt9KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6InB4LTQgcGItMiBwdC0wLjUgc2hyaW5rLTAiLGNoaWxkcmVuOlgoImxhYmVsIix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0yLjUgaC04IHJvdW5kZWQtbGcgYmctd2hpdGUvNiBmb2N1cy13aXRoaW46Ymctd2hpdGUvMTAgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjEyc10iLGNoaWxkcmVuOltYKGcyLHtzaXplOjE0LHN0cm9rZVdpZHRoOjIsY2xhc3NOYW1lOiJ0ZXh0LXdoaXRlLzQwIHNocmluay0wIn0pLFgoImlucHV0Iix7dmFsdWU6TyxvbkNoYW5nZToobSk9PkkobS50YXJnZXQudmFsdWUpLHBsYWNlaG9sZGVyOiJTZWFyY2giLGNsYXNzTmFtZToibWluLXctMCBmbGV4LTEgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgb3V0bGluZS1ub25lIHRleHQtWzEzcHhdIHRleHQtd2hpdGUvOTAgcGxhY2Vob2xkZXI6dGV4dC13aGl0ZS80MCJ9KSxPJiZYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLCJhcmlhLWxhYmVsIjoiQ2xlYXIgc2VhcmNoIixvbkNsaWNrOigpPT5JKCIiKSxjbGFzc05hbWU6InNocmluay0wIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHNpemUtNCByb3VuZGVkLWZ1bGwgYmctd2hpdGUvMTUgdGV4dC13aGl0ZS83MCBob3ZlcjpiZy13aGl0ZS8yNSIsY2hpbGRyZW46WChHMCx7c2l6ZTo5LHN0cm9rZVdpZHRoOjN9KX0pXX0pfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSBmbGV4LTEgbWluLWgtMCIsY2hpbGRyZW46W1goImRpdiIse3JlZjpqLG9uU2Nyb2xsOigpPT57aWYoTy50cmltKCl8fCFxfHwhRylyZXR1cm47bGV0IG09ai5jdXJyZW50O2lmKCFtKXJldHVybjtpZihtLnNjcm9sbFRvcCttLmNsaWVudEhlaWdodD49bS5zY3JvbGxIZWlnaHQtMjQwKUcoKX0sY2xhc3NOYW1lOiJoLWZ1bGwgbWluLWgtMCBvdmVyZmxvdy15LWF1dG8gcHgtNCBweS0yIFtzY3JvbGxiYXItd2lkdGg6dGhpbl0iLGNoaWxkcmVuOnc9PT1udWxsP1goS0ose30pOncubGVuZ3RoPT09MD9YKCJkaXYiLHtjbGFzc05hbWU6InB4LTIgcHktNiB0ZXh0LXdoaXRlLzQwIHRleHQtWzEycHhdIHRleHQtY2VudGVyIixjaGlsZHJlbjpPPyJObyBtYXRjaGluZyBzaW11bGF0b3JzLiI6Ik5vIGlPUyBzaW11bGF0b3JzIGF2YWlsYWJsZS4ifSk6WChaMSx7Y2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToicHQtMSBwYi0xIHRleHQtWzExcHhdIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZS80MCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSIsY2hpbGRyZW46IkF2YWlsYWJsZSJ9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTAuNSBwYi0xIixjaGlsZHJlbjp3Lm1hcCgobSk9PlgoUTYse2RldmljZTptLGFjdGl2ZTptLmRldmljZT09PUwsc3RhcnRpbmc6ISFVW20uZGV2aWNlXSxzaHV0dGluZ0Rvd246ISF6W20uZGV2aWNlXSxvblNlbGVjdDooKT0+VihtLmRldmljZSksb25TaHV0ZG93bjooKT0+ayhtLmRldmljZSl9LG0uZGV2aWNlKSl9KSwhTyYmcSYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJweC0yIHB5LTIgdGV4dC1bMTFweF0gdGV4dC13aGl0ZS8zNSB0ZXh0LWNlbnRlciIsY2hpbGRyZW46Sz9gJHtLLmxlbmd0aH0gb2YgJHtZfWA6bnVsbH0pXX0pfSksWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLWxpc3QtdG9wLWZhZGUiLGNsYXNzTmFtZToiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHJpZ2h0LTAgaC1bMTZweF0gcG9pbnRlci1ldmVudHMtbm9uZSIsc3R5bGU6e2JhY2tncm91bmQ6YGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICR7VTJ9IDAlLCAke2czfSAxMDAlKWB9fSksWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLWxpc3QtYm90dG9tLWZhZGUiLGNsYXNzTmFtZToiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgaC1bMTZweF0gcG9pbnRlci1ldmVudHMtbm9uZSIsc3R5bGU6e2JhY2tncm91bmQ6YGxpbmVhci1ncmFkaWVudCh0byB0b3AsICR7VTJ9IDAlLCAke2czfSAxMDAlKWB9fSldfSksWChxSix7cmVwb3J0OkZ9KV19KX1mdW5jdGlvbiBLSigpe3JldHVybiBYKFoxLHtjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJweC0yIHB0LTEgcGItMSB0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUiLGNoaWxkcmVuOiJBdmFpbGFibGUifSksWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLWxpc3Qtc2tlbGV0b24iLGNsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBnYXAtMC41IHBiLTEiLCJhcmlhLWxhYmVsIjoiTG9hZGluZyBzaW11bGF0b3JzIiwiYXJpYS1idXN5IjoidHJ1ZSIsY2hpbGRyZW46QXJyYXkuZnJvbSh7bGVuZ3RoOlhKfSwoJCxKKT0+WChZSix7aW5kZXg6Sn0sSikpfSldfSl9ZnVuY3Rpb24gWUooe2luZGV4OiR9KXtsZXQgSj1bInctWzYyJV0iLCJ3LVs3NCVdIiwidy1bNTglXSIsInctWzcwJV0iXVskJTRdLFE9WyJ3LVs0MiVdIiwidy1bMzYlXSIsInctWzQ4JV0iLCJ3LVszMiVdIl1bJCU0XSxaPVsidy03Iiwidy02Iiwidy04Il1bJCUzXTtyZXR1cm4gWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLXJvdy1za2VsZXRvbiIsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMi41IHB4LTIgcHktMS41IHJvdW5kZWQtbGcgc2VsZWN0LW5vbmUiLCJhcmlhLWhpZGRlbiI6InRydWUiLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIHNocmluay0wIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHNpemUtOSByb3VuZGVkLVs5cHhdIG92ZXJmbG93LWhpZGRlbiBiZy13aGl0ZS82IixjaGlsZHJlbjpYKCJzcGFuIix7Y2xhc3NOYW1lOiJzaXplLTQgcm91bmRlZC1bNHB4XSBiZy13aGl0ZS9bMC4xMl0ifSl9KSxYKCJkaXYiLHtjbGFzc05hbWU6Im1pbi13LTAgZmxleC0xIGZsZXggZmxleC1jb2wgZ2FwLTEuNSIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6YGgtMyByb3VuZGVkLWZ1bGwgYmctd2hpdGUvWzAuMTJdICR7Sn1gfSksWCgic3BhbiIse2NsYXNzTmFtZTpgaC0yLjUgcm91bmRlZC1mdWxsIGJnLXdoaXRlL1swLjA4XSAke1F9YH0pXX0pLFgoInNwYW4iLHtjbGFzc05hbWU6YHNocmluay0wIGgtMi41IHJvdW5kZWQtZnVsbCBiZy13aGl0ZS9bMC4wOF0gJHtafWB9KV19KX1mdW5jdGlvbiBxSih7cmVwb3J0OiR9KXtpZighJHx8JC50b3RhbEJ5dGVzPD0wKXJldHVybiBudWxsO3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6InNocmluay0wIG1pbi13LTAgb3ZlcmZsb3ctaGlkZGVuIHB4LTMgcHktMiBmbGV4IGp1c3RpZnktY2VudGVyIixjaGlsZHJlbjpYKCQ2LHtyZXBvcnQ6JH0pfSl9ZnVuY3Rpb24gdjUoe3BhbmVsV2lkdGg6JCx2aXNpYmxlOkosb25Qb2ludGVyRG93bjpRLGFyaWFMYWJlbDpaLHNpZGU6Sz0icmlnaHQifSl7bGV0W1kscV09QSghMSksW0csTl09QSghMSksQj1ZfHxHLEw9KEs9PT0ibGVmdCI/MDoxMikrJC05O3JldHVybiBYKCJkaXYiLHtyb2xlOiJzZXBhcmF0b3IiLCJhcmlhLW9yaWVudGF0aW9uIjoidmVydGljYWwiLCJhcmlhLWxhYmVsIjpaLCJhcmlhLWhpZGRlbiI6IUosb25Qb2ludGVyRG93bjooVSk9PntOKCEwKSxRKFUpfSxvblBvaW50ZXJVcDooKT0+TighMSksb25Qb2ludGVyQ2FuY2VsOigpPT5OKCExKSxvblBvaW50ZXJFbnRlcjooKT0+cSghMCksb25Qb2ludGVyTGVhdmU6KCk9PnEoITEpLGNsYXNzTmFtZTpgZml4ZWQgJHtLPT09ImxlZnQiPyJ0b3AtMCBib3R0b20tMCI6InRvcC0zIGJvdHRvbS0zIn0gdy00IHotMzYgY3Vyc29yLWNvbC1yZXNpemUgdG91Y2gtbm9uZSB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwICR7Sj8ib3BhY2l0eS0xMDAgcG9pbnRlci1ldmVudHMtYXV0byI6Im9wYWNpdHktMCBwb2ludGVyLWV2ZW50cy1ub25lIn1gLHN0eWxlOks9PT0ibGVmdCI/e2xlZnQ6TH06e3JpZ2h0Okx9LGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6YGFic29sdXRlIHRvcC0wIGJvdHRvbS0wIGxlZnQtMS8yIHctcHggcG9pbnRlci1ldmVudHMtbm9uZSB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMTUwICR7Qj8ib3BhY2l0eS0xMDAiOiJvcGFjaXR5LTAifWAsc3R5bGU6e3RyYW5zZm9ybToidHJhbnNsYXRlWCgtMC41cHgpIixiYWNrZ3JvdW5kOiJsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwyNTUsMjU1LDApIDAlLCByZ2JhKDI1NSwyNTUsMjU1LDAuMjgpIDMwJSwgcmdiYSgyNTUsMjU1LDI1NSwwLjI4KSA3MCUsIHJnYmEoMjU1LDI1NSwyNTUsMCkgMTAwJSkifX0pLFgoImRpdiIse2NsYXNzTmFtZTpgYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiB3LTEgaC03IHJvdW5kZWQteHMgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHotMSBwb2ludGVyLWV2ZW50cy1ub25lIFt0cmFuc2l0aW9uOm9wYWNpdHlfMC4xNXNfZWFzZSxiYWNrZ3JvdW5kXzAuMTVzX2Vhc2VdICR7Qj8ib3BhY2l0eS0xMDAiOiJvcGFjaXR5LTAifSAke0c/ImJnLVsjOWE5YTllXSI6ImJnLVsjNmU2ZTcyXSJ9YH0pXX0pfWZ1bmN0aW9uIFg2KCl7bGV0WyQsSl09QSgoKT0+dHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5tYXRjaE1lZGlhPy4oIihwcmVmZXJzLWNvbnRyYXN0OiBtb3JlKSIpLm1hdGNoZXM9PT0hMCk7cmV0dXJuIGIoKCk9PntpZih0eXBlb2Ygd2luZG93PiJ1Inx8IXdpbmRvdy5tYXRjaE1lZGlhKXJldHVybjtsZXQgUT13aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29udHJhc3Q6IG1vcmUpIiksWj0oKT0+SihRLm1hdGNoZXMpO3JldHVybiBaKCksUS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLFopLCgpPT5RLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsWil9LFtdKSwkfWZ1bmN0aW9uIFI1KCl7bGV0WyQsSl09QSgoKT0+dHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5tYXRjaE1lZGlhPy4oIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIikubWF0Y2hlcz09PSEwKTtyZXR1cm4gYigoKT0+e2lmKHR5cGVvZiB3aW5kb3c+InUifHwhd2luZG93Lm1hdGNoTWVkaWEpcmV0dXJuO2xldCBRPXdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSIpLFo9KCk9PkooUS5tYXRjaGVzKTtyZXR1cm4gWigpLFEuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixaKSwoKT0+US5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLFopfSxbXSksJH12YXIgSzY9MjgwO3ZhciBmMz0id2lkdGggNzBtcyBsaW5lYXIiLG0zPSJ3aWR0aCAwLjI0cyBjdWJpYy1iZXppZXIoMC4yMiwgMSwgMC4zNiwgMSkiLFk2PSJwYWRkaW5nLXJpZ2h0IDAuMjRzIGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKSIscTY9ImN1YmljLWJlemllcigwLjIsIDAuODIsIDAuMjIsIDEpIixnNT0iY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSIsRzY9ImxpbmVhcigwLCAwLjMyIDklLCAwLjYyIDE4JSwgMC44NSAyNyUsIDEuMDEgMzYlLCAxLjA3IDQ1JSwgMS4wNSA1NiUsIDEuMDIgNzAlLCAxKSIsVjY9IjAuMTZzIixCNj0iMC4ycyIsTjY9NSxMNj17aWRsZToxLGhvdmVyOjEuMDksZHJhZzoxLjEyfSx6Nj17aWRsZToiIzY4NmU3OCIsaG92ZXI6IiNiN2JiYzIiLGRyYWc6IiNmNGY2ZmEifSxVNj17aWRsZToyLjY1LGhvdmVyOjQuMTUsZHJhZzo0LjY1fSxINj17aWRsZTowLjM4LGhvdmVyOjAuODYsZHJhZzoxfSxoNT1udWxsO2Z1bmN0aW9uIEM2KCl7aWYoaDUhPW51bGwpcmV0dXJuIGg1O2lmKHR5cGVvZiBDU1M+InUifHx0eXBlb2YgQ1NTLnN1cHBvcnRzIT09ImZ1bmN0aW9uIilyZXR1cm4hMTtyZXR1cm4gaDU9Q1NTLnN1cHBvcnRzKCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIiwibGluZWFyKDAsIDEpIiksaDV9dmFyIEdKPTQwLEY2PTE0LGs2PTI0MCxNNj0zMCxPNj0wLjE1LFZKPTgwLEE2PTE1MCxXNj0yNTAscDM9InNlcnZlLXNpbTpzaW11bGF0b3ItZnJhbWUtc2NhbGUiO2Z1bmN0aW9uIHUzKCQsSixRLFope2xldCBLPSQqMyxZPUo+MD9NYXRoLm1heCgxODAsSi00OCk6SyxxPVE+MCYmTnVtYmVyLmlzRmluaXRlKFopJiZaPjA/TWF0aC5tYXgoMTgwLChRLTEzNikqWik6SztyZXR1cm4gTWF0aC5tYXgoMTgwLE1hdGgubWluKEssWSxxKSl9ZnVuY3Rpb24gbjAoJCxKLFEsWixLKXtsZXQgWT11MyhKLFEsWixLKSxxPU1hdGgubWluKDI4MCxZKTtyZXR1cm4gTWF0aC5taW4oWSxNYXRoLm1heChxLCQpKX1mdW5jdGlvbiBfNigkLEosUSxaLEspe2xldCBZPU51bWJlci5pc0Zpbml0ZShLKT8kKks6JDtyZXR1cm4gbjAoWSwkLEosUSxaKX1mdW5jdGlvbiBmNSgkKXtpZighTnVtYmVyLmlzRmluaXRlKCQpKXJldHVybiAkO2xldCBKPXR5cGVvZiB3aW5kb3c8InUiP01hdGgubWF4KDEsd2luZG93LmRldmljZVBpeGVsUmF0aW98fDEpOjE7cmV0dXJuIE1hdGgucm91bmQoJCpKKS9KfWZ1bmN0aW9uIGwzKCQsSil7aWYoJDw9MHx8Sjw9MClyZXR1cm4gMDtsZXQgUT0wLjU1LFo9JCpKKlEvKEorUSokKTtyZXR1cm4gTWF0aC5taW4oR0osWil9ZnVuY3Rpb24gUDYoJCxKLFEpe2xldCBaPSQsSz1RO2ZvcihsZXQgWSBvZiBKKXtsZXQgcT1NYXRoLmFicygkLVkpO2lmKHE8SylaPVksSz1xfXJldHVybiBafWZ1bmN0aW9uIEQ2KCQpe2xldHtmcm9tOkosdG86USx2ZWxvY2l0eTpaLHN0aWZmbmVzczpLLGRhbXBpbmc6WSxvblVwZGF0ZTpxLG9uQ29tcGxldGU6R309JCxOPTAuNCxCPTAuMDMzMzMzMzMzMzMzMzMzMzMsTD1KLFY9WixVPXBlcmZvcm1hbmNlLm5vdygpLHo9MCxrPSExLEg9KEMpPT57aWYoaylyZXR1cm47bGV0IEY9TWF0aC5taW4oKEMtVSkvMTAwMCwwLjAzMzMzMzMzMzMzMzMzMzMzKTtVPUM7bGV0IE89LUsqKEwtUSktWSpWO2lmKFYrPU8qRixMKz1WKkYsTWF0aC5hYnMoVik8MC40JiZNYXRoLmFicyhMLVEpPDAuNCl7cShRKSxHPy4oKTtyZXR1cm59cShMKSx6PXJlcXVlc3RBbmltYXRpb25GcmFtZShIKX07cmV0dXJuIHo9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKEgpLCgpPT57aWYoaz0hMCx6KWNhbmNlbEFuaW1hdGlvbkZyYW1lKHopfX1mdW5jdGlvbiB3NigkKXtpZigkLmxlbmd0aDwyKXJldHVybiAwO2xldCBKPSRbJC5sZW5ndGgtMV0sUT0kWzBdO2ZvcihsZXQgSz0kLmxlbmd0aC0xO0s+PTA7Sy0tKWlmKEoudC0kW0tdLnQ+PVZKKXtRPSRbS107YnJlYWt9bGV0IFo9KEoudC1RLnQpLzEwMDA7cmV0dXJuIFo+MD8oSi54LVEueCkvWjowfXZhciBUNj0iZHJvcC1zaGFkb3coMCAwLjVweCAxcHggcmdiYSgwLDAsMCwwLjEpKSBkcm9wLXNoYWRvdygwIDJweCA1cHggcmdiYSgwLDAsMCwwLjEzKSkiO2Z1bmN0aW9uIEJKKHthcmM6JCxwaGFzZTpKLHJlZHVjZWRNb3Rpb246USxoaWdoQ29udHJhc3Q6Wixmb2N1c1Zpc2libGU6S30pe2xldCBZPUohPT0iaWRsZSIscT1aPzEuMTI6MSxHPVE/MTpMNltKXSxOPVU2W0pdKnEsQj1aPzE6SDZbSl0sTD1ZP1Y2OkI2LFY9WT9xNjpnNSxVPVkmJkM2KCk/RzY6Vix6PVE/Im5vbmUiOmB0cmFuc2Zvcm0gJHtMfSAke1V9YCxrPVE/Im5vbmUiOmBzdHJva2UgJHtMfSAke1Z9LCBzdHJva2Utd2lkdGggJHtMfSAke1Z9YCxIPSQudmlld0JveFNpemUsQz0kLmQsRj17dHJhbnNmb3JtOmB0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoJHtHfSlgLHRyYW5zZm9ybU9yaWdpbjoiMTAwJSAxMDAlIix0cmFuc2l0aW9uOnosd2lsbENoYW5nZTpRP3ZvaWQgMDoidHJhbnNmb3JtIixiYWNrZmFjZVZpc2liaWxpdHk6ImhpZGRlbiIsV2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OiJoaWRkZW4ifTtyZXR1cm4gWCgic3ZnIix7d2lkdGg6SCxoZWlnaHQ6SCx2aWV3Qm94OmAwIDAgJHtIfSAke0h9YCxmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJhcmlhLWhpZGRlbiI6InRydWUiLHNoYXBlUmVuZGVyaW5nOiJnZW9tZXRyaWNQcmVjaXNpb24iLHN0eWxlOntkaXNwbGF5OiJibG9jayIsb3ZlcmZsb3c6InZpc2libGUiLGN1cnNvcjoiaW5oZXJpdCIsdG91Y2hBY3Rpb246Im5vbmUiLHBvaW50ZXJFdmVudHM6Im5vbmUifSxjaGlsZHJlbjpbWCgiZyIseyJhcmlhLWhpZGRlbiI6InRydWUiLHN0eWxlOntwb2ludGVyRXZlbnRzOiJub25lIn0sY2hpbGRyZW46W1goInBhdGgiLHtkOkMsZmlsbDoibm9uZSIsc3Ryb2tlOiJyZ2JhKDEwLCAxMzIsIDI1NSwgMC45NSkiLHN0cm9rZVdpZHRoOihONioyKzYpKnEsc3Ryb2tlTGluZWNhcDoicm91bmQiLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTp7b3BhY2l0eTpLPzAuOTU6MCx0cmFuc2l0aW9uOlE/Im9wYWNpdHkgODBtcyBsaW5lYXIiOmBvcGFjaXR5IDIwMG1zICR7ZzV9YCxmaWx0ZXI6ImRyb3Atc2hhZG93KDAgMCAycHggcmdiYSgxMCwxMzIsMjU1LDAuNTUpKSBkcm9wLXNoYWRvdygwIDAgNHB4IHJnYmEoMTAsMTMyLDI1NSwwLjMyKSkifX0pLFgoInBhdGgiLHtkOkMsZmlsbDoibm9uZSIsc3Ryb2tlOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOTUpIixzdHJva2VXaWR0aDoxLjUqcSxzdHJva2VMaW5lY2FwOiJyb3VuZCIsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOntvcGFjaXR5Oks/MC43OjAsdHJhbnNpdGlvbjpRPyJvcGFjaXR5IDgwbXMgbGluZWFyIjpgb3BhY2l0eSAyMDBtcyAke2c1fWB9fSldfSksWCgiZyIseyJhcmlhLWhpZGRlbiI6InRydWUiLHN0eWxlOkYsY2hpbGRyZW46WCgiZyIse3N0eWxlOntwb2ludGVyRXZlbnRzOiJub25lIn0sY2hpbGRyZW46W1goInBhdGgiLHtkOkMsc3Ryb2tlOiIjMzQzNjNiIixzdHJva2VXaWR0aDpOKzIuMipxLHN0cm9rZUxpbmVjYXA6InJvdW5kIix2ZWN0b3JFZmZlY3Q6Im5vbi1zY2FsaW5nLXN0cm9rZSIsc3R5bGU6e29wYWNpdHk6TWF0aC5taW4oMSxCKzAuMDgpLHRyYW5zaXRpb246YCR7a30sIG9wYWNpdHkgJHtMfSAke1Z9YCxmaWx0ZXI6VDZ9fSksWCgicGF0aCIse2Q6QyxzdHJva2U6ejZbSl0sc3Ryb2tlV2lkdGg6TixzdHJva2VMaW5lY2FwOiJyb3VuZCIsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOntvcGFjaXR5OkIsdHJhbnNpdGlvbjpgJHtrfSwgb3BhY2l0eSAke0x9ICR7Vn1gLGZpbHRlcjpUNn19KV19KX0pXX0pfWZ1bmN0aW9uIEk2KHtzaW11bGF0b3JSZXNpemU6JCxkZXZpY2VUeXBlOkosc3RyZWFtQ29uZmlnOlEsY29udGFpbmVyV2lkdGg6Wixjb250YWluZXJIZWlnaHQ6S30pe2xldCBZPVI1KCkscT1YNigpLFtHLE5dPUEoITEpLEI9VDEoKCk9PlczKHt0eXBlOkosY29uZmlnOlE/P251bGwsY29udGFpbmVyV2lkdGg6Wixjb250YWluZXJIZWlnaHQ6S30pLFtKLFEsWixLXSksTD0kLmlzUmVzaXppbmd8fCQuaXNJbmVydGlhPyJkcmFnIjokLmhhbmRsZUhvdmVyZWQ/ImhvdmVyIjoiaWRsZSI7cmV0dXJuIFgoImRpdiIse3JvbGU6InNlcGFyYXRvciIsImFyaWEtbGFiZWwiOiJSZXNpemUgc2ltdWxhdG9yIHdpZHRoLiBEcmFnIHRoZSBjb3JuZXIgb3IgdXNlIExlZnQgYW5kIFJpZ2h0IEFycm93IGtleXM7IGhvbGQgU2hpZnQgZm9yIGxhcmdlciBzdGVwcy4iLCJhcmlhLW9yaWVudGF0aW9uIjoidmVydGljYWwiLCJhcmlhLXZhbHVlbWluIjpNYXRoLnJvdW5kKCQubWluV2lkdGgpLCJhcmlhLXZhbHVlbWF4IjpNYXRoLnJvdW5kKCQubWF4V2lkdGgpLCJhcmlhLXZhbHVlbm93IjpNYXRoLnJvdW5kKCQuY29tbWl0dGVkV2lkdGgpLHRhYkluZGV4OjAscmVmOiQuaGFuZGxlUmVmLG9uS2V5RG93bjokLm9uS2V5RG93bixvblBvaW50ZXJEb3duOiQub25Qb2ludGVyRG93bixvblBvaW50ZXJNb3ZlOiQub25Qb2ludGVyTW92ZSxvblBvaW50ZXJVcDokLm9uUG9pbnRlckVuZCxvblBvaW50ZXJDYW5jZWw6JC5vblBvaW50ZXJFbmQsb25Mb3N0UG9pbnRlckNhcHR1cmU6JC5vblBvaW50ZXJFbmQsb25Qb2ludGVyRW50ZXI6KCk9PiQuc2V0SGFuZGxlSG92ZXJlZCghMCksb25Qb2ludGVyTGVhdmU6KCk9PiQuc2V0SGFuZGxlSG92ZXJlZCghMSksb25Gb2N1czooVik9PntOKFYuY3VycmVudFRhcmdldC5tYXRjaGVzPy4oIjpmb2N1cy12aXNpYmxlIik/PyExKX0sb25CbHVyOigpPT5OKCExKSxzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixyaWdodDotMTQsYm90dG9tOi0xNCx3aWR0aDo2MCxoZWlnaHQ6NjAsYm9yZGVyOiJub25lIixwYWRkaW5nOjAsbWFyZ2luOjAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiZmxleC1lbmQiLGp1c3RpZnlDb250ZW50OiJmbGV4LWVuZCIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGN1cnNvcjoibndzZS1yZXNpemUiLHRvdWNoQWN0aW9uOiJub25lIixwb2ludGVyRXZlbnRzOiJhdXRvIixvdXRsaW5lOiJub25lIix6SW5kZXg6MjUsV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6InRyYW5zcGFyZW50In0sY2hpbGRyZW46WChCSix7YXJjOkIscGhhc2U6TCxyZWR1Y2VkTW90aW9uOlksaGlnaENvbnRyYXN0OnEsZm9jdXNWaXNpYmxlOkd9KX0pfWZ1bmN0aW9uIE5KKCQpe2lmKCEkfHx0eXBlb2YgZG9jdW1lbnQ+InUiKXJldHVybjtsZXQgSj1kb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLFE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtRLnR5cGU9InRleHQvY3NzIixKLmFwcGVuZENoaWxkKFEpLFEuc3R5bGVTaGVldD9RLnN0eWxlU2hlZXQuY3NzVGV4dD0kOlEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJCkpfXZhciBMSj0oJCk9Pntzd2l0Y2goJCl7Y2FzZSJzdWNjZXNzIjpyZXR1cm4gSEo7Y2FzZSJpbmZvIjpyZXR1cm4gRko7Y2FzZSJ3YXJuaW5nIjpyZXR1cm4gQ0o7Y2FzZSJlcnJvciI6cmV0dXJuIGtKO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSx6Sj1BcnJheSgxMikuZmlsbCgwKSxVSj0oe3Zpc2libGU6JCxjbGFzc05hbWU6Sn0pPT57cmV0dXJuIGYuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOlsic29ubmVyLWxvYWRpbmctd3JhcHBlciIsSl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKSwiZGF0YS12aXNpYmxlIjokfSxmLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToic29ubmVyLXNwaW5uZXIifSx6Si5tYXAoKFEsWik9PmYuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJzb25uZXItbG9hZGluZy1iYXIiLGtleTpgc3Bpbm5lci1iYXItJHtafWB9KSkpKX0sSEo9Zi5jcmVhdGVFbGVtZW50KCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyMCAyMCIsZmlsbDoiY3VycmVudENvbG9yIixoZWlnaHQ6IjIwIix3aWR0aDoiMjAifSxmLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTMuODU3LTkuODA5YS43NS43NSAwIDAwLTEuMjE0LS44ODJsLTMuNDgzIDQuNzktMS44OC0xLjg4YS43NS43NSAwIDEwLTEuMDYgMS4wNjFsMi41IDIuNWEuNzUuNzUgMCAwMDEuMTM3LS4wODlsNC01LjV6IixjbGlwUnVsZToiZXZlbm9kZCJ9KSksQ0o9Zi5jcmVhdGVFbGVtZW50KCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoiY3VycmVudENvbG9yIixoZWlnaHQ6IjIwIix3aWR0aDoiMjAifSxmLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTkuNDAxIDMuMDAzYzEuMTU1LTIgNC4wNDMtMiA1LjE5NyAwbDcuMzU1IDEyLjc0OGMxLjE1NCAyLS4yOSA0LjUtMi41OTkgNC41SDQuNjQ1Yy0yLjMwOSAwLTMuNzUyLTIuNS0yLjU5OC00LjVMOS40IDMuMDAzek0xMiA4LjI1YS43NS43NSAwIDAxLjc1Ljc1djMuNzVhLjc1Ljc1IDAgMDEtMS41IDBWOWEuNzUuNzUgMCAwMS43NS0uNzV6bTAgOC4yNWEuNzUuNzUgMCAxMDAtMS41Ljc1Ljc1IDAgMDAwIDEuNXoiLGNsaXBSdWxlOiJldmVub2RkIn0pKSxGSj1mLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdmlld0JveDoiMCAwIDIwIDIwIixmaWxsOiJjdXJyZW50Q29sb3IiLGhlaWdodDoiMjAiLHdpZHRoOiIyMCJ9LGYuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixkOiJNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6bS03LTRhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwek05IDlhLjc1Ljc1IDAgMDAwIDEuNWguMjUzYS4yNS4yNSAwIDAxLjI0NC4zMDRsLS40NTkgMi4wNjZBMS43NSAxLjc1IDAgMDAxMC43NDcgMTVIMTFhLjc1Ljc1IDAgMDAwLTEuNWgtLjI1M2EuMjUuMjUgMCAwMS0uMjQ0LS4zMDRsLjQ1OS0yLjA2NkExLjc1IDEuNzUgMCAwMDkuMjUzIDlIOXoiLGNsaXBSdWxlOiJldmVub2RkIn0pKSxrSj1mLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdmlld0JveDoiMCAwIDIwIDIwIixmaWxsOiJjdXJyZW50Q29sb3IiLGhlaWdodDoiMjAiLHdpZHRoOiIyMCJ9LGYuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixkOiJNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6bS04LTVhLjc1Ljc1IDAgMDEuNzUuNzV2NC41YS43NS43NSAwIDAxLTEuNSAwdi00LjVBLjc1Ljc1IDAgMDExMCA1em0wIDEwYTEgMSAwIDEwMC0yIDEgMSAwIDAwMCAyeiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpLE1KPWYuY3JlYXRlRWxlbWVudCgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMTIiLGhlaWdodDoiMTIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIxLjUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQifSxmLmNyZWF0ZUVsZW1lbnQoImxpbmUiLHt4MToiMTgiLHkxOiI2Iix4MjoiNiIseTI6IjE4In0pLGYuY3JlYXRlRWxlbWVudCgibGluZSIse3gxOiI2Iix5MToiNiIseDI6IjE4Iix5MjoiMTgifSkpLE9KPSgpPT57bGV0WyQsSl09Zi51c2VTdGF0ZShkb2N1bWVudC5oaWRkZW4pO3JldHVybiBmLnVzZUVmZmVjdCgoKT0+e2xldCBRPSgpPT57Sihkb2N1bWVudC5oaWRkZW4pfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsUSksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixRKX0sW10pLCR9LGQzPTE7Y2xhc3MgYjZ7Y29uc3RydWN0b3IoKXt0aGlzLnN1YnNjcmliZT0oJCk9PntyZXR1cm4gdGhpcy5zdWJzY3JpYmVycy5wdXNoKCQpLCgpPT57bGV0IEo9dGhpcy5zdWJzY3JpYmVycy5pbmRleE9mKCQpO3RoaXMuc3Vic2NyaWJlcnMuc3BsaWNlKEosMSl9fSx0aGlzLnB1Ymxpc2g9KCQpPT57dGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKChKKT0+SigkKSl9LHRoaXMuYWRkVG9hc3Q9KCQpPT57dGhpcy5wdWJsaXNoKCQpLHRoaXMudG9hc3RzPVsuLi50aGlzLnRvYXN0cywkXX0sdGhpcy5jcmVhdGU9KCQpPT57dmFyIEo7bGV0e21lc3NhZ2U6USwuLi5afT0kLEs9dHlwZW9mKCQ9PW51bGw/dm9pZCAwOiQuaWQpPT09Im51bWJlciJ8fCgoSj0kLmlkKT09bnVsbD92b2lkIDA6Si5sZW5ndGgpPjA/JC5pZDpkMysrLFk9dGhpcy50b2FzdHMuZmluZCgoRyk9PntyZXR1cm4gRy5pZD09PUt9KSxxPSQuZGlzbWlzc2libGU9PT12b2lkIDA/ITA6JC5kaXNtaXNzaWJsZTtpZih0aGlzLmRpc21pc3NlZFRvYXN0cy5oYXMoSykpdGhpcy5kaXNtaXNzZWRUb2FzdHMuZGVsZXRlKEspO2lmKFkpdGhpcy50b2FzdHM9dGhpcy50b2FzdHMubWFwKChHKT0+e2lmKEcuaWQ9PT1LKXJldHVybiB0aGlzLnB1Ymxpc2goey4uLkcsLi4uJCxpZDpLLHRpdGxlOlF9KSx7Li4uRywuLi4kLGlkOkssZGlzbWlzc2libGU6cSx0aXRsZTpRfTtyZXR1cm4gR30pO2Vsc2UgdGhpcy5hZGRUb2FzdCh7dGl0bGU6USwuLi5aLGRpc21pc3NpYmxlOnEsaWQ6S30pO3JldHVybiBLfSx0aGlzLmRpc21pc3M9KCQpPT57aWYoJCl0aGlzLmRpc21pc3NlZFRvYXN0cy5hZGQoJCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT50aGlzLnN1YnNjcmliZXJzLmZvckVhY2goKEopPT5KKHtpZDokLGRpc21pc3M6ITB9KSkpO2Vsc2UgdGhpcy50b2FzdHMuZm9yRWFjaCgoSik9Pnt0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goKFEpPT5RKHtpZDpKLmlkLGRpc21pc3M6ITB9KSl9KTtyZXR1cm4gJH0sdGhpcy5tZXNzYWdlPSgkLEopPT57cmV0dXJuIHRoaXMuY3JlYXRlKHsuLi5KLG1lc3NhZ2U6JH0pfSx0aGlzLmVycm9yPSgkLEopPT57cmV0dXJuIHRoaXMuY3JlYXRlKHsuLi5KLG1lc3NhZ2U6JCx0eXBlOiJlcnJvciJ9KX0sdGhpcy5zdWNjZXNzPSgkLEopPT57cmV0dXJuIHRoaXMuY3JlYXRlKHsuLi5KLHR5cGU6InN1Y2Nlc3MiLG1lc3NhZ2U6JH0pfSx0aGlzLmluZm89KCQsSik9PntyZXR1cm4gdGhpcy5jcmVhdGUoey4uLkosdHlwZToiaW5mbyIsbWVzc2FnZTokfSl9LHRoaXMud2FybmluZz0oJCxKKT0+e3JldHVybiB0aGlzLmNyZWF0ZSh7Li4uSix0eXBlOiJ3YXJuaW5nIixtZXNzYWdlOiR9KX0sdGhpcy5sb2FkaW5nPSgkLEopPT57cmV0dXJuIHRoaXMuY3JlYXRlKHsuLi5KLHR5cGU6ImxvYWRpbmciLG1lc3NhZ2U6JH0pfSx0aGlzLnByb21pc2U9KCQsSik9PntpZighSilyZXR1cm47bGV0IFE9dm9pZCAwO2lmKEoubG9hZGluZyE9PXZvaWQgMClRPXRoaXMuY3JlYXRlKHsuLi5KLHByb21pc2U6JCx0eXBlOiJsb2FkaW5nIixtZXNzYWdlOkoubG9hZGluZyxkZXNjcmlwdGlvbjp0eXBlb2YgSi5kZXNjcmlwdGlvbiE9PSJmdW5jdGlvbiI/Si5kZXNjcmlwdGlvbjp2b2lkIDB9KTtsZXQgWj1Qcm9taXNlLnJlc29sdmUoJCBpbnN0YW5jZW9mIEZ1bmN0aW9uPyQoKTokKSxLPVEhPT12b2lkIDAsWSxxPVoudGhlbihhc3luYyhOKT0+e2lmKFk9WyJyZXNvbHZlIixOXSxmLmlzVmFsaWRFbGVtZW50KE4pKUs9ITEsdGhpcy5jcmVhdGUoe2lkOlEsdHlwZToiZGVmYXVsdCIsbWVzc2FnZTpOfSk7ZWxzZSBpZihXSihOKSYmIU4ub2spe0s9ITE7bGV0IEw9dHlwZW9mIEouZXJyb3I9PT0iZnVuY3Rpb24iP2F3YWl0IEouZXJyb3IoYEhUVFAgZXJyb3IhIHN0YXR1czogJHtOLnN0YXR1c31gKTpKLmVycm9yLFY9dHlwZW9mIEouZGVzY3JpcHRpb249PT0iZnVuY3Rpb24iP2F3YWl0IEouZGVzY3JpcHRpb24oYEhUVFAgZXJyb3IhIHN0YXR1czogJHtOLnN0YXR1c31gKTpKLmRlc2NyaXB0aW9uLHo9dHlwZW9mIEw9PT0ib2JqZWN0IiYmIWYuaXNWYWxpZEVsZW1lbnQoTCk/TDp7bWVzc2FnZTpMfTt0aGlzLmNyZWF0ZSh7aWQ6USx0eXBlOiJlcnJvciIsZGVzY3JpcHRpb246ViwuLi56fSl9ZWxzZSBpZihOIGluc3RhbmNlb2YgRXJyb3Ipe0s9ITE7bGV0IEw9dHlwZW9mIEouZXJyb3I9PT0iZnVuY3Rpb24iP2F3YWl0IEouZXJyb3IoTik6Si5lcnJvcixWPXR5cGVvZiBKLmRlc2NyaXB0aW9uPT09ImZ1bmN0aW9uIj9hd2FpdCBKLmRlc2NyaXB0aW9uKE4pOkouZGVzY3JpcHRpb24sej10eXBlb2YgTD09PSJvYmplY3QiJiYhZi5pc1ZhbGlkRWxlbWVudChMKT9MOnttZXNzYWdlOkx9O3RoaXMuY3JlYXRlKHtpZDpRLHR5cGU6ImVycm9yIixkZXNjcmlwdGlvbjpWLC4uLnp9KX1lbHNlIGlmKEouc3VjY2VzcyE9PXZvaWQgMCl7Sz0hMTtsZXQgTD10eXBlb2YgSi5zdWNjZXNzPT09ImZ1bmN0aW9uIj9hd2FpdCBKLnN1Y2Nlc3MoTik6Si5zdWNjZXNzLFY9dHlwZW9mIEouZGVzY3JpcHRpb249PT0iZnVuY3Rpb24iP2F3YWl0IEouZGVzY3JpcHRpb24oTik6Si5kZXNjcmlwdGlvbix6PXR5cGVvZiBMPT09Im9iamVjdCImJiFmLmlzVmFsaWRFbGVtZW50KEwpP0w6e21lc3NhZ2U6TH07dGhpcy5jcmVhdGUoe2lkOlEsdHlwZToic3VjY2VzcyIsZGVzY3JpcHRpb246ViwuLi56fSl9fSkuY2F0Y2goYXN5bmMoTik9PntpZihZPVsicmVqZWN0IixOXSxKLmVycm9yIT09dm9pZCAwKXtLPSExO2xldCBCPXR5cGVvZiBKLmVycm9yPT09ImZ1bmN0aW9uIj9hd2FpdCBKLmVycm9yKE4pOkouZXJyb3IsTD10eXBlb2YgSi5kZXNjcmlwdGlvbj09PSJmdW5jdGlvbiI/YXdhaXQgSi5kZXNjcmlwdGlvbihOKTpKLmRlc2NyaXB0aW9uLFU9dHlwZW9mIEI9PT0ib2JqZWN0IiYmIWYuaXNWYWxpZEVsZW1lbnQoQik/Qjp7bWVzc2FnZTpCfTt0aGlzLmNyZWF0ZSh7aWQ6USx0eXBlOiJlcnJvciIsZGVzY3JpcHRpb246TCwuLi5VfSl9fSkuZmluYWxseSgoKT0+e2lmKEspdGhpcy5kaXNtaXNzKFEpLFE9dm9pZCAwO0ouZmluYWxseT09bnVsbHx8Si5maW5hbGx5LmNhbGwoSil9KSxHPSgpPT5uZXcgUHJvbWlzZSgoTixCKT0+cS50aGVuKCgpPT5ZWzBdPT09InJlamVjdCI/QihZWzFdKTpOKFlbMV0pKS5jYXRjaChCKSk7aWYodHlwZW9mIFEhPT0ic3RyaW5nIiYmdHlwZW9mIFEhPT0ibnVtYmVyIilyZXR1cm57dW53cmFwOkd9O2Vsc2UgcmV0dXJuIE9iamVjdC5hc3NpZ24oUSx7dW53cmFwOkd9KX0sdGhpcy5jdXN0b209KCQsSik9PntsZXQgUT0oSj09bnVsbD92b2lkIDA6Si5pZCl8fGQzKys7cmV0dXJuIHRoaXMuY3JlYXRlKHtqc3g6JChRKSxpZDpRLC4uLkp9KSxRfSx0aGlzLmdldEFjdGl2ZVRvYXN0cz0oKT0+e3JldHVybiB0aGlzLnRvYXN0cy5maWx0ZXIoKCQpPT4hdGhpcy5kaXNtaXNzZWRUb2FzdHMuaGFzKCQuaWQpKX0sdGhpcy5zdWJzY3JpYmVycz1bXSx0aGlzLnRvYXN0cz1bXSx0aGlzLmRpc21pc3NlZFRvYXN0cz1uZXcgU2V0fX12YXIgSzA9bmV3IGI2LEFKPSgkLEopPT57bGV0IFE9KEo9PW51bGw/dm9pZCAwOkouaWQpfHxkMysrO3JldHVybiBLMC5hZGRUb2FzdCh7dGl0bGU6JCwuLi5KLGlkOlF9KSxRfSxXSj0oJCk9PntyZXR1cm4gJCYmdHlwZW9mICQ9PT0ib2JqZWN0IiYmIm9rImluICQmJnR5cGVvZiAkLm9rPT09ImJvb2xlYW4iJiYic3RhdHVzImluICQmJnR5cGVvZiAkLnN0YXR1cz09PSJudW1iZXIifSxfSj1BSixQSj0oKT0+SzAudG9hc3RzLERKPSgpPT5LMC5nZXRBY3RpdmVUb2FzdHMoKSxjMj1PYmplY3QuYXNzaWduKF9KLHtzdWNjZXNzOkswLnN1Y2Nlc3MsaW5mbzpLMC5pbmZvLHdhcm5pbmc6SzAud2FybmluZyxlcnJvcjpLMC5lcnJvcixjdXN0b206SzAuY3VzdG9tLG1lc3NhZ2U6SzAubWVzc2FnZSxwcm9taXNlOkswLnByb21pc2UsZGlzbWlzczpLMC5kaXNtaXNzLGxvYWRpbmc6SzAubG9hZGluZ30se2dldEhpc3Rvcnk6UEosZ2V0VG9hc3RzOkRKfSk7TkooIltkYXRhLXNvbm5lci10b2FzdGVyXVtkaXI9bHRyXSxodG1sW2Rpcj1sdHJdey0tdG9hc3QtaWNvbi1tYXJnaW4tc3RhcnQ6LTNweDstLXRvYXN0LWljb24tbWFyZ2luLWVuZDo0cHg7LS10b2FzdC1zdmctbWFyZ2luLXN0YXJ0Oi0xcHg7LS10b2FzdC1zdmctbWFyZ2luLWVuZDowcHg7LS10b2FzdC1idXR0b24tbWFyZ2luLXN0YXJ0OmF1dG87LS10b2FzdC1idXR0b24tbWFyZ2luLWVuZDowOy0tdG9hc3QtY2xvc2UtYnV0dG9uLXN0YXJ0OjA7LS10b2FzdC1jbG9zZS1idXR0b24tZW5kOnVuc2V0Oy0tdG9hc3QtY2xvc2UtYnV0dG9uLXRyYW5zZm9ybTp0cmFuc2xhdGUoLTM1JSwgLTM1JSl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2Rpcj1ydGxdLGh0bWxbZGlyPXJ0bF17LS10b2FzdC1pY29uLW1hcmdpbi1zdGFydDo0cHg7LS10b2FzdC1pY29uLW1hcmdpbi1lbmQ6LTNweDstLXRvYXN0LXN2Zy1tYXJnaW4tc3RhcnQ6MHB4Oy0tdG9hc3Qtc3ZnLW1hcmdpbi1lbmQ6LTFweDstLXRvYXN0LWJ1dHRvbi1tYXJnaW4tc3RhcnQ6MDstLXRvYXN0LWJ1dHRvbi1tYXJnaW4tZW5kOmF1dG87LS10b2FzdC1jbG9zZS1idXR0b24tc3RhcnQ6dW5zZXQ7LS10b2FzdC1jbG9zZS1idXR0b24tZW5kOjA7LS10b2FzdC1jbG9zZS1idXR0b24tdHJhbnNmb3JtOnRyYW5zbGF0ZSgzNSUsIC0zNSUpfVtkYXRhLXNvbm5lci10b2FzdGVyXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDp2YXIoLS13aWR0aCk7Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppOy0tZ3JheTE6aHNsKDAsIDAlLCA5OSUpOy0tZ3JheTI6aHNsKDAsIDAlLCA5Ny4zJSk7LS1ncmF5Mzpoc2woMCwgMCUsIDk1LjElKTstLWdyYXk0OmhzbCgwLCAwJSwgOTMlKTstLWdyYXk1OmhzbCgwLCAwJSwgOTAuOSUpOy0tZ3JheTY6aHNsKDAsIDAlLCA4OC43JSk7LS1ncmF5Nzpoc2woMCwgMCUsIDg1LjglKTstLWdyYXk4OmhzbCgwLCAwJSwgNzglKTstLWdyYXk5OmhzbCgwLCAwJSwgNTYuMSUpOy0tZ3JheTEwOmhzbCgwLCAwJSwgNTIuMyUpOy0tZ3JheTExOmhzbCgwLCAwJSwgNDMuNSUpOy0tZ3JheTEyOmhzbCgwLCAwJSwgOSUpOy0tYm9yZGVyLXJhZGl1czo4cHg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MDttYXJnaW46MDtsaXN0LXN0eWxlOm5vbmU7b3V0bGluZTowO3otaW5kZXg6OTk5OTk5OTk5O3RyYW5zaXRpb246dHJhbnNmb3JtIC40cyBlYXNlfUBtZWRpYSAoaG92ZXI6bm9uZSkgYW5kIChwb2ludGVyOmNvYXJzZSl7W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtbGlmdGVkPXRydWVde3RyYW5zZm9ybTpub25lfX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS14LXBvc2l0aW9uPXJpZ2h0XXtyaWdodDp2YXIoLS1vZmZzZXQtcmlnaHQpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249bGVmdF17bGVmdDp2YXIoLS1vZmZzZXQtbGVmdCl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteC1wb3NpdGlvbj1jZW50ZXJde2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXktcG9zaXRpb249dG9wXXt0b3A6dmFyKC0tb2Zmc2V0LXRvcCl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteS1wb3NpdGlvbj1ib3R0b21de2JvdHRvbTp2YXIoLS1vZmZzZXQtYm90dG9tKX1bZGF0YS1zb25uZXItdG9hc3Rdey0teTp0cmFuc2xhdGVZKDEwMCUpOy0tbGlmdC1hbW91bnQ6Y2FsYyh2YXIoLS1saWZ0KSAqIHZhcigtLWdhcCkpO3otaW5kZXg6dmFyKC0tei1pbmRleCk7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO3RyYW5zZm9ybTp2YXIoLS15KTt0b3VjaC1hY3Rpb246bm9uZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNHMsb3BhY2l0eSAuNHMsaGVpZ2h0IC40cyxib3gtc2hhZG93IC4ycztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3V0bGluZTowO292ZXJmbG93LXdyYXA6YW55d2hlcmV9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXXtwYWRkaW5nOjE2cHg7YmFja2dyb3VuZDp2YXIoLS1ub3JtYWwtYmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbm9ybWFsLWJvcmRlcik7Y29sb3I6dmFyKC0tbm9ybWFsLXRleHQpO2JvcmRlci1yYWRpdXM6dmFyKC0tYm9yZGVyLXJhZGl1cyk7Ym94LXNoYWRvdzowIDRweCAxMnB4IHJnYmEoMCwwLDAsLjEpO3dpZHRoOnZhcigtLXdpZHRoKTtmb250LXNpemU6MTNweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHh9W2RhdGEtc29ubmVyLXRvYXN0XTpmb2N1cy12aXNpYmxle2JveC1zaGFkb3c6MCA0cHggMTJweCByZ2JhKDAsMCwwLC4xKSwwIDAgMCAycHggcmdiYSgwLDAsMCwuMil9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXktcG9zaXRpb249dG9wXXt0b3A6MDstLXk6dHJhbnNsYXRlWSgtMTAwJSk7LS1saWZ0OjE7LS1saWZ0LWFtb3VudDpjYWxjKDEgKiB2YXIoLS1nYXApKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEteS1wb3NpdGlvbj1ib3R0b21de2JvdHRvbTowOy0teTp0cmFuc2xhdGVZKDEwMCUpOy0tbGlmdDotMTstLWxpZnQtYW1vdW50OmNhbGModmFyKC0tbGlmdCkgKiB2YXIoLS1nYXApKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWRlc2NyaXB0aW9uXXtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS40O2NvbG9yOiMzZjNmM2Z9W2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWRlc2NyaXB0aW9uXXtjb2xvcjppbmhlcml0fVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXNvbm5lci10aGVtZT1kYXJrXSBbZGF0YS1kZXNjcmlwdGlvbl17Y29sb3I6I2U4ZThlOH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLXRpdGxlXXtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS41O2NvbG9yOmluaGVyaXR9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1pY29uXXtkaXNwbGF5OmZsZXg7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDtwb3NpdGlvbjpyZWxhdGl2ZTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1zaHJpbms6MDttYXJnaW4tbGVmdDp2YXIoLS10b2FzdC1pY29uLW1hcmdpbi1zdGFydCk7bWFyZ2luLXJpZ2h0OnZhcigtLXRvYXN0LWljb24tbWFyZ2luLWVuZCl9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXByb21pc2U9dHJ1ZV0gW2RhdGEtaWNvbl0+c3Zne29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO2FuaW1hdGlvbjpzb25uZXItZmFkZS1pbiAuM3MgZWFzZSBmb3J3YXJkc31bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWljb25dPip7ZmxleC1zaHJpbms6MH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWljb25dIHN2Z3ttYXJnaW4tbGVmdDp2YXIoLS10b2FzdC1zdmctbWFyZ2luLXN0YXJ0KTttYXJnaW4tcmlnaHQ6dmFyKC0tdG9hc3Qtc3ZnLW1hcmdpbi1lbmQpfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9dHJ1ZV0gW2RhdGEtY29udGVudF17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4fVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9dHJ1ZV0gW2RhdGEtYnV0dG9uXXtib3JkZXItcmFkaXVzOjRweDtwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6OHB4O2hlaWdodDoyNHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLW5vcm1hbC1iZyk7YmFja2dyb3VuZDp2YXIoLS1ub3JtYWwtdGV4dCk7bWFyZ2luLWxlZnQ6dmFyKC0tdG9hc3QtYnV0dG9uLW1hcmdpbi1zdGFydCk7bWFyZ2luLXJpZ2h0OnZhcigtLXRvYXN0LWJ1dHRvbi1tYXJnaW4tZW5kKTtib3JkZXI6bm9uZTtmb250LXdlaWdodDo1MDA7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTowO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1zaHJpbms6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjRzLGJveC1zaGFkb3cgLjJzfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9dHJ1ZV0gW2RhdGEtYnV0dG9uXTpmb2N1cy12aXNpYmxle2JveC1zaGFkb3c6MCAwIDAgMnB4IHJnYmEoMCwwLDAsLjQpfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9dHJ1ZV0gW2RhdGEtYnV0dG9uXTpmaXJzdC1vZi10eXBle21hcmdpbi1sZWZ0OnZhcigtLXRvYXN0LWJ1dHRvbi1tYXJnaW4tc3RhcnQpO21hcmdpbi1yaWdodDp2YXIoLS10b2FzdC1idXR0b24tbWFyZ2luLWVuZCl9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1jYW5jZWxde2NvbG9yOnZhcigtLW5vcm1hbC10ZXh0KTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA4KX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS1zb25uZXItdGhlbWU9ZGFya10gW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1jYW5jZWxde2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMyl9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1jbG9zZS1idXR0b25de3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6dmFyKC0tdG9hc3QtY2xvc2UtYnV0dG9uLXN0YXJ0KTtyaWdodDp2YXIoLS10b2FzdC1jbG9zZS1idXR0b24tZW5kKTt0b3A6MDtoZWlnaHQ6MjBweDt3aWR0aDoyMHB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjA7Y29sb3I6dmFyKC0tZ3JheTEyKTtiYWNrZ3JvdW5kOnZhcigtLW5vcm1hbC1iZyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ncmF5NCk7dHJhbnNmb3JtOnZhcigtLXRvYXN0LWNsb3NlLWJ1dHRvbi10cmFuc2Zvcm0pO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MTt0cmFuc2l0aW9uOm9wYWNpdHkgLjFzLGJhY2tncm91bmQgLjJzLGJvcmRlci1jb2xvciAuMnN9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1jbG9zZS1idXR0b25dOmZvY3VzLXZpc2libGV7Ym94LXNoYWRvdzowIDRweCAxMnB4IHJnYmEoMCwwLDAsLjEpLDAgMCAwIDJweCByZ2JhKDAsMCwwLC4yKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWRpc2FibGVkPXRydWVde2N1cnNvcjpub3QtYWxsb3dlZH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdOmhvdmVyIFtkYXRhLWNsb3NlLWJ1dHRvbl06aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1ncmF5Mik7Ym9yZGVyLWNvbG9yOnZhcigtLWdyYXk1KX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGluZz10cnVlXTo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTAwJTtyaWdodDotMTAwJTtoZWlnaHQ6MTAwJTt6LWluZGV4Oi0xfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS15LXBvc2l0aW9uPXRvcF1bZGF0YS1zd2lwaW5nPXRydWVdOjpiZWZvcmV7Ym90dG9tOjUwJTt0cmFuc2Zvcm06c2NhbGVZKDMpIHRyYW5zbGF0ZVkoNTAlKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEteS1wb3NpdGlvbj1ib3R0b21dW2RhdGEtc3dpcGluZz10cnVlXTo6YmVmb3Jle3RvcDo1MCU7dHJhbnNmb3JtOnNjYWxlWSgzKSB0cmFuc2xhdGVZKC01MCUpfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwaW5nPWZhbHNlXVtkYXRhLXJlbW92ZWQ9dHJ1ZV06OmJlZm9yZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7dHJhbnNmb3JtOnNjYWxlWSgyKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtZXhwYW5kZWQ9dHJ1ZV06OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2hlaWdodDpjYWxjKHZhcigtLWdhcCkgKyAxcHgpO2JvdHRvbToxMDAlO3dpZHRoOjEwMCV9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLW1vdW50ZWQ9dHJ1ZV17LS15OnRyYW5zbGF0ZVkoMCk7b3BhY2l0eToxfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1leHBhbmRlZD1mYWxzZV1bZGF0YS1mcm9udD1mYWxzZV17LS1zY2FsZTp2YXIoLS10b2FzdHMtYmVmb3JlKSAqIDAuMDUgKyAxOy0teTp0cmFuc2xhdGVZKGNhbGModmFyKC0tbGlmdC1hbW91bnQpICogdmFyKC0tdG9hc3RzLWJlZm9yZSkpKSBzY2FsZShjYWxjKC0xICogdmFyKC0tc2NhbGUpKSk7aGVpZ2h0OnZhcigtLWZyb250LXRvYXN0LWhlaWdodCl9W2RhdGEtc29ubmVyLXRvYXN0XT4qe3RyYW5zaXRpb246b3BhY2l0eSAuNHN9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXgtcG9zaXRpb249cmlnaHRde3JpZ2h0OjB9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXgtcG9zaXRpb249bGVmdF17bGVmdDowfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1leHBhbmRlZD1mYWxzZV1bZGF0YS1mcm9udD1mYWxzZV1bZGF0YS1zdHlsZWQ9dHJ1ZV0+KntvcGFjaXR5OjB9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXZpc2libGU9ZmFsc2Vde29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1tb3VudGVkPXRydWVdW2RhdGEtZXhwYW5kZWQ9dHJ1ZV17LS15OnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1saWZ0KSAqIHZhcigtLW9mZnNldCkpKTtoZWlnaHQ6dmFyKC0taW5pdGlhbC1oZWlnaHQpfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1yZW1vdmVkPXRydWVdW2RhdGEtZnJvbnQ9dHJ1ZV1bZGF0YS1zd2lwZS1vdXQ9ZmFsc2Vdey0teTp0cmFuc2xhdGVZKGNhbGModmFyKC0tbGlmdCkgKiAtMTAwJSkpO29wYWNpdHk6MH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtcmVtb3ZlZD10cnVlXVtkYXRhLWZyb250PWZhbHNlXVtkYXRhLXN3aXBlLW91dD1mYWxzZV1bZGF0YS1leHBhbmRlZD10cnVlXXstLXk6dHJhbnNsYXRlWShjYWxjKHZhcigtLWxpZnQpICogdmFyKC0tb2Zmc2V0KSArIHZhcigtLWxpZnQpICogLTEwMCUpKTtvcGFjaXR5OjB9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXJlbW92ZWQ9dHJ1ZV1bZGF0YS1mcm9udD1mYWxzZV1bZGF0YS1zd2lwZS1vdXQ9ZmFsc2VdW2RhdGEtZXhwYW5kZWQ9ZmFsc2Vdey0teTp0cmFuc2xhdGVZKDQwJSk7b3BhY2l0eTowO3RyYW5zaXRpb246dHJhbnNmb3JtIC41cyxvcGFjaXR5IC4yc31bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtcmVtb3ZlZD10cnVlXVtkYXRhLWZyb250PWZhbHNlXTo6YmVmb3Jle2hlaWdodDpjYWxjKHZhcigtLWluaXRpYWwtaGVpZ2h0KSArIDIwJSl9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBpbmc9dHJ1ZV17dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZVkodmFyKC0tc3dpcGUtYW1vdW50LXksMCkpIHRyYW5zbGF0ZVgodmFyKC0tc3dpcGUtYW1vdW50LXgsMCkpO3RyYW5zaXRpb246bm9uZX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGVkPXRydWVde3VzZXItc2VsZWN0Om5vbmV9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBlLW91dD10cnVlXVtkYXRhLXktcG9zaXRpb249Ym90dG9tXSxbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGUtb3V0PXRydWVdW2RhdGEteS1wb3NpdGlvbj10b3Bde2FuaW1hdGlvbi1kdXJhdGlvbjouMnM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dDthbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwZS1vdXQ9dHJ1ZV1bZGF0YS1zd2lwZS1kaXJlY3Rpb249bGVmdF17YW5pbWF0aW9uLW5hbWU6c3dpcGUtb3V0LWxlZnR9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBlLW91dD10cnVlXVtkYXRhLXN3aXBlLWRpcmVjdGlvbj1yaWdodF17YW5pbWF0aW9uLW5hbWU6c3dpcGUtb3V0LXJpZ2h0fVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwZS1vdXQ9dHJ1ZV1bZGF0YS1zd2lwZS1kaXJlY3Rpb249dXBde2FuaW1hdGlvbi1uYW1lOnN3aXBlLW91dC11cH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGUtb3V0PXRydWVdW2RhdGEtc3dpcGUtZGlyZWN0aW9uPWRvd25de2FuaW1hdGlvbi1uYW1lOnN3aXBlLW91dC1kb3dufUBrZXlmcmFtZXMgc3dpcGUtb3V0LWxlZnR7ZnJvbXt0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlWCh2YXIoLS1zd2lwZS1hbW91bnQteCkpO29wYWNpdHk6MX10b3t0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlWChjYWxjKHZhcigtLXN3aXBlLWFtb3VudC14KSAtIDEwMCUpKTtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgc3dpcGUtb3V0LXJpZ2h0e2Zyb217dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZVgodmFyKC0tc3dpcGUtYW1vdW50LXgpKTtvcGFjaXR5OjF9dG97dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZVgoY2FsYyh2YXIoLS1zd2lwZS1hbW91bnQteCkgKyAxMDAlKSk7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHN3aXBlLW91dC11cHtmcm9te3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKHZhcigtLXN3aXBlLWFtb3VudC15KSk7b3BhY2l0eToxfXRve3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKGNhbGModmFyKC0tc3dpcGUtYW1vdW50LXkpIC0gMTAwJSkpO29wYWNpdHk6MH19QGtleWZyYW1lcyBzd2lwZS1vdXQtZG93bntmcm9te3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKHZhcigtLXN3aXBlLWFtb3VudC15KSk7b3BhY2l0eToxfXRve3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKGNhbGModmFyKC0tc3dpcGUtYW1vdW50LXkpICsgMTAwJSkpO29wYWNpdHk6MH19QG1lZGlhIChtYXgtd2lkdGg6NjAwcHgpe1tkYXRhLXNvbm5lci10b2FzdGVyXXtwb3NpdGlvbjpmaXhlZDtyaWdodDp2YXIoLS1tb2JpbGUtb2Zmc2V0LXJpZ2h0KTtsZWZ0OnZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCk7d2lkdGg6MTAwJX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGlyPXJ0bF17bGVmdDpjYWxjKHZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCkgKiAtMSl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdIFtkYXRhLXNvbm5lci10b2FzdF17bGVmdDowO3JpZ2h0OjA7d2lkdGg6Y2FsYygxMDAlIC0gdmFyKC0tbW9iaWxlLW9mZnNldC1sZWZ0KSAqIDIpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249bGVmdF17bGVmdDp2YXIoLS1tb2JpbGUtb2Zmc2V0LWxlZnQpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXktcG9zaXRpb249Ym90dG9tXXtib3R0b206dmFyKC0tbW9iaWxlLW9mZnNldC1ib3R0b20pfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXktcG9zaXRpb249dG9wXXt0b3A6dmFyKC0tbW9iaWxlLW9mZnNldC10b3ApfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249Y2VudGVyXXtsZWZ0OnZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCk7cmlnaHQ6dmFyKC0tbW9iaWxlLW9mZnNldC1yaWdodCk7dHJhbnNmb3JtOm5vbmV9fVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXNvbm5lci10aGVtZT1saWdodF17LS1ub3JtYWwtYmc6I2ZmZjstLW5vcm1hbC1ib3JkZXI6dmFyKC0tZ3JheTQpOy0tbm9ybWFsLXRleHQ6dmFyKC0tZ3JheTEyKTstLXN1Y2Nlc3MtYmc6aHNsKDE0MywgODUlLCA5NiUpOy0tc3VjY2Vzcy1ib3JkZXI6aHNsKDE0NSwgOTIlLCA4NyUpOy0tc3VjY2Vzcy10ZXh0OmhzbCgxNDAsIDEwMCUsIDI3JSk7LS1pbmZvLWJnOmhzbCgyMDgsIDEwMCUsIDk3JSk7LS1pbmZvLWJvcmRlcjpoc2woMjIxLCA5MSUsIDkzJSk7LS1pbmZvLXRleHQ6aHNsKDIxMCwgOTIlLCA0NSUpOy0td2FybmluZy1iZzpoc2woNDksIDEwMCUsIDk3JSk7LS13YXJuaW5nLWJvcmRlcjpoc2woNDksIDkxJSwgODQlKTstLXdhcm5pbmctdGV4dDpoc2woMzEsIDkyJSwgNDUlKTstLWVycm9yLWJnOmhzbCgzNTksIDEwMCUsIDk3JSk7LS1lcnJvci1ib3JkZXI6aHNsKDM1OSwgMTAwJSwgOTQlKTstLWVycm9yLXRleHQ6aHNsKDM2MCwgMTAwJSwgNDUlKX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS1zb25uZXItdGhlbWU9bGlnaHRdIFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1pbnZlcnQ9dHJ1ZV17LS1ub3JtYWwtYmc6IzAwMDstLW5vcm1hbC1ib3JkZXI6aHNsKDAsIDAlLCAyMCUpOy0tbm9ybWFsLXRleHQ6dmFyKC0tZ3JheTEpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXNvbm5lci10aGVtZT1kYXJrXSBbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtaW52ZXJ0PXRydWVdey0tbm9ybWFsLWJnOiNmZmY7LS1ub3JtYWwtYm9yZGVyOnZhcigtLWdyYXkzKTstLW5vcm1hbC10ZXh0OnZhcigtLWdyYXkxMil9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtc29ubmVyLXRoZW1lPWRhcmtdey0tbm9ybWFsLWJnOiMwMDA7LS1ub3JtYWwtYmctaG92ZXI6aHNsKDAsIDAlLCAxMiUpOy0tbm9ybWFsLWJvcmRlcjpoc2woMCwgMCUsIDIwJSk7LS1ub3JtYWwtYm9yZGVyLWhvdmVyOmhzbCgwLCAwJSwgMjUlKTstLW5vcm1hbC10ZXh0OnZhcigtLWdyYXkxKTstLXN1Y2Nlc3MtYmc6aHNsKDE1MCwgMTAwJSwgNiUpOy0tc3VjY2Vzcy1ib3JkZXI6aHNsKDE0NywgMTAwJSwgMTIlKTstLXN1Y2Nlc3MtdGV4dDpoc2woMTUwLCA4NiUsIDY1JSk7LS1pbmZvLWJnOmhzbCgyMTUsIDEwMCUsIDYlKTstLWluZm8tYm9yZGVyOmhzbCgyMjMsIDQzJSwgMTclKTstLWluZm8tdGV4dDpoc2woMjE2LCA4NyUsIDY1JSk7LS13YXJuaW5nLWJnOmhzbCg2NCwgMTAwJSwgNiUpOy0td2FybmluZy1ib3JkZXI6aHNsKDYwLCAxMDAlLCA5JSk7LS13YXJuaW5nLXRleHQ6aHNsKDQ2LCA4NyUsIDY1JSk7LS1lcnJvci1iZzpoc2woMzU4LCA3NiUsIDEwJSk7LS1lcnJvci1ib3JkZXI6aHNsKDM1NywgODklLCAxNiUpOy0tZXJyb3ItdGV4dDpoc2woMzU4LCAxMDAlLCA4MSUpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXNvbm5lci10aGVtZT1kYXJrXSBbZGF0YS1zb25uZXItdG9hc3RdIFtkYXRhLWNsb3NlLWJ1dHRvbl17YmFja2dyb3VuZDp2YXIoLS1ub3JtYWwtYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1ub3JtYWwtYm9yZGVyKTtjb2xvcjp2YXIoLS1ub3JtYWwtdGV4dCl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtc29ubmVyLXRoZW1lPWRhcmtdIFtkYXRhLXNvbm5lci10b2FzdF0gW2RhdGEtY2xvc2UtYnV0dG9uXTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLW5vcm1hbC1iZy1ob3Zlcik7Ym9yZGVyLWNvbG9yOnZhcigtLW5vcm1hbC1ib3JkZXItaG92ZXIpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9c3VjY2Vzc117YmFja2dyb3VuZDp2YXIoLS1zdWNjZXNzLWJnKTtib3JkZXItY29sb3I6dmFyKC0tc3VjY2Vzcy1ib3JkZXIpO2NvbG9yOnZhcigtLXN1Y2Nlc3MtdGV4dCl9W2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdHlwZT1zdWNjZXNzXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0tc3VjY2Vzcy1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLXN1Y2Nlc3MtYm9yZGVyKTtjb2xvcjp2YXIoLS1zdWNjZXNzLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9aW5mb117YmFja2dyb3VuZDp2YXIoLS1pbmZvLWJnKTtib3JkZXItY29sb3I6dmFyKC0taW5mby1ib3JkZXIpO2NvbG9yOnZhcigtLWluZm8tdGV4dCl9W2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdHlwZT1pbmZvXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0taW5mby1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWluZm8tYm9yZGVyKTtjb2xvcjp2YXIoLS1pbmZvLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9d2FybmluZ117YmFja2dyb3VuZDp2YXIoLS13YXJuaW5nLWJnKTtib3JkZXItY29sb3I6dmFyKC0td2FybmluZy1ib3JkZXIpO2NvbG9yOnZhcigtLXdhcm5pbmctdGV4dCl9W2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdHlwZT13YXJuaW5nXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0td2FybmluZy1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLXdhcm5pbmctYm9yZGVyKTtjb2xvcjp2YXIoLS13YXJuaW5nLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9ZXJyb3Jde2JhY2tncm91bmQ6dmFyKC0tZXJyb3ItYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1lcnJvci1ib3JkZXIpO2NvbG9yOnZhcigtLWVycm9yLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9ZXJyb3JdIFtkYXRhLWNsb3NlLWJ1dHRvbl17YmFja2dyb3VuZDp2YXIoLS1lcnJvci1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWVycm9yLWJvcmRlcik7Y29sb3I6dmFyKC0tZXJyb3ItdGV4dCl9LnNvbm5lci1sb2FkaW5nLXdyYXBwZXJ7LS1zaXplOjE2cHg7aGVpZ2h0OnZhcigtLXNpemUpO3dpZHRoOnZhcigtLXNpemUpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ei1pbmRleDoxMH0uc29ubmVyLWxvYWRpbmctd3JhcHBlcltkYXRhLXZpc2libGU9ZmFsc2Vde3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO2FuaW1hdGlvbjpzb25uZXItZmFkZS1vdXQgLjJzIGVhc2UgZm9yd2FyZHN9LnNvbm5lci1zcGlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDo1MCU7bGVmdDo1MCU7aGVpZ2h0OnZhcigtLXNpemUpO3dpZHRoOnZhcigtLXNpemUpfS5zb25uZXItbG9hZGluZy1iYXJ7YW5pbWF0aW9uOnNvbm5lci1zcGluIDEuMnMgbGluZWFyIGluZmluaXRlO2JhY2tncm91bmQ6dmFyKC0tZ3JheTExKTtib3JkZXItcmFkaXVzOjZweDtoZWlnaHQ6OCU7bGVmdDotMTAlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMy45JTt3aWR0aDoyNCV9LnNvbm5lci1sb2FkaW5nLWJhcjpmaXJzdC1jaGlsZHthbmltYXRpb24tZGVsYXk6LTEuMnM7dHJhbnNmb3JtOnJvdGF0ZSguMDAwMWRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDIpe2FuaW1hdGlvbi1kZWxheTotMS4xczt0cmFuc2Zvcm06cm90YXRlKDMwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi0xczt0cmFuc2Zvcm06cm90YXRlKDYwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoNCl7YW5pbWF0aW9uLWRlbGF5Oi0uOXM7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDUpe2FuaW1hdGlvbi1kZWxheTotLjhzO3RyYW5zZm9ybTpyb3RhdGUoMTIwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi0uN3M7dHJhbnNmb3JtOnJvdGF0ZSgxNTBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCg3KXthbmltYXRpb24tZGVsYXk6LS42czt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDgpe2FuaW1hdGlvbi1kZWxheTotLjVzO3RyYW5zZm9ybTpyb3RhdGUoMjEwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoOSl7YW5pbWF0aW9uLWRlbGF5Oi0uNHM7dHJhbnNmb3JtOnJvdGF0ZSgyNDBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxMCl7YW5pbWF0aW9uLWRlbGF5Oi0uM3M7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxMSl7YW5pbWF0aW9uLWRlbGF5Oi0uMnM7dHJhbnNmb3JtOnJvdGF0ZSgzMDBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxMil7YW5pbWF0aW9uLWRlbGF5Oi0uMXM7dHJhbnNmb3JtOnJvdGF0ZSgzMzBkZWcpIHRyYW5zbGF0ZSgxNDYlKX1Aa2V5ZnJhbWVzIHNvbm5lci1mYWRlLWluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZSgxKX19QGtleWZyYW1lcyBzb25uZXItZmFkZS1vdXR7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZSgxKX0xMDAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpfX1Aa2V5ZnJhbWVzIHNvbm5lci1zcGluezAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6LjE1fX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pey5zb25uZXItbG9hZGluZy1iYXIsW2RhdGEtc29ubmVyLXRvYXN0XSxbZGF0YS1zb25uZXItdG9hc3RdPip7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudDthbmltYXRpb246bm9uZSFpbXBvcnRhbnR9fS5zb25uZXItbG9hZGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246b3BhY2l0eSAuMnMsdHJhbnNmb3JtIC4yc30uc29ubmVyLWxvYWRlcltkYXRhLXZpc2libGU9ZmFsc2Vde29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpIHRyYW5zbGF0ZSgtNTAlLC01MCUpfSIpO2Z1bmN0aW9uIG01KCQpe3JldHVybiAkLmxhYmVsIT09dm9pZCAwfXZhciB3Sj0zLFRKPSIyNHB4IixJSj0iMTZweCIsRTY9NDAwMCxFSj0zNTYseUo9MTQsYko9NDUsU0o9MjAwO2Z1bmN0aW9uIGIwKC4uLiQpe3JldHVybiAkLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIil9ZnVuY3Rpb24geEooJCl7bGV0W0osUV09JC5zcGxpdCgiLSIpLFo9W107aWYoSilaLnB1c2goSik7aWYoUSlaLnB1c2goUSk7cmV0dXJuIFp9dmFyIGpKPSgkKT0+e3ZhciBKLFEsWixLLFkscSxHLE4sQjtsZXR7aW52ZXJ0OkwsdG9hc3Q6Vix1bnN0eWxlZDpVLGludGVyYWN0aW5nOnosc2V0SGVpZ2h0czprLHZpc2libGVUb2FzdHM6SCxoZWlnaHRzOkMsaW5kZXg6Rix0b2FzdHM6TyxleHBhbmRlZDpJLHJlbW92ZVRvYXN0OncsZGVmYXVsdFJpY2hDb2xvcnM6UyxjbG9zZUJ1dHRvbjpqLHN0eWxlOiQxLGNhbmNlbEJ1dHRvblN0eWxlOm0sYWN0aW9uQnV0dG9uU3R5bGU6YyxjbGFzc05hbWU6bj0iIixkZXNjcmlwdGlvbkNsYXNzTmFtZTpvPSIiLGR1cmF0aW9uOnIscG9zaXRpb246UTEsZ2FwOk4xLGV4cGFuZEJ5RGVmYXVsdDpkLGNsYXNzTmFtZXM6eCxpY29uczphLGNsb3NlQnV0dG9uQXJpYUxhYmVsOksxPSJDbG9zZSB0b2FzdCJ9PSQsW0wxLEoxXT1mLnVzZVN0YXRlKG51bGwpLFtZMSxDMV09Zi51c2VTdGF0ZShudWxsKSxbeSxnXT1mLnVzZVN0YXRlKCExKSxbXyxwXT1mLnVzZVN0YXRlKCExKSxbdSx2XT1mLnVzZVN0YXRlKCExKSxbRzEsejFdPWYudXNlU3RhdGUoITEpLFtBMSxXMV09Zi51c2VTdGF0ZSghMSksW2kxLE8xXT1mLnVzZVN0YXRlKDApLFtqMSxfMV09Zi51c2VTdGF0ZSgwKSxsMT1mLnVzZVJlZihWLmR1cmF0aW9ufHxyfHxFNiksVTE9Zi51c2VSZWYobnVsbCksSTE9Zi51c2VSZWYobnVsbCksZDE9Rj09PTAsdDE9RisxPD1ILGgxPVYudHlwZSxhMT1WLmRpc21pc3NpYmxlIT09ITEsJDA9Vi5jbGFzc05hbWV8fCIiLFYwPVYuZGVzY3JpcHRpb25DbGFzc05hbWV8fCIiLHMxPWYudXNlTWVtbygoKT0+Qy5maW5kSW5kZXgoKFgxKT0+WDEudG9hc3RJZD09PVYuaWQpfHwwLFtDLFYuaWRdKSx2MD1mLnVzZU1lbW8oKCk9Pnt2YXIgWDE7cmV0dXJuKFgxPVYuY2xvc2VCdXR0b24pIT1udWxsP1gxOmp9LFtWLmNsb3NlQnV0dG9uLGpdKSxtMT1mLnVzZU1lbW8oKCk9PlYuZHVyYXRpb258fHJ8fEU2LFtWLmR1cmF0aW9uLHJdKSxxMD1mLnVzZVJlZigwKSxKMD1mLnVzZVJlZigwKSxfMD1mLnVzZVJlZigwKSxjMT1mLnVzZVJlZihudWxsKSxbbjEsUDBdPVExLnNwbGl0KCItIiksdjE9Zi51c2VNZW1vKCgpPT57cmV0dXJuIEMucmVkdWNlKChYMSxQLGwpPT57aWYobD49czEpcmV0dXJuIFgxO3JldHVybiBYMStQLmhlaWdodH0sMCl9LFtDLHMxXSksQzA9T0ooKSxCMD1WLmludmVydHx8TCxEMT1oMT09PSJsb2FkaW5nIjtKMC5jdXJyZW50PWYudXNlTWVtbygoKT0+czEqTjErdjEsW3MxLHYxXSksZi51c2VFZmZlY3QoKCk9PntsMS5jdXJyZW50PW0xfSxbbTFdKSxmLnVzZUVmZmVjdCgoKT0+e2coITApfSxbXSksZi51c2VFZmZlY3QoKCk9PntsZXQgWDE9STEuY3VycmVudDtpZihYMSl7bGV0IFA9WDEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O3JldHVybiBfMShQKSxrKChsKT0+W3t0b2FzdElkOlYuaWQsaGVpZ2h0OlAscG9zaXRpb246Vi5wb3NpdGlvbn0sLi4ubF0pLCgpPT5rKChsKT0+bC5maWx0ZXIoKGkpPT5pLnRvYXN0SWQhPT1WLmlkKSl9fSxbayxWLmlkXSksZi51c2VMYXlvdXRFZmZlY3QoKCk9PntpZigheSlyZXR1cm47bGV0IFgxPUkxLmN1cnJlbnQsUD1YMS5zdHlsZS5oZWlnaHQ7WDEuc3R5bGUuaGVpZ2h0PSJhdXRvIjtsZXQgbD1YMS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7WDEuc3R5bGUuaGVpZ2h0PVAsXzEobCksaygoaSk9PntpZighaS5maW5kKChWMSk9PlYxLnRvYXN0SWQ9PT1WLmlkKSlyZXR1cm5be3RvYXN0SWQ6Vi5pZCxoZWlnaHQ6bCxwb3NpdGlvbjpWLnBvc2l0aW9ufSwuLi5pXTtlbHNlIHJldHVybiBpLm1hcCgoVjEpPT5WMS50b2FzdElkPT09Vi5pZD97Li4uVjEsaGVpZ2h0Omx9OlYxKX0pfSxbeSxWLnRpdGxlLFYuZGVzY3JpcHRpb24sayxWLmlkLFYuanN4LFYuYWN0aW9uLFYuY2FuY2VsXSk7bGV0IHkxPWYudXNlQ2FsbGJhY2soKCk9PntwKCEwKSxPMShKMC5jdXJyZW50KSxrKChYMSk9PlgxLmZpbHRlcigoUCk9PlAudG9hc3RJZCE9PVYuaWQpKSxzZXRUaW1lb3V0KCgpPT57dyhWKX0sU0opfSxbVix3LGssSjBdKTtmLnVzZUVmZmVjdCgoKT0+e2lmKFYucHJvbWlzZSYmaDE9PT0ibG9hZGluZyJ8fFYuZHVyYXRpb249PT0xLzB8fFYudHlwZT09PSJsb2FkaW5nIilyZXR1cm47bGV0IFgxLFA9KCk9PntpZihfMC5jdXJyZW50PHEwLmN1cnJlbnQpe2xldCBpPW5ldyBEYXRlKCkuZ2V0VGltZSgpLXEwLmN1cnJlbnQ7bDEuY3VycmVudD1sMS5jdXJyZW50LWl9XzAuY3VycmVudD1uZXcgRGF0ZSgpLmdldFRpbWUoKX0sbD0oKT0+e2lmKGwxLmN1cnJlbnQ9PT0xLzApcmV0dXJuO3EwLmN1cnJlbnQ9bmV3IERhdGUoKS5nZXRUaW1lKCksWDE9c2V0VGltZW91dCgoKT0+e1Yub25BdXRvQ2xvc2U9PW51bGx8fFYub25BdXRvQ2xvc2UuY2FsbChWLFYpLHkxKCl9LGwxLmN1cnJlbnQpfTtpZihJfHx6fHxDMClQKCk7ZWxzZSBsKCk7cmV0dXJuKCk9PmNsZWFyVGltZW91dChYMSl9LFtJLHosVixoMSxDMCx5MV0pLGYudXNlRWZmZWN0KCgpPT57aWYoVi5kZWxldGUpeTEoKSxWLm9uRGlzbWlzcz09bnVsbHx8Vi5vbkRpc21pc3MuY2FsbChWLFYpfSxbeTEsVi5kZWxldGVdKTtmdW5jdGlvbiBRMCgpe3ZhciBYMTtpZihhPT1udWxsP3ZvaWQgMDphLmxvYWRpbmcpe3ZhciBQO3JldHVybiBmLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpiMCh4PT1udWxsP3ZvaWQgMDp4LmxvYWRlcixWPT1udWxsP3ZvaWQgMDooUD1WLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpQLmxvYWRlciwic29ubmVyLWxvYWRlciIpLCJkYXRhLXZpc2libGUiOmgxPT09ImxvYWRpbmcifSxhLmxvYWRpbmcpfXJldHVybiBmLmNyZWF0ZUVsZW1lbnQoVUose2NsYXNzTmFtZTpiMCh4PT1udWxsP3ZvaWQgMDp4LmxvYWRlcixWPT1udWxsP3ZvaWQgMDooWDE9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6WDEubG9hZGVyKSx2aXNpYmxlOmgxPT09ImxvYWRpbmcifSl9bGV0IEYwPVYuaWNvbnx8KGE9PW51bGw/dm9pZCAwOmFbaDFdKXx8TEooaDEpO3ZhciBOMCxrMDtyZXR1cm4gZi5jcmVhdGVFbGVtZW50KCJsaSIse3RhYkluZGV4OjAscmVmOkkxLGNsYXNzTmFtZTpiMChuLCQwLHg9PW51bGw/dm9pZCAwOngudG9hc3QsVj09bnVsbD92b2lkIDA6KEo9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6Si50b2FzdCx4PT1udWxsP3ZvaWQgMDp4LmRlZmF1bHQseD09bnVsbD92b2lkIDA6eFtoMV0sVj09bnVsbD92b2lkIDA6KFE9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6UVtoMV0pLCJkYXRhLXNvbm5lci10b2FzdCI6IiIsImRhdGEtcmljaC1jb2xvcnMiOihOMD1WLnJpY2hDb2xvcnMpIT1udWxsP04wOlMsImRhdGEtc3R5bGVkIjohQm9vbGVhbihWLmpzeHx8Vi51bnN0eWxlZHx8VSksImRhdGEtbW91bnRlZCI6eSwiZGF0YS1wcm9taXNlIjpCb29sZWFuKFYucHJvbWlzZSksImRhdGEtc3dpcGVkIjpBMSwiZGF0YS1yZW1vdmVkIjpfLCJkYXRhLXZpc2libGUiOnQxLCJkYXRhLXktcG9zaXRpb24iOm4xLCJkYXRhLXgtcG9zaXRpb24iOlAwLCJkYXRhLWluZGV4IjpGLCJkYXRhLWZyb250IjpkMSwiZGF0YS1zd2lwaW5nIjp1LCJkYXRhLWRpc21pc3NpYmxlIjphMSwiZGF0YS10eXBlIjpoMSwiZGF0YS1pbnZlcnQiOkIwLCJkYXRhLXN3aXBlLW91dCI6RzEsImRhdGEtc3dpcGUtZGlyZWN0aW9uIjpZMSwiZGF0YS1leHBhbmRlZCI6Qm9vbGVhbihJfHxkJiZ5KSwiZGF0YS10ZXN0aWQiOlYudGVzdElkLHN0eWxlOnsiLS1pbmRleCI6RiwiLS10b2FzdHMtYmVmb3JlIjpGLCItLXotaW5kZXgiOk8ubGVuZ3RoLUYsIi0tb2Zmc2V0IjpgJHtfP2kxOkowLmN1cnJlbnR9cHhgLCItLWluaXRpYWwtaGVpZ2h0IjpkPyJhdXRvIjpgJHtqMX1weGAsLi4uJDEsLi4uVi5zdHlsZX0sb25EcmFnRW5kOigpPT57dighMSksSjEobnVsbCksYzEuY3VycmVudD1udWxsfSxvblBvaW50ZXJEb3duOihYMSk9PntpZihYMS5idXR0b249PT0yKXJldHVybjtpZihEMXx8IWExKXJldHVybjtpZihVMS5jdXJyZW50PW5ldyBEYXRlLE8xKEowLmN1cnJlbnQpLFgxLnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShYMS5wb2ludGVySWQpLFgxLnRhcmdldC50YWdOYW1lPT09IkJVVFRPTiIpcmV0dXJuO3YoITApLGMxLmN1cnJlbnQ9e3g6WDEuY2xpZW50WCx5OlgxLmNsaWVudFl9fSxvblBvaW50ZXJVcDooKT0+e3ZhciBYMSxQLGw7aWYoRzF8fCFhMSlyZXR1cm47YzEuY3VycmVudD1udWxsO2xldCBpPU51bWJlcigoKFgxPUkxLmN1cnJlbnQpPT1udWxsP3ZvaWQgMDpYMS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLXN3aXBlLWFtb3VudC14IikucmVwbGFjZSgicHgiLCIiKSl8fDApLGsxPU51bWJlcigoKFA9STEuY3VycmVudCk9PW51bGw/dm9pZCAwOlAuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1zd2lwZS1hbW91bnQteSIpLnJlcGxhY2UoInB4IiwiIikpfHwwKSxWMT1uZXcgRGF0ZSgpLmdldFRpbWUoKS0oKGw9VTEuY3VycmVudCk9PW51bGw/dm9pZCAwOmwuZ2V0VGltZSgpKSxCMT1MMT09PSJ4Ij9pOmsxLGcxPU1hdGguYWJzKEIxKS9WMTtpZihNYXRoLmFicyhCMSk+PWJKfHxnMT4wLjExKXtpZihPMShKMC5jdXJyZW50KSxWLm9uRGlzbWlzcz09bnVsbHx8Vi5vbkRpc21pc3MuY2FsbChWLFYpLEwxPT09IngiKUMxKGk+MD8icmlnaHQiOiJsZWZ0Iik7ZWxzZSBDMShrMT4wPyJkb3duIjoidXAiKTt5MSgpLHoxKCEwKTtyZXR1cm59ZWxzZXt2YXIgcDEseDE7KHAxPUkxLmN1cnJlbnQpPT1udWxsfHxwMS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1zd2lwZS1hbW91bnQteCIsIjBweCIpLCh4MT1JMS5jdXJyZW50KT09bnVsbHx8eDEuc3R5bGUuc2V0UHJvcGVydHkoIi0tc3dpcGUtYW1vdW50LXkiLCIwcHgiKX1XMSghMSksdighMSksSjEobnVsbCl9LG9uUG9pbnRlck1vdmU6KFgxKT0+e3ZhciBQLGwsaTtpZighYzEuY3VycmVudHx8IWExKXJldHVybjtpZigoKFA9d2luZG93LmdldFNlbGVjdGlvbigpKT09bnVsbD92b2lkIDA6UC50b1N0cmluZygpLmxlbmd0aCk+MClyZXR1cm47bGV0IFYxPVgxLmNsaWVudFktYzEuY3VycmVudC55LEIxPVgxLmNsaWVudFgtYzEuY3VycmVudC54O3ZhciBnMTtsZXQgcDE9KGcxPSQuc3dpcGVEaXJlY3Rpb25zKSE9bnVsbD9nMTp4SihRMSk7aWYoIUwxJiYoTWF0aC5hYnMoQjEpPjF8fE1hdGguYWJzKFYxKT4xKSlKMShNYXRoLmFicyhCMSk+TWF0aC5hYnMoVjEpPyJ4IjoieSIpO2xldCB4MT17eDowLHk6MH0sTTA9KFowKT0+e3JldHVybiAxLygxLjUrTWF0aC5hYnMoWjApLzIwKX07aWYoTDE9PT0ieSIpe2lmKHAxLmluY2x1ZGVzKCJ0b3AiKXx8cDEuaW5jbHVkZXMoImJvdHRvbSIpKWlmKHAxLmluY2x1ZGVzKCJ0b3AiKSYmVjE8MHx8cDEuaW5jbHVkZXMoImJvdHRvbSIpJiZWMT4wKXgxLnk9VjE7ZWxzZXtsZXQgWjA9VjEqTTAoVjEpO3gxLnk9TWF0aC5hYnMoWjApPE1hdGguYWJzKFYxKT9aMDpWMX19ZWxzZSBpZihMMT09PSJ4Iil7aWYocDEuaW5jbHVkZXMoImxlZnQiKXx8cDEuaW5jbHVkZXMoInJpZ2h0IikpaWYocDEuaW5jbHVkZXMoImxlZnQiKSYmQjE8MHx8cDEuaW5jbHVkZXMoInJpZ2h0IikmJkIxPjApeDEueD1CMTtlbHNle2xldCBaMD1CMSpNMChCMSk7eDEueD1NYXRoLmFicyhaMCk8TWF0aC5hYnMoQjEpP1owOkIxfX1pZihNYXRoLmFicyh4MS54KT4wfHxNYXRoLmFicyh4MS55KT4wKVcxKCEwKTsobD1JMS5jdXJyZW50KT09bnVsbHx8bC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1zd2lwZS1hbW91bnQteCIsYCR7eDEueH1weGApLChpPUkxLmN1cnJlbnQpPT1udWxsfHxpLnN0eWxlLnNldFByb3BlcnR5KCItLXN3aXBlLWFtb3VudC15IixgJHt4MS55fXB4YCl9fSx2MCYmIVYuanN4JiZoMSE9PSJsb2FkaW5nIj9mLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIseyJhcmlhLWxhYmVsIjpLMSwiZGF0YS1kaXNhYmxlZCI6RDEsImRhdGEtY2xvc2UtYnV0dG9uIjohMCxvbkNsaWNrOkQxfHwhYTE/KCk9Pnt9OigpPT57eTEoKSxWLm9uRGlzbWlzcz09bnVsbHx8Vi5vbkRpc21pc3MuY2FsbChWLFYpfSxjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC5jbG9zZUJ1dHRvbixWPT1udWxsP3ZvaWQgMDooWj1WLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpaLmNsb3NlQnV0dG9uKX0sKGswPWE9PW51bGw/dm9pZCAwOmEuY2xvc2UpIT1udWxsP2swOk1KKTpudWxsLChoMXx8Vi5pY29ufHxWLnByb21pc2UpJiZWLmljb24hPT1udWxsJiYoKGE9PW51bGw/dm9pZCAwOmFbaDFdKSE9PW51bGx8fFYuaWNvbik/Zi5jcmVhdGVFbGVtZW50KCJkaXYiLHsiZGF0YS1pY29uIjoiIixjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC5pY29uLFY9PW51bGw/dm9pZCAwOihLPVYuY2xhc3NOYW1lcyk9PW51bGw/dm9pZCAwOksuaWNvbil9LFYucHJvbWlzZXx8Vi50eXBlPT09ImxvYWRpbmciJiYhVi5pY29uP1YuaWNvbnx8UTAoKTpudWxsLFYudHlwZSE9PSJsb2FkaW5nIj9GMDpudWxsKTpudWxsLGYuY3JlYXRlRWxlbWVudCgiZGl2Iix7ImRhdGEtY29udGVudCI6IiIsY2xhc3NOYW1lOmIwKHg9PW51bGw/dm9pZCAwOnguY29udGVudCxWPT1udWxsP3ZvaWQgMDooWT1WLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpZLmNvbnRlbnQpfSxmLmNyZWF0ZUVsZW1lbnQoImRpdiIseyJkYXRhLXRpdGxlIjoiIixjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC50aXRsZSxWPT1udWxsP3ZvaWQgMDoocT1WLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpxLnRpdGxlKX0sVi5qc3g/Vi5qc3g6dHlwZW9mIFYudGl0bGU9PT0iZnVuY3Rpb24iP1YudGl0bGUoKTpWLnRpdGxlKSxWLmRlc2NyaXB0aW9uP2YuY3JlYXRlRWxlbWVudCgiZGl2Iix7ImRhdGEtZGVzY3JpcHRpb24iOiIiLGNsYXNzTmFtZTpiMChvLFYwLHg9PW51bGw/dm9pZCAwOnguZGVzY3JpcHRpb24sVj09bnVsbD92b2lkIDA6KEc9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6Ry5kZXNjcmlwdGlvbil9LHR5cGVvZiBWLmRlc2NyaXB0aW9uPT09ImZ1bmN0aW9uIj9WLmRlc2NyaXB0aW9uKCk6Vi5kZXNjcmlwdGlvbik6bnVsbCksZi5pc1ZhbGlkRWxlbWVudChWLmNhbmNlbCk/Vi5jYW5jZWw6Vi5jYW5jZWwmJm01KFYuY2FuY2VsKT9mLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIseyJkYXRhLWJ1dHRvbiI6ITAsImRhdGEtY2FuY2VsIjohMCxzdHlsZTpWLmNhbmNlbEJ1dHRvblN0eWxlfHxtLG9uQ2xpY2s6KFgxKT0+e2lmKCFtNShWLmNhbmNlbCkpcmV0dXJuO2lmKCFhMSlyZXR1cm47Vi5jYW5jZWwub25DbGljaz09bnVsbHx8Vi5jYW5jZWwub25DbGljay5jYWxsKFYuY2FuY2VsLFgxKSx5MSgpfSxjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC5jYW5jZWxCdXR0b24sVj09bnVsbD92b2lkIDA6KE49Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6Ti5jYW5jZWxCdXR0b24pfSxWLmNhbmNlbC5sYWJlbCk6bnVsbCxmLmlzVmFsaWRFbGVtZW50KFYuYWN0aW9uKT9WLmFjdGlvbjpWLmFjdGlvbiYmbTUoVi5hY3Rpb24pP2YuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7ImRhdGEtYnV0dG9uIjohMCwiZGF0YS1hY3Rpb24iOiEwLHN0eWxlOlYuYWN0aW9uQnV0dG9uU3R5bGV8fGMsb25DbGljazooWDEpPT57aWYoIW01KFYuYWN0aW9uKSlyZXR1cm47aWYoVi5hY3Rpb24ub25DbGljaz09bnVsbHx8Vi5hY3Rpb24ub25DbGljay5jYWxsKFYuYWN0aW9uLFgxKSxYMS5kZWZhdWx0UHJldmVudGVkKXJldHVybjt5MSgpfSxjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC5hY3Rpb25CdXR0b24sVj09bnVsbD92b2lkIDA6KEI9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6Qi5hY3Rpb25CdXR0b24pfSxWLmFjdGlvbi5sYWJlbCk6bnVsbCl9O2Z1bmN0aW9uIHk2KCl7aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuImx0ciI7aWYodHlwZW9mIGRvY3VtZW50PiJ1IilyZXR1cm4ibHRyIjtsZXQgJD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKTtpZigkPT09ImF1dG8ifHwhJClyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5kaXJlY3Rpb247cmV0dXJuICR9ZnVuY3Rpb24gdkooJCxKKXtsZXQgUT17fTtyZXR1cm5bJCxKXS5mb3JFYWNoKChaLEspPT57bGV0IFk9Sz09PTEscT1ZPyItLW1vYmlsZS1vZmZzZXQiOiItLW9mZnNldCIsRz1ZP0lKOlRKO2Z1bmN0aW9uIE4oQil7WyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5mb3JFYWNoKChMKT0+e1FbYCR7cX0tJHtMfWBdPXR5cGVvZiBCPT09Im51bWJlciI/YCR7Qn1weGA6Qn0pfWlmKHR5cGVvZiBaPT09Im51bWJlciJ8fHR5cGVvZiBaPT09InN0cmluZyIpTihaKTtlbHNlIGlmKHR5cGVvZiBaPT09Im9iamVjdCIpWyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5mb3JFYWNoKChCKT0+e2lmKFpbQl09PT12b2lkIDApUVtgJHtxfS0ke0J9YF09RztlbHNlIFFbYCR7cX0tJHtCfWBdPXR5cGVvZiBaW0JdPT09Im51bWJlciI/YCR7WltCXX1weGA6WltCXX0pO2Vsc2UgTihHKX0pLFF9dmFyIFM2PWYuZm9yd2FyZFJlZihmdW5jdGlvbihKLFEpe2xldHtpZDpaLGludmVydDpLLHBvc2l0aW9uOlk9ImJvdHRvbS1yaWdodCIsaG90a2V5OnE9WyJhbHRLZXkiLCJLZXlUIl0sZXhwYW5kOkcsY2xvc2VCdXR0b246TixjbGFzc05hbWU6QixvZmZzZXQ6TCxtb2JpbGVPZmZzZXQ6Vix0aGVtZTpVPSJsaWdodCIscmljaENvbG9yczp6LGR1cmF0aW9uOmssc3R5bGU6SCx2aXNpYmxlVG9hc3RzOkM9d0osdG9hc3RPcHRpb25zOkYsZGlyOk89eTYoKSxnYXA6ST15SixpY29uczp3LGNvbnRhaW5lckFyaWFMYWJlbDpTPSJOb3RpZmljYXRpb25zIn09SixbaiwkMV09Zi51c2VTdGF0ZShbXSksbT1mLnVzZU1lbW8oKCk9PntpZihaKXJldHVybiBqLmZpbHRlcigoeSk9PnkudG9hc3RlcklkPT09Wik7cmV0dXJuIGouZmlsdGVyKCh5KT0+IXkudG9hc3RlcklkKX0sW2osWl0pLGM9Zi51c2VNZW1vKCgpPT57cmV0dXJuIEFycmF5LmZyb20obmV3IFNldChbWV0uY29uY2F0KG0uZmlsdGVyKCh5KT0+eS5wb3NpdGlvbikubWFwKCh5KT0+eS5wb3NpdGlvbikpKSl9LFttLFldKSxbbixvXT1mLnVzZVN0YXRlKFtdKSxbcixRMV09Zi51c2VTdGF0ZSghMSksW04xLGRdPWYudXNlU3RhdGUoITEpLFt4LGFdPWYudXNlU3RhdGUoVSE9PSJzeXN0ZW0iP1U6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcz8iZGFyayI6ImxpZ2h0IjoibGlnaHQiKSxLMT1mLnVzZVJlZihudWxsKSxMMT1xLmpvaW4oIisiKS5yZXBsYWNlKC9LZXkvZywiIikucmVwbGFjZSgvRGlnaXQvZywiIiksSjE9Zi51c2VSZWYobnVsbCksWTE9Zi51c2VSZWYoITEpLEMxPWYudXNlQ2FsbGJhY2soKHkpPT57JDEoKGcpPT57dmFyIF87aWYoISgoXz1nLmZpbmQoKHApPT5wLmlkPT09eS5pZCkpPT1udWxsP3ZvaWQgMDpfLmRlbGV0ZSkpSzAuZGlzbWlzcyh5LmlkKTtyZXR1cm4gZy5maWx0ZXIoKHtpZDpwfSk9PnAhPT15LmlkKX0pfSxbXSk7cmV0dXJuIGYudXNlRWZmZWN0KCgpPT57cmV0dXJuIEswLnN1YnNjcmliZSgoeSk9PntpZih5LmRpc21pc3Mpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+eyQxKChnKT0+Zy5tYXAoKF8pPT5fLmlkPT09eS5pZD97Li4uXyxkZWxldGU6ITB9Ol8pKX0pO3JldHVybn1zZXRUaW1lb3V0KCgpPT57Zi5mbHVzaFN5bmMoKCk9PnskMSgoZyk9PntsZXQgXz1nLmZpbmRJbmRleCgocCk9PnAuaWQ9PT15LmlkKTtpZihfIT09LTEpcmV0dXJuWy4uLmcuc2xpY2UoMCxfKSx7Li4uZ1tfXSwuLi55fSwuLi5nLnNsaWNlKF8rMSldO3JldHVyblt5LC4uLmddfSl9KX0pfSl9LFtqXSksZi51c2VFZmZlY3QoKCk9PntpZihVIT09InN5c3RlbSIpe2EoVSk7cmV0dXJufWlmKFU9PT0ic3lzdGVtIilpZih3aW5kb3cubWF0Y2hNZWRpYSYmd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKS5tYXRjaGVzKWEoImRhcmsiKTtlbHNlIGEoImxpZ2h0Iik7aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuO2xldCB5PXdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIik7dHJ5e3kuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoe21hdGNoZXM6Z30pPT57aWYoZylhKCJkYXJrIik7ZWxzZSBhKCJsaWdodCIpfSl9Y2F0Y2goZyl7eS5hZGRMaXN0ZW5lcigoe21hdGNoZXM6X30pPT57dHJ5e2lmKF8pYSgiZGFyayIpO2Vsc2UgYSgibGlnaHQiKX1jYXRjaChwKXtjb25zb2xlLmVycm9yKHApfX0pfX0sW1VdKSxmLnVzZUVmZmVjdCgoKT0+e2lmKGoubGVuZ3RoPD0xKVExKCExKX0sW2pdKSxmLnVzZUVmZmVjdCgoKT0+e2xldCB5PShnKT0+e3ZhciBfO2lmKHEuZXZlcnkoKHYpPT5nW3ZdfHxnLmNvZGU9PT12KSl7dmFyIHU7UTEoITApLCh1PUsxLmN1cnJlbnQpPT1udWxsfHx1LmZvY3VzKCl9aWYoZy5jb2RlPT09IkVzY2FwZSImJihkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09SzEuY3VycmVudHx8KChfPUsxLmN1cnJlbnQpPT1udWxsP3ZvaWQgMDpfLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSkpUTEoITEpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIseSksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHkpfSxbcV0pLGYudXNlRWZmZWN0KCgpPT57aWYoSzEuY3VycmVudClyZXR1cm4oKT0+e2lmKEoxLmN1cnJlbnQpSjEuY3VycmVudC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLEoxLmN1cnJlbnQ9bnVsbCxZMS5jdXJyZW50PSExfX0sW0sxLmN1cnJlbnRdKSxmLmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iLHtyZWY6USwiYXJpYS1sYWJlbCI6YCR7U30gJHtMMX1gLHRhYkluZGV4Oi0xLCJhcmlhLWxpdmUiOiJwb2xpdGUiLCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIHRleHQiLCJhcmlhLWF0b21pYyI6ImZhbHNlIixzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6ITB9LGMubWFwKCh5LGcpPT57dmFyIF87bGV0W3AsdV09eS5zcGxpdCgiLSIpO2lmKCFtLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gZi5jcmVhdGVFbGVtZW50KCJvbCIse2tleTp5LGRpcjpPPT09ImF1dG8iP3k2KCk6Tyx0YWJJbmRleDotMSxyZWY6SzEsY2xhc3NOYW1lOkIsImRhdGEtc29ubmVyLXRvYXN0ZXIiOiEwLCJkYXRhLXNvbm5lci10aGVtZSI6eCwiZGF0YS15LXBvc2l0aW9uIjpwLCJkYXRhLXgtcG9zaXRpb24iOnUsc3R5bGU6eyItLWZyb250LXRvYXN0LWhlaWdodCI6YCR7KChfPW5bMF0pPT1udWxsP3ZvaWQgMDpfLmhlaWdodCl8fDB9cHhgLCItLXdpZHRoIjpgJHtFSn1weGAsIi0tZ2FwIjpgJHtJfXB4YCwuLi5ILC4uLnZKKEwsVil9LG9uQmx1cjoodik9PntpZihZMS5jdXJyZW50JiYhdi5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKHYucmVsYXRlZFRhcmdldCkpe2lmKFkxLmN1cnJlbnQ9ITEsSjEuY3VycmVudClKMS5jdXJyZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksSjEuY3VycmVudD1udWxsfX0sb25Gb2N1czoodik9PntpZih2LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZ2LnRhcmdldC5kYXRhc2V0LmRpc21pc3NpYmxlPT09ImZhbHNlIilyZXR1cm47aWYoIVkxLmN1cnJlbnQpWTEuY3VycmVudD0hMCxKMS5jdXJyZW50PXYucmVsYXRlZFRhcmdldH0sb25Nb3VzZUVudGVyOigpPT5RMSghMCksb25Nb3VzZU1vdmU6KCk9PlExKCEwKSxvbk1vdXNlTGVhdmU6KCk9PntpZighTjEpUTEoITEpfSxvbkRyYWdFbmQ6KCk9PlExKCExKSxvblBvaW50ZXJEb3duOih2KT0+e2lmKHYudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJnYudGFyZ2V0LmRhdGFzZXQuZGlzbWlzc2libGU9PT0iZmFsc2UiKXJldHVybjtkKCEwKX0sb25Qb2ludGVyVXA6KCk9PmQoITEpfSxtLmZpbHRlcigodik9PiF2LnBvc2l0aW9uJiZnPT09MHx8di5wb3NpdGlvbj09PXkpLm1hcCgodixHMSk9Pnt2YXIgejEsQTE7cmV0dXJuIGYuY3JlYXRlRWxlbWVudChqSix7a2V5OnYuaWQsaWNvbnM6dyxpbmRleDpHMSx0b2FzdDp2LGRlZmF1bHRSaWNoQ29sb3JzOnosZHVyYXRpb246KHoxPUY9PW51bGw/dm9pZCAwOkYuZHVyYXRpb24pIT1udWxsP3oxOmssY2xhc3NOYW1lOkY9PW51bGw/dm9pZCAwOkYuY2xhc3NOYW1lLGRlc2NyaXB0aW9uQ2xhc3NOYW1lOkY9PW51bGw/dm9pZCAwOkYuZGVzY3JpcHRpb25DbGFzc05hbWUsaW52ZXJ0OkssdmlzaWJsZVRvYXN0czpDLGNsb3NlQnV0dG9uOihBMT1GPT1udWxsP3ZvaWQgMDpGLmNsb3NlQnV0dG9uKSE9bnVsbD9BMTpOLGludGVyYWN0aW5nOk4xLHBvc2l0aW9uOnksc3R5bGU6Rj09bnVsbD92b2lkIDA6Ri5zdHlsZSx1bnN0eWxlZDpGPT1udWxsP3ZvaWQgMDpGLnVuc3R5bGVkLGNsYXNzTmFtZXM6Rj09bnVsbD92b2lkIDA6Ri5jbGFzc05hbWVzLGNhbmNlbEJ1dHRvblN0eWxlOkY9PW51bGw/dm9pZCAwOkYuY2FuY2VsQnV0dG9uU3R5bGUsYWN0aW9uQnV0dG9uU3R5bGU6Rj09bnVsbD92b2lkIDA6Ri5hY3Rpb25CdXR0b25TdHlsZSxjbG9zZUJ1dHRvbkFyaWFMYWJlbDpGPT1udWxsP3ZvaWQgMDpGLmNsb3NlQnV0dG9uQXJpYUxhYmVsLHJlbW92ZVRvYXN0OkMxLHRvYXN0czptLmZpbHRlcigoVzEpPT5XMS5wb3NpdGlvbj09di5wb3NpdGlvbiksaGVpZ2h0czpuLmZpbHRlcigoVzEpPT5XMS5wb3NpdGlvbj09di5wb3NpdGlvbiksc2V0SGVpZ2h0czpvLGV4cGFuZEJ5RGVmYXVsdDpHLGdhcDpJLGV4cGFuZGVkOnIsc3dpcGVEaXJlY3Rpb25zOkouc3dpcGVEaXJlY3Rpb25zfSl9KSl9KSl9KTtmdW5jdGlvbiB4Nigpe3JldHVybiBYKFM2LHt0aGVtZToiZGFyayIscG9zaXRpb246ImJvdHRvbS1jZW50ZXIiLHZpc2libGVUb2FzdHM6NCxnYXA6OCxvZmZzZXQ6e2JvdHRvbToyNH0sdG9hc3RPcHRpb25zOnt1bnN0eWxlZDohMH0sc3R5bGU6e3pJbmRleDoyMTQ3NDgzNjQ3fSxjb250YWluZXJBcmlhTGFiZWw6InNlcnZlLXNpbSBub3RpZmljYXRpb25zIn0pfWZ1bmN0aW9uIGo2KHt0b2FzdDokfSl7bGV0IEo9JC5zdGF0dXM9PT0iZXJyb3IiLFE9JC5zdGF0dXM9PT0idXBsb2FkaW5nIixaPVEmJiQucHJvZ3Jlc3MhPT1udWxsLEs9JC5wcm9ncmVzcyE9bnVsbD9NYXRoLnJvdW5kKCQucHJvZ3Jlc3MqMTAwKTowO3JldHVybiBYKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJ1cGxvYWQtdG9hc3QiLGNsYXNzTmFtZTpgZmxleCB3LVttaW4oMzIwcHgsY2FsYygxMDB2dy0zMnB4KSldIGZsZXgtY29sIGdhcC0xLjUgcHgtMyBweS0yIGJnLXBhbmVsIGJvcmRlciBib3JkZXItd2hpdGUvMTIgcm91bmRlZC1sZyB0ZXh0LXdoaXRlLzkwIHRleHQtWzEycHhdIGZvbnQtbW9ubyBzaGFkb3ctWzBfOHB4XzI0cHhfcmdiYSgwLDAsMCwwLjQ1KV0gJHtKPyJzZWxlY3QtdGV4dCBjdXJzb3ItdGV4dCI6InNlbGVjdC1ub25lIGN1cnNvci1kZWZhdWx0In1gLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIG1pbi13LTAiLGNoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJzaXplLTEuNSByb3VuZGVkLWZ1bGwgc2hyaW5rLTAgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjNzXSIsc3R5bGU6e2JhY2tncm91bmQ6UT8iI2E1YjRmYyI6JC5zdGF0dXM9PT0ic3VjY2VzcyI/IiM0YWRlODAiOiIjZjg3MTcxIn19KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4LTEgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAiLGNoaWxkcmVuOltRJiZaJiZgVXBsb2FkaW5nICR7JC5uYW1lfeKApiAke0t9JWAsUSYmIVomJigkLmtpbmQ9PT0iaXBhIj9gSW5zdGFsbGluZyAkeyQubmFtZX3igKZgOmBBZGRpbmcgJHskLm5hbWV94oCmYCksJC5zdGF0dXM9PT0ic3VjY2VzcyImJigkLmtpbmQ9PT0iaXBhIj9gSW5zdGFsbGVkICR7JC5uYW1lfWA6YEFkZGVkICR7JC5uYW1lfSB0byBQaG90b3NgKSxKJiZgJHskLm5hbWV9OiAkeyQubWVzc2FnZT8/IlVwbG9hZCBmYWlsZWQifWBdfSldfSksUSYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSBoLVszcHhdIHctZnVsbCBiZy13aGl0ZS84IHJvdW5kZWQtWzJweF0gb3ZlcmZsb3ctaGlkZGVuIixjaGlsZHJlbjpaP1goImRpdiIse2NsYXNzTmFtZToiaC1mdWxsIGJnLWFjY2VudCByb3VuZGVkLVsycHhdIFt0cmFuc2l0aW9uOndpZHRoXzEyMG1zX2xpbmVhcl0iLHN0eWxlOnt3aWR0aDpgJHtLfSVgfX0pOlgoImRpdiIse2NsYXNzTmFtZToic2VydmUtc2ltLXRvYXN0LWluZGV0ZXJtaW5hdGUgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGgtZnVsbCB3LVs0MCVdIGJnLWFjY2VudCByb3VuZGVkLVsycHhdIn0pfSldfSl9ZnVuY3Rpb24gdjYoe3dpZHRoOiQsaGVpZ2h0OkosdmlzaWJsZTpRfSl7cmV0dXJuIFgoImRpdiIseyJhcmlhLWhpZGRlbiI6InRydWUiLGNsYXNzTmFtZToiYWJzb2x1dGUgcmlnaHQtMyBib3R0b20tMyB6LTIwIHBvaW50ZXItZXZlbnRzLW5vbmUgc2VsZWN0LW5vbmUgcm91bmRlZC1sZyBweC0yLjUgcHktMSB0ZXh0LVsxMS41cHhdIGZvbnQtbW9ubyBsZWFkaW5nLW5vbmUgdHJhY2tpbmctd2lkZSB0ZXh0LXdoaXRlLzk1IGJnLXBhbmVsLWJnLXRyYW5zbHVjZW50IHNoYWRvdy1bMF8xcHhfMnB4X3JnYmEoMCwwLDAsMC4xOCksMF82cHhfMThweF9yZ2JhKDAsMCwwLDAuMjgpLGluc2V0XzBfMF8wXzFweF9yZ2JhKDI1NSwyNTUsMjU1LDAuMDYpXSBiYWNrZHJvcC1ibHVyLW1kIGJhY2tkcm9wLXNhdHVyYXRlLTE1MCB3aGl0ZXNwYWNlLW5vd3JhcCIsc3R5bGU6e29wYWNpdHk6UT8xOjAsdHJhbnNmb3JtOmB0cmFuc2xhdGVZKCR7UT8wOjR9cHgpIHNjYWxlKCR7UT8xOjAuOTZ9KWAsdHJhbnNmb3JtT3JpZ2luOiIxMDAlIDEwMCUiLHRyYW5zaXRpb246Im9wYWNpdHkgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgdHJhbnNmb3JtIDIyMG1zIGN1YmljLWJlemllcigwLjIsIDAuODIsIDAuMjIsIDEpIn0sY2hpbGRyZW46W01hdGgucm91bmQoJCksIiAiLFgoInNwYW4iLHtjbGFzc05hbWU6Im9wYWNpdHktNjAgbXgtMC41IixjaGlsZHJlbjoiw5cifSksIiAiLE1hdGgucm91bmQoSildfSl9ZnVuY3Rpb24gUjYoe3N0cmVhbWluZzokfSl7bGV0IEo9JD8iIzRhZGU4MCI6IiM4ZThlOTMiO3JldHVybiBYKCJzcGFuIix7ImRhdGEtdGVzdGlkIjoic3RyZWFtLXN0YXR1cy1waWxsIixjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtWzVweF0gdGV4dC1bMTJweF0gZm9udC1tb25vIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSB3aGl0ZXNwYWNlLW5vd3JhcCIsc3R5bGU6e2NvbG9yOkp9LCJhcmlhLWxpdmUiOiJwb2xpdGUiLGNoaWxkcmVuOltYKCJzcGFuIix7ImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2xhc3NOYW1lOiJzaXplLTEuNSByb3VuZGVkLWZ1bGwgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjE4c19lYXNlXSIsc3R5bGU6e2JhY2tncm91bmQ6Sn19KSwkPyJsaXZlIjoiY29ubmVjdGluZyJdfSl9ZnVuY3Rpb24gUkooJCxKLFEpe2xldCBaPVEubGF0Kk1hdGguUEkvMTgwLEs9KCQtUS5sYXQpKk1hdGguUEkvMTgwO3JldHVybnt4OihKLVEubG5nKSpNYXRoLlBJLzE4MCpNYXRoLmNvcyhaKSo2MzcxMDAwLHo6LUsqNjM3MTAwMH19ZnVuY3Rpb24gaEooJCxKLFEpe2xldCBaPVEubGF0Kk1hdGguUEkvMTgwLEs9LUovNjM3MTAwMCooMTgwL01hdGguUEkpLFk9JC8oNjM3MTAwMCpNYXRoLmNvcyhaKSkqKDE4MC9NYXRoLlBJKTtyZXR1cm57bGF0OlEubGF0K0ssbG5nOlEubG5nK1l9fWZ1bmN0aW9uIGdKKCQsSixRLFosSyl7bGV0IFk9SypLLHE9WSpLLEc9KE4sQixMLFYpPT4wLjUqKDIqQisoLU4rTCkqSysoMipOLTUqQis0KkwtVikqWSsoLU4rMypCLTMqTCtWKSpxKTtyZXR1cm57eDpHKCQueCxKLngsUS54LFoueCksejpHKCQueixKLnosUS56LFoueikseTpHKCQueSxKLnksUS55LFoueSkscmF3QWx0OkcoJC5yYXdBbHQsSi5yYXdBbHQsUS5yYXdBbHQsWi5yYXdBbHQpfX1mdW5jdGlvbiBmSigkLEosUSl7aWYoJC5sZW5ndGg8MilyZXR1cm4gJC5zbGljZSgpO2xldCBaPVtdLEs9JC5sZW5ndGgsWT1RP0s6Sy0xO2ZvcihsZXQgcT0wO3E8WTtxKyspe2xldCBHPSRbUT8ocS0xK0spJUs6TWF0aC5tYXgoMCxxLTEpXSxOPSRbcSVLXSxCPSRbKHErMSklS10sTD0kW1E/KHErMiklSzpNYXRoLm1pbihLLTEscSsyKV0sVj1CLngtTi54LFU9Qi56LU4ueix6PU1hdGguaHlwb3QoVixVKSxrPU1hdGgubWF4KDIsTWF0aC5jZWlsKHovSikpO2ZvcihsZXQgSD0wO0g8aztIKyspe2xldCBDPUgvaztaLnB1c2goZ0ooRyxOLEIsTCxDKSl9fWlmKCFRKVoucHVzaCgkW0stMV0pO3JldHVybiBafWZ1bmN0aW9uIGg2KCQpe2lmKCQud2F5cG9pbnRzLmxlbmd0aDwyKXRocm93IEVycm9yKGBUcmFpbCAkeyQuaWR9IG5lZWRzIGF0IGxlYXN0IDIgd2F5cG9pbnRzYCk7bGV0IEo9e2xhdDokLndheXBvaW50cy5yZWR1Y2UoKEgsQyk9PkgrQy5sYXQsMCkvJC53YXlwb2ludHMubGVuZ3RoLGxuZzokLndheXBvaW50cy5yZWR1Y2UoKEgsQyk9PkgrQy5sbmcsMCkvJC53YXlwb2ludHMubGVuZ3RofSxRPSQud2F5cG9pbnRzLm1hcCgoSCk9PkguYWx0Pz8wKSxaPU1hdGgubWluKC4uLlEpLEs9TWF0aC5tYXgoLi4uUSksWT0kLndheXBvaW50cy5tYXAoKEgpPT57bGV0e3g6Qyx6OkZ9PVJKKEgubGF0LEgubG5nLEopLE89SC5hbHQ/PzA7cmV0dXJue3g6Qyx6OkYseTpPLVoscmF3QWx0Ok99fSkscT1mSihZLDgsISEkLmxvb3ApLEc9W10sTj0wO2ZvcihsZXQgSD0wO0g8cS5sZW5ndGg7SCsrKXtsZXQgQz1xW0hdO2lmKEg+MCl7bGV0IHc9cVtILTFdO04rPU1hdGguaHlwb3QoQy54LXcueCxDLnotdy56LEMueS13LnkpfWxldHtsYXQ6Rixsbmc6T309aEooQy54LEMueixKKSxJPU1hdGgubWF4KDAsQy55KTtHLnB1c2goe3g6Qy54LHo6Qy56LHk6SSxhcmM6TixsYXQ6Rixsbmc6T30pfWxldCBCPTEvMCxMPS0xLzAsVj0xLzAsVT0tMS8wLHo9MS8wLGs9LTEvMDtmb3IobGV0IEggb2YgRyl7aWYoSC54PEIpQj1ILng7aWYoSC54PkwpTD1ILng7aWYoSC56PFYpVj1ILno7aWYoSC56PlUpVT1ILno7aWYoSC55PHopej1ILnk7aWYoSC55Pmspaz1ILnl9cmV0dXJue3RyYWlsOiQsb3JpZ2luOkoscG9pbnRzOkcsdG90YWxEaXN0YW5jZTpHW0cubGVuZ3RoLTFdLmFyYyxib3VuZHM6e3g6W0IsTF0seTpbeixrXSx6OltWLFVdfSxyYXdNaW5BbHQ6WixyYXdNYXhBbHQ6S319ZnVuY3Rpb24gczAoJCxKKXtsZXQgUT0kLnRvdGFsRGlzdGFuY2U7aWYoUT09PTApcmV0dXJuICQucG9pbnRzWzBdO2xldCBaPUo7aWYoJC50cmFpbC5sb29wKVo9KFolUStRKSVRO2Vsc2V7aWYoWjw9MClyZXR1cm4gJC5wb2ludHNbMF07aWYoWj49USlyZXR1cm4gJC5wb2ludHNbJC5wb2ludHMubGVuZ3RoLTFdfWxldCBLPTAsWT0kLnBvaW50cy5sZW5ndGgtMTt3aGlsZShLKzE8WSl7bGV0IEw9SytZPj4+MTtpZigkLnBvaW50c1tMXS5hcmM8PVopSz1MO2Vsc2UgWT1MfWxldCBxPSQucG9pbnRzW0tdLEc9JC5wb2ludHNbWV0sTj1HLmFyYy1xLmFyYyxCPU49PT0wPzA6KFotcS5hcmMpL047cmV0dXJue3g6cS54KyhHLngtcS54KSpCLHo6cS56KyhHLnotcS56KSpCLHk6cS55KyhHLnktcS55KSpCLGFyYzpaLGxhdDpxLmxhdCsoRy5sYXQtcS5sYXQpKkIsbG5nOnEubG5nKyhHLmxuZy1xLmxuZykqQn19ZnVuY3Rpb24gYzMoJCl7c3dpdGNoKCQpe2Nhc2Uid2FsayI6cmV0dXJuIDEuNDtjYXNlInJ1biI6cmV0dXJuIDM7Y2FzZSJjeWNsZSI6cmV0dXJuIDUuNTtjYXNlImRyaXZlIjpyZXR1cm4gMTMuNH19dmFyIG1KPVt7bGF0OjM3LjMzMjcyLGxuZzotMTIyLjAwODMzLGFsdDo0OX0se2xhdDozNy4zMzMwOSxsbmc6LTEyMi4wMDczNSxhbHQ6NDh9LHtsYXQ6MzcuMzMzNzMsbG5nOi0xMjIuMDA2NjMsYWx0OjQ5fSx7bGF0OjM3LjMzNDU0LGxuZzotMTIyLjAwNjI3LGFsdDo0OX0se2xhdDozNy4zMzU0LGxuZzotMTIyLjAwNjMzLGFsdDo0OX0se2xhdDozNy4zMzYxOCxsbmc6LTEyMi4wMDY3OSxhbHQ6NDV9LHtsYXQ6MzcuMzM2NzUsbG5nOi0xMjIuMDA3NTksYWx0OjQ1fSx7bGF0OjM3LjMzNzA0LGxuZzotMTIyLjAwODYxLGFsdDo0Nn0se2xhdDozNy4zMzY5OCxsbmc6LTEyMi4wMDk2OSxhbHQ6NDh9LHtsYXQ6MzcuMzM2NjIsbG5nOi0xMjIuMDEwNjYsYWx0OjQ4fSx7bGF0OjM3LjMzNTk4LGxuZzotMTIyLjAxMTM4LGFsdDo0OX0se2xhdDozNy4zMzUxNyxsbmc6LTEyMi4wMTE3NCxhbHQ6NTB9LHtsYXQ6MzcuMzM0MzEsbG5nOi0xMjIuMDExNjksYWx0OjUwfSx7bGF0OjM3LjMzMzU0LGxuZzotMTIyLjAxMTIyLGFsdDo1MH0se2xhdDozNy4zMzI5Nixsbmc6LTEyMi4wMTA0MixhbHQ6NTF9LHtsYXQ6MzcuMzMyNjgsbG5nOi0xMjIuMDA5NCxhbHQ6NTB9XSxwSj1be2xhdDozNy44MzIxMixsbmc6LTEyMi40ODA2NSxhbHQ6MzB9LHtsYXQ6MzcuODI5MzcsbG5nOi0xMjIuNDc5NzQsYWx0OjMwfSx7bGF0OjM3LjgyNjQ5LGxuZzotMTIyLjQ3OTQsYWx0OjMwfSx7bGF0OjM3LjgyMzYyLGxuZzotMTIyLjQ3OTA3LGFsdDo0NX0se2xhdDozNy44MjA3NCxsbmc6LTEyMi40Nzg3MyxhbHQ6NTl9LHtsYXQ6MzcuODE3ODYsbG5nOi0xMjIuNDc4MzksYWx0OjY2fSx7bGF0OjM3LjgxNDk4LGxuZzotMTIyLjQ3ODA2LGFsdDo2Nn0se2xhdDozNy44MTIxMSxsbmc6LTEyMi40Nzc3MixhbHQ6NTh9LHtsYXQ6MzcuODA5MjMsbG5nOi0xMjIuNDc3MzQsYWx0OjQ0fSx7bGF0OjM3LjgwOTQ5LGxuZzotMTIyLjQ3NzMsYWx0OjQ1fSx7bGF0OjM3LjgxMjM2LGxuZzotMTIyLjQ3NzY1LGFsdDo1OX0se2xhdDozNy44MTUyNCxsbmc6LTEyMi40Nzc5OCxhbHQ6NjZ9LHtsYXQ6MzcuODE4MTIsbG5nOi0xMjIuNDc4MzIsYWx0OjY2fSx7bGF0OjM3LjgyMSxsbmc6LTEyMi40Nzg2NixhbHQ6NTh9LHtsYXQ6MzcuODIzODcsbG5nOi0xMjIuNDc5LGFsdDo0NH0se2xhdDozNy44MjY3NSxsbmc6LTEyMi40NzkzMyxhbHQ6MzB9LHtsYXQ6MzcuODI5NjMsbG5nOi0xMjIuNDc5NjcsYWx0OjMwfSx7bGF0OjM3LjgzMjMzLGxuZzotMTIyLjQ4MDcyLGFsdDozMH1dLHVKPVt7bGF0OjM3Ljg4NjY0LGxuZzotMTIyLjYyNTk5LGFsdDoxMjF9LHtsYXQ6MzcuODg4ODcsbG5nOi0xMjIuNjIzMzIsYWx0OjEzNX0se2xhdDozNy44OTExNSxsbmc6LTEyMi42MjE2LGFsdDoxNjR9LHtsYXQ6MzcuODkzNTMsbG5nOi0xMjIuNjE5MjEsYWx0OjE4MH0se2xhdDozNy44OTQ2Nixsbmc6LTEyMi42MTU3NyxhbHQ6MjIwfSx7bGF0OjM3Ljg5NjMxLGxuZzotMTIyLjYxMjY4LGFsdDoyNzN9LHtsYXQ6MzcuODk5MTcsbG5nOi0xMjIuNjEwOTgsYWx0OjMxM30se2xhdDozNy45MDE2Nixsbmc6LTEyMi42MDg1NSxhbHQ6MzQyfSx7bGF0OjM3LjkwMTk5LGxuZzotMTIyLjYwNjAxLGFsdDo0MDh9LHtsYXQ6MzcuOTAzMzksbG5nOi0xMjIuNjA0MDEsYWx0OjQ1MH0se2xhdDozNy45MDY2Mixsbmc6LTEyMi42MDI5MSxhbHQ6NDQwfSx7bGF0OjM3LjkwOTcxLGxuZzotMTIyLjYwMTczLGFsdDo0MzJ9LHtsYXQ6MzcuOTEyMTMsbG5nOi0xMjIuNjAwMDcsYWx0OjQzNn0se2xhdDozNy45MTQzOSxsbmc6LTEyMi41OTc4LGFsdDo0MTB9LHtsYXQ6MzcuOTEyODUsbG5nOi0xMjIuNTk1MDQsYWx0OjQyMn0se2xhdDozNy45MTI3NCxsbmc6LTEyMi41OTIwMixhbHQ6NDI1fSx7bGF0OjM3LjkxNSxsbmc6LTEyMi41OTAzMixhbHQ6NDEyfSx7bGF0OjM3LjkxNjM3LGxuZzotMTIyLjU4OTAzLGFsdDo0MDZ9LHtsYXQ6MzcuOTE0ODEsbG5nOi0xMjIuNTg1OTUsYWx0OjM4Mn0se2xhdDozNy45MTc0LGxuZzotMTIyLjU4Mzk4LGFsdDozNzJ9LHtsYXQ6MzcuOTE2NDIsbG5nOi0xMjIuNTgyMzYsYWx0OjM1Mn0se2xhdDozNy45MTQ4MSxsbmc6LTEyMi41ODAxMSxhbHQ6MzQyfV0sbEo9W3tsYXQ6NDAuNzgyMTYsbG5nOi03My45NjI1NCxhbHQ6Mzd9LHtsYXQ6NDAuNzgyMjEsbG5nOi03My45NjA5OCxhbHQ6MzZ9LHtsYXQ6NDAuNzgzMjgsbG5nOi03My45NjAxLGFsdDozNn0se2xhdDo0MC43ODQ0LGxuZzotNzMuOTU5MyxhbHQ6MzZ9LHtsYXQ6NDAuNzg1NSxsbmc6LTczLjk1ODQ4LGFsdDozNn0se2xhdDo0MC43ODY2NCxsbmc6LTczLjk1Nzc0LGFsdDozNn0se2xhdDo0MC43ODc5LGxuZzotNzMuOTU3NjQsYWx0OjM2fSx7bGF0OjQwLjc4ODk4LGxuZzotNzMuOTU3OTIsYWx0OjM2fSx7bGF0OjQwLjc4ODY4LGxuZzotNzMuOTU5NTEsYWx0OjM3fSx7bGF0OjQwLjc4ODk3LGxuZzotNzMuOTYxMTIsYWx0OjM2fSx7bGF0OjQwLjc4ODMzLGxuZzotNzMuOTYyNSxhbHQ6Mzd9LHtsYXQ6NDAuNzg4MjgsbG5nOi03My45NjQxNixhbHQ6Mzd9LHtsYXQ6NDAuNzg4MDUsbG5nOi03My45NjU3MyxhbHQ6MzZ9LHtsYXQ6NDAuNzg2OTEsbG5nOi03My45NjYzNixhbHQ6MzZ9LHtsYXQ6NDAuNzg1NjYsbG5nOi03My45NjY2NSxhbHQ6MzZ9LHtsYXQ6NDAuNzg0NTgsbG5nOi03My45NjYwOCxhbHQ6MzZ9LHtsYXQ6NDAuNzg0MDIsbG5nOi03My45NjQ1OSxhbHQ6MzZ9LHtsYXQ6NDAuNzgzMjIsbG5nOi03My45NjMzNCxhbHQ6Mzd9XSxkSj1be2xhdDozNy41OTY1OSxsbmc6LTEyMi41MDMxNixhbHQ6NH0se2xhdDozNy41OTU1NSxsbmc6LTEyMi41MDQyNCxhbHQ6NH0se2xhdDozNy41OTQ1Mixsbmc6LTEyMi41MDUzNCxhbHQ6NX0se2xhdDozNy41OTMyOSxsbmc6LTEyMi41MDU4OCxhbHQ6OX0se2xhdDozNy41OTIxMixsbmc6LTEyMi41MDUwOCxhbHQ6MjB9LHtsYXQ6MzcuNTkxLGxuZzotMTIyLjUwNDEzLGFsdDoyOX0se2xhdDozNy41ODk3NCxsbmc6LTEyMi41MDQxNixhbHQ6NDB9LHtsYXQ6MzcuNTg4Nyxsbmc6LTEyMi41MDUyNCxhbHQ6NTF9LHtsYXQ6MzcuNTg3NDUsbG5nOi0xMjIuNTA0OTYsYWx0OjYwfSx7bGF0OjM3LjU4NjI3LGxuZzotMTIyLjUwNDIyLGFsdDo3MX0se2xhdDozNy41ODUzOSxsbmc6LTEyMi41MDUzNCxhbHQ6ODJ9LHtsYXQ6MzcuNTg1MDUsbG5nOi0xMjIuNTA2OTgsYWx0OjkzfSx7bGF0OjM3LjU4NTM5LGxuZzotMTIyLjUwNTM0LGFsdDo4Mn0se2xhdDozNy41ODYyNyxsbmc6LTEyMi41MDQyMixhbHQ6NzF9LHtsYXQ6MzcuNTg3NDUsbG5nOi0xMjIuNTA0OTYsYWx0OjYwfSx7bGF0OjM3LjU4ODcsbG5nOi0xMjIuNTA1MjQsYWx0OjUxfSx7bGF0OjM3LjU4OTc0LGxuZzotMTIyLjUwNDE2LGFsdDo0MH0se2xhdDozNy41OTEsbG5nOi0xMjIuNTA0MTMsYWx0OjI5fSx7bGF0OjM3LjU5MjEyLGxuZzotMTIyLjUwNTA4LGFsdDoyMH0se2xhdDozNy41OTMyOSxsbmc6LTEyMi41MDU4OCxhbHQ6OX0se2xhdDozNy41OTQ1Mixsbmc6LTEyMi41MDUzNCxhbHQ6NX0se2xhdDozNy41OTU1NSxsbmc6LTEyMi41MDQyNCxhbHQ6NH1dLHQwPVt7aWQ6ImFwcGxlLXBhcmstbG9vcCIsbmFtZToiQXBwbGUgUGFyayBMb29wIixkZXNjcmlwdGlvbjoiQ3VwZXJ0aW5vIOKAoiBmbGF0IHJpbmcgcm9hZCIsbW9kZToid2FsayIsd2F5cG9pbnRzOm1KLGxvb3A6ITB9LHtpZDoiZ29sZGVuLWdhdGUiLG5hbWU6IkdvbGRlbiBHYXRlIENyb3NzaW5nIixkZXNjcmlwdGlvbjoiU2FuIEZyYW5jaXNjbyDigKIgYnJpZGdlIHJvdW5kLXRyaXAiLG1vZGU6InJ1biIsd2F5cG9pbnRzOnBKLGxvb3A6ITB9LHtpZDoidGFtLXJpZGdlIixuYW1lOiJNdC4gVGFtIFJpZGdlIixkZXNjcmlwdGlvbjoiU3RpbnNvbiBCZWFjaCDigKIgU3RlZXAgUmF2aW5lICsgTWF0dCBEYXZpcyBsb29wIixtb2RlOiJ3YWxrIix3YXlwb2ludHM6dUosbG9vcDohMH0se2lkOiJjZW50cmFsLXBhcmsiLG5hbWU6IlJlc2Vydm9pciBMb29wIixkZXNjcmlwdGlvbjoiQ2VudHJhbCBQYXJrIOKAoiAyLjUga20iLG1vZGU6InJ1biIsd2F5cG9pbnRzOmxKLGxvb3A6ITB9LHtpZDoicGNoLXBhY2lmaWNhIixuYW1lOiJQYWNpZmljIENvYXN0IEh3eSIsZGVzY3JpcHRpb246IlBhY2lmaWNhIOKAoiBEZXZpbCdzIFNsaWRlIHJvdW5kLXRyaXAiLG1vZGU6ImRyaXZlIix3YXlwb2ludHM6ZEosbG9vcDohMH1dO2Z1bmN0aW9uIGUxKHtvcGVuOiQsb25PcGVuQ2hhbmdlOkosc3VtbWFyeTpRLGNoaWxkcmVuOlosc3VtbWFyeUNsYXNzTmFtZTpLPSIiLGJvZHlDbGFzc05hbWU6WT0iZmxleCBmbGV4LWNvbCBnYXAtMi41IHB0LTIuNSIsY2xhc3NOYW1lOnE9IiIsLi4uR30pe3JldHVybiBYKCJkZXRhaWxzIix7b3BlbjokLG9uVG9nZ2xlOihOKT0+SihOLmN1cnJlbnRUYXJnZXQub3BlbiksY2xhc3NOYW1lOmBsZW0tc2VjdGlvbiBiZy1wYW5lbCByb3VuZGVkLVsxMHB4XSBweC0zIHB5LTIgJHtxfWAsLi4uRyxjaGlsZHJlbjpbWCgic3VtbWFyeSIse2NsYXNzTmFtZTpgbGVtLXRvZ2dsZSBjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZSB0ZXh0LXdoaXRlLzkwIG1pbi1oLVszNnB4XSBsZWFkaW5nLW5vbmUgcHktMi41IHB4LTEgLW15LTIgLW14LTEgdy1bY2FsYygxMDAlKzhweCldICR7S31gLGNoaWxkcmVuOltRLFgobTIse29wZW46JH0pXX0pLFgoImRpdiIse2NsYXNzTmFtZTpZLGNoaWxkcmVuOlp9KV19KX1mdW5jdGlvbiBwNSh7bGFiZWw6JCx2YWx1ZTpKLG9wdGlvbnM6USxkaXNhYmxlZDpaLG9uQ2hhbmdlOkssY2xhc3NOYW1lOll9KXtsZXRbcSxHXT1BKCExKSxOPVQobnVsbCksQj1UKG51bGwpLFtMLFZdPUEobnVsbCksVT0oKT0+e2xldCBDPU4uY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIUMpcmV0dXJuO1Yoe3RvcDpDLmJvdHRvbSs0LGxlZnQ6Qy5sZWZ0LG1pbldpZHRoOkMud2lkdGh9KX07VDAoKCk9PntpZihxKVUoKX0sW3FdKSxUMCgoKT0+e2lmKCFxfHwhTClyZXR1cm47bGV0IEM9Qi5jdXJyZW50O2lmKCFDKXJldHVybjtsZXQgRj04LE89d2luZG93LmlubmVyV2lkdGgtQy5vZmZzZXRXaWR0aC1GO2lmKEwubGVmdD5PKVYoey4uLkwsbGVmdDpNYXRoLm1heChGLE8pfSl9LFtxLExdKSxiKCgpPT57aWYoIXEpcmV0dXJuO2xldCBDPSgpPT5HKCExKSxGPShJKT0+e2xldCB3PUkudGFyZ2V0O2lmKCFCLmN1cnJlbnQ/LmNvbnRhaW5zKHcpJiYhTi5jdXJyZW50Py5jb250YWlucyh3KSlDKCl9LE89KEkpPT57aWYoIUIuY3VycmVudD8uY29udGFpbnMoSS50YXJnZXQpKVUoKX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLEYpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLE8sITApLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLEMpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsRiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsTywhMCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsQyl9fSxbcV0pO2xldCB6PVQoITEpO2IoKCk9PntpZighcSl7ei5jdXJyZW50PSExO3JldHVybn1pZighTHx8ei5jdXJyZW50KXJldHVybjtsZXQgQz1CLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoIltyb2xlPW9wdGlvbl0iKTtpZighQz8ubGVuZ3RoKXJldHVybjt6LmN1cnJlbnQ9ITA7bGV0IEY9US5maW5kSW5kZXgoKE8pPT5PLnZhbHVlPT09Sik7Q1tNYXRoLm1heChGLDApXT8uZm9jdXMoKX0sW3EsTCxRLEpdKTtsZXQgaz0oQyk9PntsZXQgRj1bLi4uQi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yQWxsKCJbcm9sZT1vcHRpb25dIik/P1tdXSxPPUYuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtpZihDLmtleT09PSJBcnJvd0Rvd24ifHxDLmtleT09PSJBcnJvd1VwIil7Qy5wcmV2ZW50RGVmYXVsdCgpO2xldCBJPUMua2V5PT09IkFycm93RG93biI/TWF0aC5taW4oTysxLEYubGVuZ3RoLTEpOk1hdGgubWF4KE8tMSwwKTtGW0ldPy5mb2N1cygpfWVsc2UgaWYoQy5rZXk9PT0iRXNjYXBlIilDLnByZXZlbnREZWZhdWx0KCksRyghMSksTi5jdXJyZW50Py5mb2N1cygpfSxIPVEuZmluZCgoQyk9PkMudmFsdWU9PT1KKTtyZXR1cm4gWChaMSx7Y2hpbGRyZW46W1goImJ1dHRvbiIse3JlZjpOLHR5cGU6ImJ1dHRvbiIsImFyaWEtbGFiZWwiOiQsImFyaWEtaGFzcG9wdXAiOiJsaXN0Ym94IiwiYXJpYS1leHBhbmRlZCI6cSxkaXNhYmxlZDpaLG9uQ2xpY2s6KCk9PkcoKEMpPT4hQyksY2xhc3NOYW1lOmB0ZXh0LWxlZnQgZm9udC1baW5oZXJpdF0gY3Vyc29yLXBvaW50ZXIgZGlzYWJsZWQ6Y3Vyc29yLWRlZmF1bHQgJHtZPz8iIn1gLGNoaWxkcmVuOlgoInNwYW4iLHtjbGFzc05hbWU6ImJsb2NrIHRydW5jYXRlIixjaGlsZHJlbjpIPy5sYWJlbD8/Sn0pfSkscSYmTCYmejMoWCgiZGl2Iix7cmVmOkIscm9sZToibGlzdGJveCIsImFyaWEtbGFiZWwiOiQsb25LZXlEb3duOmssc3R5bGU6e3RvcDpMLnRvcCxsZWZ0OkwubGVmdCxtaW5XaWR0aDpMLm1pbldpZHRofSxjbGFzc05hbWU6ImZpeGVkIG1heC1oLTkwIG92ZXJmbG93LXktYXV0byBiZy1wYW5lbCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHJvdW5kZWQtWzEwcHhdIHAtMSBzaGFkb3ctWzBfOHB4XzI0cHhfcmdiYSgwLDAsMCwwLjUpXSB0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlLzkwIHotNTAiLGNoaWxkcmVuOlEubWFwKChDKT0+WCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixyb2xlOiJvcHRpb24iLCJhcmlhLXNlbGVjdGVkIjpDLnZhbHVlPT09SixvbkNsaWNrOigpPT57SyhDLnZhbHVlKSxHKCExKSxOLmN1cnJlbnQ/LmZvY3VzKCl9LGNsYXNzTmFtZTpgYmxvY2sgdy1mdWxsIHRleHQtbGVmdCBmb250LVtpbmhlcml0XSBweC0yLjUgcHktMSByb3VuZGVkLW1kIGN1cnNvci1wb2ludGVyIHdoaXRlc3BhY2Utbm93cmFwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLXdoaXRlLzggZm9jdXMtdmlzaWJsZTpiZy13aGl0ZS84IG91dGxpbmUtbm9uZSAke0MudmFsdWU9PT1KPyJ0ZXh0LWFjY2VudCI6IiJ9YCxjaGlsZHJlbjpDLmxhYmVsfSxDLnZhbHVlKSl9KSxkb2N1bWVudC5ib2R5KV19KX12YXIgY0o9NjUwLG8zPVsxLDIsNSwyMF0sZzY9MTAwMCxyMz17c3RhdHVzOiJpZGxlIixhcmM6MCxlbGFwc2VkTXM6MH07ZnVuY3Rpb24gZDYoe3VkaWQ6JCxleGVjOkp9KXtsZXRbUSxaXT1BKCExKSxbSyxZXT1BKHQwWzBdLmlkKSxbcSxHXT1BKHQwWzBdLm1vZGUpLFtOLEJdPUEoMSksW0wsVl09QShyMyksW1Usel09QShudWxsKSxrPVQxKCgpPT50MC5maW5kKChkKT0+ZC5pZD09PUspPz90MFswXSxbS10pLEg9VDEoKCk9Pmg2KGspLFtrXSksQz1UKDApLEY9VCgiaWRsZSIpLE89VChjMyhxKSpOKSxJPVQoMCksdz1UKEgpLFM9VChudWxsKTtiKCgpPT57Ty5jdXJyZW50PWMzKHEpKk59LFtxLE5dKTtsZXQgaj1UKG51bGwpO2IoKCk9PntsZXQgZD13LmN1cnJlbnQseD1DLmN1cnJlbnQ7aWYody5jdXJyZW50PUgsZCYmZCE9PUgpai5jdXJyZW50PWlKKGQseCxILHBlcmZvcm1hbmNlLm5vdygpKTtDLmN1cnJlbnQ9MCxJLmN1cnJlbnQ9MCxGLmN1cnJlbnQ9ImlkbGUiLFMuY3VycmVudD1udWxsLFYocjMpfSxbSF0pO2xldCAkMT1UKDApLG09VChudWxsKSxjPVQobnVsbCk7YigoKT0+e2xldCBkPTAseD0oYSk9PntsZXQgSzE9bS5jdXJyZW50LEwxPUsxPT1udWxsPzE2Ok1hdGgubWluKDY0LGEtSzEpO2lmKG0uY3VycmVudD1hLCQxLmN1cnJlbnQ9KCQxLmN1cnJlbnQrTDEqMC4wMDAxMiklKE1hdGguUEkqMiksRi5jdXJyZW50PT09InBsYXlpbmciKXtsZXQgWTE9Ty5jdXJyZW50KkwxLzEwMDA7Qy5jdXJyZW50Kz1ZMSxJLmN1cnJlbnQrPUwxO2xldCBDMT13LmN1cnJlbnQudG90YWxEaXN0YW5jZTtpZighdy5jdXJyZW50LnRyYWlsLmxvb3AmJkMuY3VycmVudD49QzEpQy5jdXJyZW50PUMxLEYuY3VycmVudD0icGF1c2VkIixWKHtzdGF0dXM6InBhdXNlZCIsYXJjOkMxLGVsYXBzZWRNczpJLmN1cnJlbnR9KX1sZXQgSjE9Yy5jdXJyZW50O2lmKEoxKXtsZXQgWTE9dy5jdXJyZW50LEMxPW51bGwseT1qLmN1cnJlbnQ7aWYoeSl7bGV0IGc9KGEteS5zdGFydE1zKS9jSjtpZihnPj0xKWouY3VycmVudD1udWxsO2Vsc2V7bGV0IF89c0ooZyk7WTE9bkooeSxfKSxDMT17eDp5LnByZXZNYXJrZXIueCsoeS5uZXh0TWFya2VyLngteS5wcmV2TWFya2VyLngpKl8seTp5LnByZXZNYXJrZXIueSsoeS5uZXh0TWFya2VyLnkteS5wcmV2TWFya2VyLnkpKl8sejp5LnByZXZNYXJrZXIueisoeS5uZXh0TWFya2VyLnoteS5wcmV2TWFya2VyLnopKl99fX10SihKMSxZMSxDLmN1cnJlbnQsJDEuY3VycmVudCxhLEYuY3VycmVudD09PSJwbGF5aW5nIixDMSl9ZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoeCl9O3JldHVybiBkPXJlcXVlc3RBbmltYXRpb25GcmFtZSh4KSwoKT0+Y2FuY2VsQW5pbWF0aW9uRnJhbWUoZCl9LFtdKSxiKCgpPT57bGV0IGQ9c2V0SW50ZXJ2YWwoKCk9PntpZihGLmN1cnJlbnQ9PT0icGxheWluZyIpVih7c3RhdHVzOiJwbGF5aW5nIixhcmM6Qy5jdXJyZW50LGVsYXBzZWRNczpJLmN1cnJlbnR9KX0sMjUwKTtyZXR1cm4oKT0+Y2xlYXJJbnRlcnZhbChkKX0sW10pLGIoKCk9PntpZihMLnN0YXR1cyE9PSJwbGF5aW5nIilyZXR1cm47bGV0IGQ9ITEseD0wLGE9bnVsbCxLMT1hc3luYygpPT57aWYoZHx8YSlyZXR1cm47bGV0IEoxPURhdGUubm93KCk7aWYoSjEteDxnNilyZXR1cm47eD1KMTtsZXQgWTE9czAody5jdXJyZW50LEMuY3VycmVudCksQzE9YHhjcnVuIHNpbWN0bCBsb2NhdGlvbiAkeyR9IHNldCAke1kxLmxhdC50b0ZpeGVkKDcpfSwke1kxLmxuZy50b0ZpeGVkKDcpfWA7YT1KKEMxKS50aGVuKCh5KT0+e2lmKGQpcmV0dXJuO2lmKHkuZXhpdENvZGUhPT0wKXoobDYoeS5zdGRlcnIpfHwic2ltY3RsIGxvY2F0aW9uIHNldCBmYWlsZWQiKTtlbHNlIHoobnVsbCl9KS5jYXRjaCgoeSk9PntpZighZCl6KHkgaW5zdGFuY2VvZiBFcnJvcj95Lm1lc3NhZ2U6U3RyaW5nKHkpKX0pLmZpbmFsbHkoKCk9PnthPW51bGx9KX07SzEoKTtsZXQgTDE9c2V0SW50ZXJ2YWwoSzEsZzYpO3JldHVybigpPT57ZD0hMCxjbGVhckludGVydmFsKEwxKX19LFtMLnN0YXR1cywkLEpdKTtsZXQgbj1EKCgpPT57aWYoRi5jdXJyZW50PT09InBsYXlpbmciKXtGLmN1cnJlbnQ9InBhdXNlZCIsVigoZCk9Pih7Li4uZCxzdGF0dXM6InBhdXNlZCJ9KSk7cmV0dXJufWlmKEMuY3VycmVudD49dy5jdXJyZW50LnRvdGFsRGlzdGFuY2UmJiF3LmN1cnJlbnQudHJhaWwubG9vcClDLmN1cnJlbnQ9MCxJLmN1cnJlbnQ9MDtpZihTLmN1cnJlbnQ9PW51bGwpe2xldCBkPXMwKHcuY3VycmVudCxDLmN1cnJlbnQpO1MuY3VycmVudD17bGF0OmQubGF0LGxuZzpkLmxuZ319Ri5jdXJyZW50PSJwbGF5aW5nIixWKChkKT0+KHsuLi5kLHN0YXR1czoicGxheWluZyIsYXJjOkMuY3VycmVudCxlbGFwc2VkTXM6SS5jdXJyZW50fSkpfSxbXSksbz1EKCgpPT57Ri5jdXJyZW50PSJpZGxlIixDLmN1cnJlbnQ9MCxJLmN1cnJlbnQ9MCxWKHIzKTtsZXQgZD1TLmN1cnJlbnQ7Uy5jdXJyZW50PW51bGw7bGV0IHg9ZD9geGNydW4gc2ltY3RsIGxvY2F0aW9uICR7JH0gc2V0ICR7ZC5sYXQudG9GaXhlZCg3KX0sJHtkLmxuZy50b0ZpeGVkKDcpfWA6YHhjcnVuIHNpbWN0bCBsb2NhdGlvbiAkeyR9IGNsZWFyYDtKKHgpLnRoZW4oKGEpPT57aWYoYS5leGl0Q29kZSE9PTApeihsNihhLnN0ZGVycil8fG51bGwpO2Vsc2UgeihudWxsKX0pfSxbSiwkXSkscj1EKChkKT0+e1koZCk7bGV0IHg9dDAuZmluZCgoYSk9PmEuaWQ9PT1kKTtpZih4KUcoeC5tb2RlKX0sW10pO2IoKCk9PigpPT57aWYoRi5jdXJyZW50PT09ImlkbGUiKXJldHVybjtsZXQgZD1TLmN1cnJlbnQseD1kP2B4Y3J1biBzaW1jdGwgbG9jYXRpb24gJHskfSBzZXQgJHtkLmxhdC50b0ZpeGVkKDcpfSwke2QubG5nLnRvRml4ZWQoNyl9YDpgeGNydW4gc2ltY3RsIGxvY2F0aW9uICR7JH0gY2xlYXJgO0ooeCkuY2F0Y2goKCk9Pnt9KX0sW0osJF0pO2xldCBRMT1MLnN0YXR1cz09PSJwbGF5aW5nIixOMT1RMT9gJHthMyhMLmFyYyl9IMK3ICR7cDYoTC5lbGFwc2VkTXMpfWA6YTMoSC50b3RhbERpc3RhbmNlKTtyZXR1cm4gWChlMSx7b3BlbjpRLG9uT3BlbkNoYW5nZTpaLHN1bW1hcnlDbGFzc05hbWU6ImdyaWQgW2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvX21pbm1heCgwLDFmcilfYXV0b10gW2NvbnRhaW5lci10eXBlOmlubGluZS1zaXplXSBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1sZWZ0IixzdW1tYXJ5OlgoWjEse2NoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIGxlYWRpbmctbm9uZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOiJMb2NhdGlvbiJ9KSxRP1goInNwYW4iLHsiZGF0YS1sb2NhdGlvbi1zdGF0dXMiOiEwLGNsYXNzTmFtZToibWluLXctMCB0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzU1IGZvbnQtbW9ubyBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBqdXN0aWZ5LXNlbGYtZW5kIGxlYWRpbmctbm9uZSB3aGl0ZXNwYWNlLW5vd3JhcCBvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpcyBtYXgtdy1mdWxsIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToic2l6ZS0xLjUgcm91bmRlZC1mdWxsIHNocmluay0wIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4ycyxib3gtc2hhZG93XzAuMnNdIixzdHlsZTp7YmFja2dyb3VuZDpRMT8iIzRhZGU4MCI6SC50b3RhbERpc3RhbmNlPjA/InJnYmEoMjU1LDI1NSwyNTUsMC4zKSI6InRyYW5zcGFyZW50Iixib3hTaGFkb3c6UTE/IjAgMCA2cHggcmdiYSg3NCwyMjIsMTI4LDAuNykiOiJub25lIn19KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJtaW4tdy0wIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIixjaGlsZHJlbjpOMX0pLCFRMSYmWCgic3BhbiIseyJkYXRhLWxvY2F0aW9uLXN0YXR1cy10b3RhbCI6ITAsY2xhc3NOYW1lOiJzaHJpbmstMCIsY2hpbGRyZW46InRvdGFsIn0pXX0pOlgoInNwYW4iLHt9KV19KSxjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0xIixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSBibG9jayIsY2hpbGRyZW46W1gocDUse2xhYmVsOiJUcmFpbCIsdmFsdWU6SyxvbkNoYW5nZTpyLG9wdGlvbnM6dDAubWFwKChkKT0+KHt2YWx1ZTpkLmlkLGxhYmVsOmQubmFtZX0pKSxjbGFzc05hbWU6ImJnLXdoaXRlL1swLjA0XSBib3JkZXIgYm9yZGVyLXdoaXRlLzggcm91bmRlZC1tZCB0ZXh0LXdoaXRlLzkwIHRleHQtWzEycHhdIHB5LTEuNSBwci1bMjZweF0gcGwtMiB3LWZ1bGwgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjEycyxib3JkZXItY29sb3JfMC4xMnNdIGhvdmVyOmJnLXdoaXRlL1swLjA3XSBob3Zlcjpib3JkZXItW3JnYmEoMjU1LDI1NSwyNTUsMC4xNildIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpiZy13aGl0ZS9bMC4wOF0gZm9jdXM6Ym9yZGVyLVtyZ2JhKDI1NSwyNTUsMjU1LDAuMjQpXSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSByaWdodC1bOXB4XSB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgcG9pbnRlci1ldmVudHMtbm9uZSBmbGV4IGl0ZW1zLWNlbnRlciIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WChtMix7b3BlbjohMX0pfSldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMHB4XSB0ZXh0LXdoaXRlLzQ1IixjaGlsZHJlbjprLmRlc2NyaXB0aW9ufSldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSB3LWZ1bGwgcm91bmRlZC1bMTBweF0gb3ZlcmZsb3ctaGlkZGVuIGJnLVsjMGEwYTBjXSBib3JkZXIgYm9yZGVyLXdoaXRlL1swLjA2XSBbYXNwZWN0LXJhdGlvOjE2LzExXSIsY2hpbGRyZW46W1goImNhbnZhcyIse3JlZjpjLGNsYXNzTmFtZToidy1mdWxsIGgtZnVsbCBibG9jayJ9KSxYKHJKLHtwcmVwYXJlZDpIfSldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyXzFmcl8xZnJdIGdhcC0xLjUiLGNoaWxkcmVuOltYKGkzLHtsYWJlbDoiRGlzdGFuY2UiLHZhbHVlOmEzKEwuYXJjKX0pLFgoaTMse2xhYmVsOiJQYWNlIix2YWx1ZTokUShPLmN1cnJlbnQpfSksWChpMyx7bGFiZWw6IkVsYXBzZWQiLHZhbHVlOnA2KEwuZWxhcHNlZE1zKX0pXX0pLFgoImRpdiIse2NsYXNzTmFtZToiZmxleCBnYXAtMS41IixjaGlsZHJlbjpbWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOm4sY2xhc3NOYW1lOmBmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEuNSBweS0yIHB4LTIuNSBib3JkZXItbm9uZSByb3VuZGVkLVs3cHhdIHRleHQtWzEycHhdIGZvbnQtc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgZm9udC1baW5oZXJpdF0gJHtRMT8iYmctd2hpdGUvWzAuMTZdIHRleHQtd2hpdGUgZW5hYmxlZDpob3ZlcjpiZy13aGl0ZS9bMC4yMl0iOiJiZy1zdWNjZXNzLWVtZXJhbGQgdGV4dC1bIzA2MjAxOF0gZW5hYmxlZDpob3ZlcjpicmlnaHRuZXNzLVsxLjA4XSJ9YCwiYXJpYS1wcmVzc2VkIjpRMSx0aXRsZTpRMT8iUGF1c2UiOiJQbGF5IixjaGlsZHJlbjpbUTE/WChEMyx7fSk6WChwMix7fSksWCgic3BhbiIse2NoaWxkcmVuOlExPyJQYXVzZSI6IlBsYXkifSldfSksWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOm8sY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMS41IHB5LTIgcHgtMyBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHJvdW5kZWQtWzdweF0gdGV4dC1bMTJweF0gZm9udC1tZWRpdW0gYmctdHJhbnNwYXJlbnQgdGV4dC13aGl0ZS84NSBjdXJzb3ItcG9pbnRlciBmb250LVtpbmhlcml0XSBlbmFibGVkOmhvdmVyOmJnLXdoaXRlL1swLjA2XSBlbmFibGVkOmhvdmVyOmJvcmRlci13aGl0ZS8yMCBlbmFibGVkOmhvdmVyOnRleHQtd2hpdGUgZGlzYWJsZWQ6b3BhY2l0eS00MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQiLGRpc2FibGVkOkwuc3RhdHVzPT09ImlkbGUiJiZMLmFyYz09PTAsdGl0bGU6IlN0b3AgYW5kIGNsZWFyIHNpbXVsYXRlZCBsb2NhdGlvbiIsY2hpbGRyZW46W1godTIse30pLFgoInNwYW4iLHtjaGlsZHJlbjoiU3RvcCJ9KV19KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1yb3cgaXRlbXMtc3RyZXRjaCBnYXAtMS41IixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4LTEgbWluLXctMCIsY2hpbGRyZW46WChvSix7YXJpYUxhYmVsOiJUcmFuc3BvcnQgbW9kZSIsdmFsdWU6cSxvbkNoYW5nZTooZCk9PkcoZCksb3B0aW9uczpbe3ZhbHVlOiJ3YWxrIixsYWJlbDoiV2FsayIsaWNvbjpYKFQzLHt9KX0se3ZhbHVlOiJydW4iLGxhYmVsOiJSdW4iLGljb246WChJMyx7fSl9LHt2YWx1ZToiY3ljbGUiLGxhYmVsOiJDeWNsZSIsaWNvbjpYKEUzLHt9KX0se3ZhbHVlOiJkcml2ZSIsbGFiZWw6IkRyaXZlIixpY29uOlgoeTMse30pfV19KX0pLFgoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+e2xldCBkPW8zLmluZGV4T2YoTikseD1vM1soZCsxKSVvMy5sZW5ndGhdO0IoeCl9LGNsYXNzTmFtZTpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEgcHgtMi41IGJvcmRlciByb3VuZGVkLVs3cHhdIGN1cnNvci1wb2ludGVyIGZvbnQtW2luaGVyaXRdIHRleHQtWzExcHhdIGZvbnQtc2VtaWJvbGQgbWluLXctWzU2cHhdIGFjdGl2ZTpzY2FsZS1bMC45N10gJHtOPjE/ImJnLXdoaXRlIGJvcmRlci13aGl0ZSB0ZXh0LVsjMGEwYTBjXSBob3ZlcjpiZy13aGl0ZS9bMC44OF0gaG92ZXI6Ym9yZGVyLXdoaXRlL1swLjg4XSBob3Zlcjp0ZXh0LVsjMGEwYTBjXSI6ImJnLXdoaXRlL1swLjA0XSBib3JkZXItd2hpdGUvOCB0ZXh0LXdoaXRlLzg1IGhvdmVyOmJnLXdoaXRlL1swLjA5XSBob3Zlcjpib3JkZXItW3JnYmEoMjU1LDI1NSwyNTUsMC4xOCldIGhvdmVyOnRleHQtd2hpdGUifWAsImFyaWEtbGFiZWwiOmBTcGVlZCAke059w5cg4oCUIHRhcCB0byBjeWNsZWAsdGl0bGU6YFNwZWVkICR7Tn3DlyDigJQgdGFwIHRvIGN5Y2xlYCxjaGlsZHJlbjpbWCh3Myx7fSksTj4xJiZYKCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LW1vbm8gW2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc10iLGNoaWxkcmVuOltOLCLDlyJdfSldfSldfSksVSYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJiZy1kYW5nZXIvMTAgYm9yZGVyIGJvcmRlci1kYW5nZXIvMjAgdGV4dC1kYW5nZXItc29mdCB0ZXh0LVsxMXB4XSBweC0yIHB5LTEuNSByb3VuZGVkLW1kIixjaGlsZHJlbjpVfSldfSl9dmFyIGkzPWMwKGZ1bmN0aW9uKHtsYWJlbDpKLHZhbHVlOlF9KXtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0wLjUgYmctd2hpdGUvWzAuMDNdIGJvcmRlciBib3JkZXItd2hpdGUvWzAuMDZdIHJvdW5kZWQtbWQgcHktWzVweF0gcHgtWzdweF0gbWluLXctMCIsY2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToidGV4dC1bOXB4XSB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMDZlbV0gdGV4dC13aGl0ZS80NSIsY2hpbGRyZW46Sn0pLFgoImRpdiIse2NsYXNzTmFtZToidGV4dC1bMTJweF0gZm9udC1tb25vIHRleHQtd2hpdGUgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAiLGNoaWxkcmVuOlF9KV19KX0pO2Z1bmN0aW9uIG9KKHt2YWx1ZTokLG9uQ2hhbmdlOkosb3B0aW9uczpRLGFyaWFMYWJlbDpafSl7cmV0dXJuIFgoImRpdiIse3JvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbCI6WixjbGFzc05hbWU6ImZsZXggYmctd2hpdGUvWzAuMDRdIGJvcmRlciBib3JkZXItd2hpdGUvOCByb3VuZGVkLVs3cHhdIHAtMC41IGdhcC0wLjUiLGNoaWxkcmVuOlEubWFwKChLKT0+e2xldCBZPUsudmFsdWU9PT0kO3JldHVybiBYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PkooSy52YWx1ZSksY2xhc3NOYW1lOmBmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLW5vbmUgcm91bmRlZC1bNXB4XSBweS1bNXB4XSBweC0yIHRleHQtWzExcHhdIGZvbnQtbWVkaXVtIGN1cnNvci1wb2ludGVyIGZvbnQtW2luaGVyaXRdIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xMnMsY29sb3JfMC4xMnNdIG1pbi1oLVsyMnB4XSAke1k/ImJnLXdoaXRlL1swLjEyXSB0ZXh0LXdoaXRlIjoiYmctdHJhbnNwYXJlbnQgdGV4dC13aGl0ZS82MCBob3ZlcjpiZy13aGl0ZS9bMC4wNV0gaG92ZXI6dGV4dC13aGl0ZS85MCJ9YCwiYXJpYS1wcmVzc2VkIjpZLCJhcmlhLWxhYmVsIjpLLmljb24/Sy5sYWJlbDp2b2lkIDAsdGl0bGU6Sy5pY29uP0subGFiZWw6dm9pZCAwLGNoaWxkcmVuOksuaWNvbj8/Sy5sYWJlbH0sSy52YWx1ZSl9KX0pfWZ1bmN0aW9uIHJKKHtwcmVwYXJlZDokfSl7aWYoJC5yYXdNYXhBbHQtJC5yYXdNaW5BbHQ8NSlyZXR1cm4gbnVsbDtyZXR1cm4gWChaMSx7Y2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgdG9wLTIgbGVmdC0yLjUgYmctcGFuZWwtb3ZlcmxheSB0ZXh0LXdoaXRlLzg1IHRleHQtWzEwcHhdIGZvbnQtbW9ubyBweC0xLjUgcHktMC41IHJvdW5kZWQtWzVweF0gZmxleCBpdGVtcy1jZW50ZXIgdHJhY2tpbmctWzAuMDJlbV0gYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4wNl0iLGNoaWxkcmVuOltYKFA1LHtkaXI6InVwIn0pLCIgIix1NigkLnJhd01heEFsdCldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSB0b3AtMiByaWdodC0yLjUgYmctcGFuZWwtb3ZlcmxheSB0ZXh0LXdoaXRlLzg1IHRleHQtWzEwcHhdIGZvbnQtbW9ubyBweC0xLjUgcHktMC41IHJvdW5kZWQtWzVweF0gZmxleCBpdGVtcy1jZW50ZXIgdHJhY2tpbmctWzAuMDJlbV0gYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4wNl0iLGNoaWxkcmVuOltYKFA1LHtkaXI6ImRvd24ifSksIiAiLHU2KCQucmF3TWluQWx0KV19KV19KX12YXIgZjY9MTQwO2Z1bmN0aW9uIG02KCQsSil7bGV0IFE9QXJyYXkoSik7Zm9yKGxldCBaPTA7WjxKO1orKyl7bGV0IEs9Sj09PTE/MDpaLyhKLTEpLFk9czAoJCxLKiQudG90YWxEaXN0YW5jZSk7UVtaXT17eDpZLngseTpZLnksejpZLnp9fXJldHVybiBRfWZ1bmN0aW9uIGlKKCQsSixRLFope2xldCBLPSgkLmJvdW5kcy54WzBdKyQuYm91bmRzLnhbMV0pLzIsWT0oJC5ib3VuZHMuelswXSskLmJvdW5kcy56WzFdKS8yLHE9JC5ib3VuZHMueVswXSxHPU1hdGgubWF4KDEsJC5ib3VuZHMueFsxXS0kLmJvdW5kcy54WzBdLCQuYm91bmRzLnpbMV0tJC5ib3VuZHMuelswXSksTj0oUS5ib3VuZHMueFswXStRLmJvdW5kcy54WzFdKS8yLEI9KFEuYm91bmRzLnpbMF0rUS5ib3VuZHMuelsxXSkvMixMPVEuYm91bmRzLnlbMF0sVT1NYXRoLm1heCgxLFEuYm91bmRzLnhbMV0tUS5ib3VuZHMueFswXSxRLmJvdW5kcy56WzFdLVEuYm91bmRzLnpbMF0pL0csaz1tNigkLGY2KS5tYXAoKGopPT4oe3g6KGoueC1LKSpVK04seTooai55LXEpKlUrTCx6OihqLnotWSkqVStCfSkpLEg9bTYoUSxmNiksQz0oJC50cmFpbC5sb29wfHxRLnRyYWlsLmxvb3ApPz8hMSxGPWFKKGssSCxDKSxPPXMwKCQsSiksST17eDooTy54LUspKlUrTix5OihPLnktcSkqVStMLHo6KE8uei1ZKSpVK0J9LHc9czAoUSwwKSxTPXt4OncueCx5OncueSx6Oncuen07cmV0dXJue2Zyb206JCx0bzpRLGZyb21QdHM6ayx0b1B0czpGLHByZXZNYXJrZXI6SSxuZXh0TWFya2VyOlMsc3RhcnRNczpafX1mdW5jdGlvbiBhSigkLEosUSl7bGV0IFo9JC5sZW5ndGgsSz0xLzAsWT0wLHE9ITEsRz1bSixbLi4uSl0ucmV2ZXJzZSgpXTtmb3IobGV0IEw9MDtMPEcubGVuZ3RoO0wrKyl7bGV0IFY9R1tMXSxVPVE/WjoxO2ZvcihsZXQgej0wO3o8VTt6Kyspe2xldCBrPTA7Zm9yKGxldCBIPTA7SDxaO0grKyl7bGV0IEM9JFtIXSxGPVZbKEgreiklWl0sTz1DLngtRi54LEk9Qy55LUYueSx3PUMuei1GLno7aWYoays9TypPK0kqSSt3Kncsaz49SylicmVha31pZihrPEspSz1rLFk9eixxPUw9PT0xfX1sZXQgTj1xP1suLi5KXS5yZXZlcnNlKCk6SixCPUFycmF5KFopO2ZvcihsZXQgTD0wO0w8WjtMKyspQltMXT1OWyhMK1kpJVpdO3JldHVybiBCfWZ1bmN0aW9uIG5KKCQsSil7bGV0IFE9JC5mcm9tUHRzLmxlbmd0aCxaPUFycmF5KFEpLEs9MCxZPW51bGwscT0xLzAsRz0tMS8wLE49MS8wLEI9LTEvMCxMPTEvMCxWPS0xLzA7Zm9yKGxldCBVPTA7VTxRO1UrKyl7bGV0IHo9JC5mcm9tUHRzW1VdLGs9JC50b1B0c1tVXSxIPXoueCsoay54LXoueCkqSixDPXoueSsoay55LXoueSkqSixGPXoueisoay56LXoueikqSjtpZihZKXtsZXQgST1ILVkueCx3PUMtWS55LFM9Ri1ZLno7Sys9TWF0aC5zcXJ0KEkqSSt3KncrUypTKX1sZXQgTz17eDpILHk6Qyx6OkYsYXJjOkssbGF0OjAsbG5nOjB9O2lmKFpbVV09TyxZPU8sSDxxKXE9SDtpZihIPkcpRz1IO2lmKEM8TilOPUM7aWYoQz5CKUI9QztpZihGPEwpTD1GO2lmKEY+VilWPUZ9cmV0dXJue3RyYWlsOiQudG8udHJhaWwsb3JpZ2luOiQudG8ub3JpZ2luLHBvaW50czpaLHRvdGFsRGlzdGFuY2U6Syxib3VuZHM6e3g6W3EsR10seTpbTixCXSx6OltMLFZdfSxyYXdNaW5BbHQ6JC50by5yYXdNaW5BbHQrKCQuZnJvbS5yYXdNaW5BbHQtJC50by5yYXdNaW5BbHQpKigxLUopLHJhd01heEFsdDokLnRvLnJhd01heEFsdCsoJC5mcm9tLnJhd01heEFsdC0kLnRvLnJhd01heEFsdCkqKDEtSil9fWZ1bmN0aW9uIHNKKCQpe3JldHVybiAkPDAuNT8yKiQqJDoxLU1hdGgucG93KC0yKiQrMiwyKS8yfWZ1bmN0aW9uIHRKKCQsSixRLFosSyxZLHEpe2xldCBHPSQuZ2V0Q29udGV4dCgiMmQiKTtpZighRylyZXR1cm47bGV0e2NsaWVudFdpZHRoOk4sY2xpZW50SGVpZ2h0OkJ9PSQ7aWYoTj09PTB8fEI9PT0wKXJldHVybjtsZXQgTD10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MToxLFY9TWF0aC5yb3VuZChOKkwpLFU9TWF0aC5yb3VuZChCKkwpO2lmKCQud2lkdGghPT1WfHwkLmhlaWdodCE9PVUpJC53aWR0aD1WLCQuaGVpZ2h0PVU7Ry5zZXRUcmFuc2Zvcm0oTCwwLDAsTCwwLDApLEcuY2xlYXJSZWN0KDAsMCxOLEIpO2xldCB6PUcuY3JlYXRlUmFkaWFsR3JhZGllbnQoTiowLjUsQiowLjU1LE1hdGgubWluKE4sQikqMC4yLE4qMC41LEIqMC41NSxNYXRoLm1heChOLEIpKjAuODUpO3ouYWRkQ29sb3JTdG9wKDAsIiMxYTFhMWQiKSx6LmFkZENvbG9yU3RvcCgxLCIjMGEwYTBjIiksRy5maWxsU3R5bGU9eixHLmZpbGxSZWN0KDAsMCxOLEIpLGVKKEcsTixCKTtsZXR7cG9pbnRzOmssYm91bmRzOkh9PUo7aWYoay5sZW5ndGg8MilyZXR1cm47bGV0IEM9MjgqTWF0aC5QSS8xODAsRj1NYXRoLnNpbihDKSxPPU1hdGguY29zKEMpLEk9TWF0aC5zaW4oWiksdz1NYXRoLmNvcyhaKSxTPShILnhbMF0rSC54WzFdKS8yLGo9KEguelswXStILnpbMV0pLzIsJDE9SC54WzFdLUgueFswXSxtPUguelsxXS1ILnpbMF0sYz1ILnlbMV0tSC55WzBdLG49TWF0aC5tYXgoJDEsbSkqMS4wNSxvPU1hdGgubWF4KG0qTytjKkYsJDEqMC40KSoxLjE1LHI9TiowLjA4LFExPUIqMC4xOCxOMT1NYXRoLm1pbigoTi1yKjIpL24sKEItUTEqMikvbykqMS40NSxkPWM8MT8xOk1hdGgubWluKDI0LDE0MC9NYXRoLm1heCgyMCxjKSkseD0oeSxnLF8pPT57bGV0IHA9eS1TLHU9Xy1qLHY9cCp3K3UqSSxHMT0tcCpJK3Uqdyx6MT1nKmQsQTE9ejEqTy1HMSpGLFcxPXoxKkYrRzEqTztyZXR1cm57c3g6Ti8yK3YqTjEsc3k6QiowLjU1LUExKk4xLGRlcHRoOlcxfX0sYT0zOCxLMT1rLm1hcCgoeSk9PntsZXQgZz14KHkueCx5LnkseS56KSxfPXgoeS54LDAseS56KSxwPXtzeDpnLnN4LHN5Ok1hdGgubWF4KF8uc3ksZy5zeSthKSxkZXB0aDpfLmRlcHRofTtyZXR1cm57cDp5LHRvcDpnLGJvdDpwfX0pO2ZvcihsZXQgeT0xO3k8SzEubGVuZ3RoO3krKyl7bGV0IGc9SzFbeS0xXSxfPUsxW3ldLHA9Ry5jcmVhdGVMaW5lYXJHcmFkaWVudCgoZy50b3Auc3grXy50b3Auc3gpLzIsKGcudG9wLnN5K18udG9wLnN5KS8yLChnLmJvdC5zeCtfLmJvdC5zeCkvMiwoZy5ib3Quc3krXy5ib3Quc3kpLzIpO3AuYWRkQ29sb3JTdG9wKDAsInJnYmEoMjU1LDI1NSwyNTUsMC41NSkiKSxwLmFkZENvbG9yU3RvcCgwLjQ1LCJyZ2JhKDE4MCwxODAsMTg1LDAuMjgpIikscC5hZGRDb2xvclN0b3AoMC44NSwicmdiYSg0MCw0MCw0NSwwLjE4KSIpLHAuYWRkQ29sb3JTdG9wKDEsInJnYmEoMCwwLDAsMCkiKSxHLmZpbGxTdHlsZT1wLEcuYmVnaW5QYXRoKCksRy5tb3ZlVG8oZy50b3Auc3gsZy50b3Auc3kpLEcubGluZVRvKF8udG9wLnN4LF8udG9wLnN5KSxHLmxpbmVUbyhfLmJvdC5zeCxfLmJvdC5zeSksRy5saW5lVG8oZy5ib3Quc3gsZy5ib3Quc3kpLEcuY2xvc2VQYXRoKCksRy5maWxsKCl9Ry5zdHJva2VTdHlsZT0iI2ZmZmZmZiIsRy5saW5lV2lkdGg9MS42LEcubGluZUNhcD0icm91bmQiLEcubGluZUpvaW49InJvdW5kIixHLmJlZ2luUGF0aCgpO2ZvcihsZXQgeT0wO3k8SzEubGVuZ3RoO3krKyl7bGV0e3RvcDpnfT1LMVt5XTtpZih5PT09MClHLm1vdmVUbyhnLnN4LGcuc3kpO2Vsc2UgRy5saW5lVG8oZy5zeCxnLnN5KX1HLnN0cm9rZSgpO2xldCBMMT1RO0cuc3Ryb2tlU3R5bGU9IiNmOWQyYTQiLEcubGluZVdpZHRoPTIuMixHLmJlZ2luUGF0aCgpO2xldCBKMT0hMTtmb3IobGV0IHk9MDt5PEsxLmxlbmd0aDt5Kyspe2xldHtwOmcsdG9wOl99PUsxW3ldO2lmKGcuYXJjPkwxKWJyZWFrO2lmKCFKMSlHLm1vdmVUbyhfLnN4LF8uc3kpLEoxPSEwO2Vsc2UgRy5saW5lVG8oXy5zeCxfLnN5KX1pZihKMSlHLnN0cm9rZSgpO2xldCBZMT1xPz9zMChKLFEpLEMxPXgoWTEueCxZMS55LFkxLnopO2lmKFkpe2xldCBfPUslMjYwMC8yNjAwLHA9NCsyMipfLHU9MC4yMiooMS1fKSx2PUcuY3JlYXRlUmFkaWFsR3JhZGllbnQoQzEuc3gsQzEuc3kscCowLjUsQzEuc3gsQzEuc3kscCk7di5hZGRDb2xvclN0b3AoMCwicmdiYSgyNTUsMjU1LDI1NSwwKSIpLHYuYWRkQ29sb3JTdG9wKDAuNyxgcmdiYSgyNTUsMjU1LDI1NSwke3UudG9GaXhlZCgzKX0pYCksdi5hZGRDb2xvclN0b3AoMSwicmdiYSgyNTUsMjU1LDI1NSwwKSIpLEcuZmlsbFN0eWxlPXYsRy5iZWdpblBhdGgoKSxHLmFyYyhDMS5zeCxDMS5zeSxwLDAsTWF0aC5QSSoyKSxHLmZpbGwoKX1HLmZpbGxTdHlsZT0iI2ZmZiIsRy5iZWdpblBhdGgoKSxHLmFyYyhDMS5zeCxDMS5zeSwzLjgsMCxNYXRoLlBJKjIpLEcuZmlsbCgpfWZ1bmN0aW9uIGVKKCQsSixRKXskLmZpbGxTdHlsZT0icmdiYSgyNTUsMjU1LDI1NSwwLjA2KSI7Zm9yKGxldCBZPTc7WTxRO1krPTE0KWZvcihsZXQgcT03O3E8SjtxKz0xNCkkLmJlZ2luUGF0aCgpLCQuYXJjKHEsWSwwLjcsMCxNYXRoLlBJKjIpLCQuZmlsbCgpfWZ1bmN0aW9uIGEzKCQpe2lmKCQ8MTAwMClyZXR1cm5gJHskLnRvRml4ZWQoMCl9IG1gO3JldHVybmAkeygkLzEwMDApLnRvRml4ZWQoMil9IGttYH1mdW5jdGlvbiBwNigkKXtsZXQgSj1NYXRoLmZsb29yKCQvMTAwMCksUT1NYXRoLmZsb29yKEovMzYwMCksWj1NYXRoLmZsb29yKEolMzYwMC82MCksSz1KJTYwO2lmKFE+MClyZXR1cm5gJHtRfToke1oudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7Sy50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gO3JldHVybmAke1p9OiR7Sy50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gfWZ1bmN0aW9uICRRKCQpe2lmKCQ8PTApcmV0dXJuIuKAlCI7aWYoJD43KXJldHVybmAkeygkKjMuNikudG9GaXhlZCgwKX0ga20vaGA7bGV0IEo9MTAwMC8kLFE9TWF0aC5mbG9vcihKLzYwKSxaPU1hdGgucm91bmQoSiU2MCk7cmV0dXJuYCR7UX06JHtaLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS9rbWB9ZnVuY3Rpb24gdTYoJCl7cmV0dXJuYCR7JC50b0ZpeGVkKDApfSBtYH1mdW5jdGlvbiBsNigkKXtsZXQgSj0kLnRyaW0oKTtpZighSilyZXR1cm4iIjtsZXQgUT1KLm1hdGNoKC9SZWFzb246XHMqKC4rKSQvbSk7aWYoUSlyZXR1cm4gUVsxXTtyZXR1cm4gSi5zcGxpdChgCmApLnNsaWNlKC0xKVswXT8/Sn1hc3luYyBmdW5jdGlvbiBuMygkLEosUSl7bGV0IFo9YXdhaXQgJChgeGNydW4gc2ltY3RsIGdldF9hcHBfY29udGFpbmVyICR7Sn0gJHtNMShRKX0gYXBwYCk7aWYoWi5leGl0Q29kZSE9PTApcmV0dXJue2Vycm9yOlouc3RkZXJyLnRyaW0oKXx8IkFwcCBub3QgZm91bmQgb24gc2ltdWxhdG9yIn07bGV0IEs9Wi5zdGRvdXQudHJpbSgpO2lmKCFLKXJldHVybntlcnJvcjoiRW1wdHkgYXBwIHBhdGgifTtsZXQgWT1hd2FpdCAkKGBwbHV0aWwgLWNvbnZlcnQganNvbiAtbyAtICR7TTEoSysiL0luZm8ucGxpc3QiKX1gKSxxPXt9O2lmKFkuZXhpdENvZGU9PT0wKXRyeXtxPUpTT04ucGFyc2UoWS5zdGRvdXQpfWNhdGNoe31sZXQgRyxCPShxPy5DRkJ1bmRsZUljb25zPy5DRkJ1bmRsZVByaW1hcnlJY29uPz9xPy5bIkNGQnVuZGxlSWNvbnN+aXBhZCJdPy5DRkJ1bmRsZVByaW1hcnlJY29uKT8uQ0ZCdW5kbGVJY29uRmlsZXM/P3E/LkNGQnVuZGxlSWNvbkZpbGVzO2lmKEImJkIubGVuZ3RoPjApRz1CW0IubGVuZ3RoLTFdO2Vsc2UgaWYodHlwZW9mIHE/LkNGQnVuZGxlSWNvbkZpbGU9PT0ic3RyaW5nIilHPXEuQ0ZCdW5kbGVJY29uRmlsZTtsZXQgTD1udWxsO2lmKEcpe2xldCBWPVtgJHtHfUAzeC5wbmdgLGAke0d9QDJ4LnBuZ2AsYCR7R30ucG5nYCxgJHtHfTYweDYwQDN4LnBuZ2AsYCR7R302MHg2MEAyeC5wbmdgXSx6PShhd2FpdCAkKGBiYXNoIC1jICR7TTEoVi5tYXAoKGspPT5gWyAtZiAke00xKEsrIi8iK2spfSBdICYmIGVjaG8gJHtNMShLKyIvIitrKX0gJiYgZXhpdCAwYCkuam9pbigiOyAiKSsiOyBleGl0IDEiKX1gKSkuc3Rkb3V0LnRyaW0oKTtpZih6KXtsZXQgaz1hd2FpdCAkKGBiYXNlNjQgLWkgJHtNMSh6KX1gKTtpZihrLmV4aXRDb2RlPT09MClMPWBkYXRhOmltYWdlL3BuZztiYXNlNjQsJHtrLnN0ZG91dC5yZXBsYWNlKC9ccysvZywiIil9YH19cmV0dXJue2FwcFBhdGg6SyxkaXNwbGF5TmFtZTpxLkNGQnVuZGxlRGlzcGxheU5hbWU/P3EuQ0ZCdW5kbGVOYW1lLHNob3J0VmVyc2lvbjpxLkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nLGJ1bmRsZVZlcnNpb246cS5DRkJ1bmRsZVZlcnNpb24sbWluT1M6cS5NaW5pbXVtT1NWZXJzaW9uLGV4ZWN1dGFibGU6cS5DRkJ1bmRsZUV4ZWN1dGFibGUsaWNvbkRhdGFVcmw6TH19dmFyIEgyPW5ldyBNYXA7ZnVuY3Rpb24gYzYoJCxKLFEpe2xldCBaPWAke0p9OiR7UX1gLEs9SDIuZ2V0KFopO2lmKEshPT12b2lkIDApcmV0dXJuIFByb21pc2UucmVzb2x2ZShLKTtsZXQgWT1uMygkLEosUSkudGhlbigocSk9PntsZXQgRz1xLmljb25EYXRhVXJsPz9udWxsO3JldHVybiBIMi5zZXQoWixHKSxHfSkuY2F0Y2goKCk9PntyZXR1cm4gSDIuc2V0KFosbnVsbCksbnVsbH0pO3JldHVybiBIMi5zZXQoWixZKSxZfWZ1bmN0aW9uIEpRKCQpe3JldHVybiAkLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS4iKX1mdW5jdGlvbiBRUSgkKXtpZigkPT09ImNvbS5hcHBsZS5zcHJpbmdib2FyZCIpcmV0dXJuIlNwcmluZ0JvYXJkIjtyZXR1cm4gJH1mdW5jdGlvbiBaUSh7YnVuZGxlSWQ6JH0pe2xldCBKPUpRKCQpO3JldHVybiBYKCJkaXYiLHsiZGF0YS10ZXN0aWQiOko/InN5c3RlbS1hcHAtaWNvbiI6ImFwcC1pY29uLWZhbGxiYWNrIixjbGFzc05hbWU6YHctMTAgaC0xMCByb3VuZGVkLVs4cHhdIHNocmluay0wIGJvcmRlciBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciAke0o/ImJvcmRlci1bIzNiNWY5OV0gYmctW2xpbmVhci1ncmFkaWVudCgxNDVkZWcsIzI1M2E1ZiwjMTYyMTMyKV0gdGV4dC1bI2M4ZDdmZl0iOiJib3JkZXItd2hpdGUvMTAgYmctd2hpdGUvWzAuMDZdIHRleHQtd2hpdGUvODAifWAsImFyaWEtbGFiZWwiOko/IlN5c3RlbSBhcHAiOiJBcHAgaWNvbiB1bmF2YWlsYWJsZSIsdGl0bGU6Sj8iU3lzdGVtIGFwcCI6IkFwcCBpY29uIHVuYXZhaWxhYmxlIixjaGlsZHJlbjpKP1goInN2ZyIse3JvbGU6ImltZyIsdmlld0JveDoiMCAwIDI0IDI0Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNsYXNzTmFtZToic2l6ZS1bMTlweF0iLGZpbGw6ImN1cnJlbnRDb2xvciIsY2hpbGRyZW46W1goInRpdGxlIix7Y2hpbGRyZW46IkFwcGxlIn0pLFgoInBhdGgiLHtkOiJNMTIuMTUyIDYuODk2Yy0uOTQ4IDAtMi40MTUtMS4wNzgtMy45Ni0xLjA0LTIuMDQuMDI3LTMuOTEgMS4xODMtNC45NjEgMy4wMTQtMi4xMTcgMy42NzUtLjU0NiA5LjEwMyAxLjUxOSAxMi4wOSAxLjAxMyAxLjQ1NCAyLjIwOCAzLjA5IDMuNzkyIDMuMDM5IDEuNTItLjA2NSAyLjA5LS45ODcgMy45MzUtLjk4NyAxLjgzMSAwIDIuMzUuOTg3IDMuOTYuOTQ4IDEuNjM3LS4wMjYgMi42NzYtMS40OCAzLjY3Ni0yLjk0OCAxLjE1Ni0xLjY4OCAxLjYzNi0zLjMyNSAxLjY2Mi0zLjQxNS0uMDM5LS4wMTMtMy4xODItMS4yMjEtMy4yMi00Ljg1Ny0uMDI2LTMuMDQgMi40OC00LjQ5NCAyLjU5Ny00LjU1OS0xLjQyOS0yLjA5LTMuNjIzLTIuMzI0LTQuMzktMi4zNzYtMi0uMTU2LTMuNjc1IDEuMDktNC42MSAxLjA5ek0xNS41MyAzLjgzYy44NDMtMS4wMTIgMS40LTIuNDI3IDEuMjQ1LTMuODMtMS4yMDcuMDUyLTIuNjYyLjgwNS0zLjUzMiAxLjgxOC0uNzguODk2LTEuNDU0IDIuMzM4LTEuMjczIDMuNzE0IDEuMzM4LjEwNCAyLjcxNS0uNjg4IDMuNTU5LTEuNzAxIn0pXX0pOlgoVDIse3NpemU6MTksc3Ryb2tlV2lkdGg6MS45fSl9KX1mdW5jdGlvbiBYUSh7YnVuZGxlSWQ6JCxpY29uRGF0YVVybDpKfSl7aWYoSilyZXR1cm4gWCgiaW1nIix7c3JjOkosY2xhc3NOYW1lOiJ3LTEwIGgtMTAgcm91bmRlZC1bOHB4XSBzaHJpbmstMCBvYmplY3QtY292ZXIgYm9yZGVyIGJvcmRlci13aGl0ZS84IixhbHQ6IiJ9KTtyZXR1cm4gWChaUSx7YnVuZGxlSWQ6JH0pfWZ1bmN0aW9uIG82KHt1ZGlkOiQsY3VycmVudEFwcDpKfSl7bGV0W1EsWl09QShudWxsKSxbSyxZXT1BKCExKTtpZihiKCgpPT57aWYoIUope1oobnVsbCk7cmV0dXJufWxldCBxPSExO3JldHVybiBaKHtidW5kbGVJZDpKLmJ1bmRsZUlkLGlzUmVhY3ROYXRpdmU6Si5pc1JlYWN0TmF0aXZlLHBpZDpKLnBpZCxsb2FkaW5nOiEwfSksbjMoRTEsJCxKLmJ1bmRsZUlkKS50aGVuKChHKT0+e2lmKHEpcmV0dXJuO1ooe2J1bmRsZUlkOkouYnVuZGxlSWQsaXNSZWFjdE5hdGl2ZTpKLmlzUmVhY3ROYXRpdmUscGlkOkoucGlkLGxvYWRpbmc6ITEsLi4uR30pfSksKCk9PntxPSEwfX0sWyQsSixKPy5idW5kbGVJZCxKPy5waWQsSj8uaXNSZWFjdE5hdGl2ZV0pLCFRKXJldHVybiBYKEtRLHt9KTtyZXR1cm4gWChlMSx7b3BlbjpLLG9uT3BlbkNoYW5nZTpZLHN1bW1hcnlDbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIHRleHQtbGVmdCIsc3VtbWFyeTpYKFoxLHtjaGlsZHJlbjpbWChYUSx7YnVuZGxlSWQ6US5idW5kbGVJZCxpY29uRGF0YVVybDpRLmljb25EYXRhVXJsfSksWChZUSx7YnVuZGxlSWQ6US5idW5kbGVJZCxkaXNwbGF5TmFtZTpRLmRpc3BsYXlOYW1lfSldfSksY2hpbGRyZW46W1EuZXJyb3ImJlgoImRpdiIse2NsYXNzTmFtZToiYmctZGFuZ2VyLzEwIGJvcmRlciBib3JkZXItZGFuZ2VyLzIwIHRleHQtZGFuZ2VyLXNvZnQgdGV4dC1bMTFweF0gcHgtMiBweS0xLjUgcm91bmRlZC1tZCIsY2hpbGRyZW46US5lcnJvcn0pLFgoImRsIix7Y2xhc3NOYW1lOiJtLTAgZmxleCBmbGV4LWNvbCBnYXAtMS41IixjaGlsZHJlbjpbWChDMix7bGFiZWw6IlZlcnNpb24iLHZhbHVlOlEuc2hvcnRWZXJzaW9uP2Ake1Euc2hvcnRWZXJzaW9ufSAoJHtRLmJ1bmRsZVZlcnNpb24/PyLigJQifSlgOlEubG9hZGluZz8i4oCmIjoi4oCUIn0pLFgoQzIse2xhYmVsOiJNaW4gaU9TIix2YWx1ZTpRLm1pbk9TPz8oUS5sb2FkaW5nPyLigKYiOiLigJQiKX0pLFgoQzIse2xhYmVsOiJFeGVjdXRhYmxlIix2YWx1ZTpRLmV4ZWN1dGFibGU/PyhRLmxvYWRpbmc/IuKApiI6IuKAlCIpfSksWChDMix7bGFiZWw6IlBJRCIsdmFsdWU6US5waWQhPW51bGw/U3RyaW5nKFEucGlkKToi4oCUIn0pLFEuaXNSZWFjdE5hdGl2ZSYmWChDMix7bGFiZWw6IlJlYWN0IE5hdGl2ZSIsdmFsdWU6IlllcyJ9KSxYKEMyLHtsYWJlbDoiQXBwIHBhdGgiLHZhbHVlOlEuYXBwUGF0aD8/KFEubG9hZGluZz8i4oCmIjoi4oCUIiksbW9ubzohMCxhY3Rpb246US5hcHBQYXRoP3t0aXRsZToiUmV2ZWFsIGluIEZpbmRlciIsb25DbGljazooKT0+e0UxKGBvcGVuIC1SICR7TTEoUS5hcHBQYXRoKX1gKX0saWNvbjpYKEkyLHtzaXplOjExLHN0cm9rZVdpZHRoOjIuMn0pfTp2b2lkIDB9KV19KV19KX1mdW5jdGlvbiBLUSgpe3JldHVybiBYKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJhcHAtZGV0ZWN0aW9uLXNrZWxldG9uIixjbGFzc05hbWU6ImJnLXBhbmVsIHJvdW5kZWQtWzEwcHhdIHB4LTMgcHktMiIsImFyaWEtbGFiZWwiOiJXYWl0aW5nIGZvciBmb3JlZ3JvdW5kIGFwcCIsY2hpbGRyZW46WCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyB0ZXh0LWxlZnQgbWluLWgtWzM2cHhdIGxlYWRpbmctbm9uZSBweS0yLjUgcHgtMSAtbXktMiAtbXgtMSB3LVtjYWxjKDEwMCUrOHB4KV0iLGNoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ3LTEwIGgtMTAgcm91bmRlZC1bOHB4XSBzaHJpbmstMCBiZy13aGl0ZS9bMC4wOF0ifSksWCgic3BhbiIse2NsYXNzTmFtZToibWluLXctMCBmbGV4LTEgZmxleCBmbGV4LWNvbCBnYXAtMiIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6ImgtMy41IHctWzQ2JV0gcm91bmRlZC1mdWxsIGJnLXdoaXRlL1swLjEyXSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJoLTIuNSB3LVs2OCVdIHJvdW5kZWQtZnVsbCBiZy13aGl0ZS9bMC4wOF0ifSldfSksWCgic3BhbiIse2NsYXNzTmFtZToidy0yLjUgaC0yLjUgcm91bmRlZC1mdWxsIGJnLXdoaXRlL1swLjA4XSJ9KV19KX0pfWZ1bmN0aW9uIFlRKHtidW5kbGVJZDokLGRpc3BsYXlOYW1lOkp9KXtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOiJtaW4tdy0wIGZsZXgtMSBsZWFkaW5nLXRpZ2h0IHRleHQtbGVmdCIsY2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToidGV4dC1bMTNweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzkwIHRydW5jYXRlIixjaGlsZHJlbjpKPz9RUSgkKX0pLFgoImRpdiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gdGV4dC13aGl0ZS81NSBmb250LW1vbm8gdHJ1bmNhdGUiLHRpdGxlOiQsY2hpbGRyZW46JH0pXX0pfWZ1bmN0aW9uIEMyKHtsYWJlbDokLHZhbHVlOkosbW9ubzpRLGFjdGlvbjpafSl7cmV0dXJuIFgoImRpdiIse2NsYXNzTmFtZToiZ3JvdXAgZmxleCBpdGVtcy1iYXNlbGluZSBnYXAtMiBtaW4tdy0wIixjaGlsZHJlbjpbWCgiZHQiLHtjbGFzc05hbWU6Im0tMCB0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzUwIHctMjEgc2hyaW5rLTAiLGNoaWxkcmVuOiR9KSxYKCJkZCIse2NsYXNzTmFtZTpgbS0wIHRleHQtd2hpdGUvOTAgZmxleC0xIG1pbi13LTAgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgcmVsYXRpdmUgJHtRPyJmb250LW1vbm8gdGV4dC1bMTFweF0iOiJ0ZXh0LVsxMnB4XSJ9YCx0aXRsZTpKLGNoaWxkcmVuOltKLFomJlgoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBib3R0b20tMCBwbC03IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGJnLVtsaW5lYXItZ3JhZGllbnQodG9fcmlnaHQscmdiYSgyOCwyOCwzMCwwKV8wJSwjMWMxYzFlXzU1JSldIFt0cmFuc2l0aW9uOm9wYWNpdHlfMC4xNXNfZWFzZSx0cmFuc2Zvcm1fMC4xNXNfZWFzZV0gb3BhY2l0eS0wIHRyYW5zbGF0ZS14LTEgcG9pbnRlci1ldmVudHMtbm9uZSBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC0wIGdyb3VwLWhvdmVyOnBvaW50ZXItZXZlbnRzLWF1dG8iLGNoaWxkcmVuOlgoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazpaLm9uQ2xpY2ssdGl0bGU6Wi50aXRsZSwiYXJpYS1sYWJlbCI6Wi50aXRsZSxjbGFzc05hbWU6InctNSBoLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcm91bmRlZCB0ZXh0LXdoaXRlIGN1cnNvci1wb2ludGVyIHAtMCIsY2hpbGRyZW46Wi5pY29ufSl9KV19KV19KX12YXIgcjY9W3trZXk6ImNhbWVyYSIsbGFiZWw6IkNhbWVyYSJ9LHtrZXk6Im1pY3JvcGhvbmUiLGxhYmVsOiJNaWNyb3Bob25lIn0se2tleToicGhvdG9zIixsYWJlbDoiUGhvdG9zIn0se2tleToicGhvdG9zLWFkZCIsbGFiZWw6IkFkZCB0byBQaG90b3MifSx7a2V5OiJjb250YWN0cyIsbGFiZWw6IkNvbnRhY3RzIn0se2tleToiY2FsZW5kYXIiLGxhYmVsOiJDYWxlbmRhciJ9LHtrZXk6InJlbWluZGVycyIsbGFiZWw6IlJlbWluZGVycyJ9LHtrZXk6ImxvY2F0aW9uIixsYWJlbDoiTG9jYXRpb24ifSx7a2V5OiJsb2NhdGlvbi1hbHdheXMiLGxhYmVsOiJMb2NhdGlvbiAoQWx3YXlzKSJ9LHtrZXk6Im5vdGlmaWNhdGlvbnMiLGxhYmVsOiJOb3RpZmljYXRpb25zIn0se2tleToibW90aW9uIixsYWJlbDoiTW90aW9uIn0se2tleToibWVkaWEtbGlicmFyeSIsbGFiZWw6Ik1lZGlhIExpYnJhcnkifSx7a2V5OiJzaXJpIixsYWJlbDoiU2lyaSJ9XTtmdW5jdGlvbiBpNih7dWRpZDokLGJ1bmRsZUlkOkp9KXtsZXRbUSxaXT1BKHt9KSxbSyxZXT1BKG51bGwpLFtxLEddPUEobnVsbCksW04sQl09QSghMSksTD1UMSgoKT0+e2xldCB6PXR5cGVvZiB3aW5kb3c+InUiP3ZvaWQgMDp3aW5kb3cuX19TSU1fUFJFVklFV19fPy5zZXJ2ZVNpbUJpbjtpZigheilyZXR1cm4ic2VydmUtc2ltIjtpZigvXC50cyQvLnRlc3QoeikpcmV0dXJuYGJ1biAke00xKHopfWA7aWYoL1wuanMkLy50ZXN0KHopKXJldHVybmBub2RlICR7TTEoeil9YDtyZXR1cm4gTTEoeil9LFtdKTtiKCgpPT57Wih7fSksRyhudWxsKX0sW0pdKTtsZXQgVj1EKGFzeW5jKHosayk9PntpZighSilyZXR1cm47bGV0IEg9YCR7en06JHtrfWA7WShIKSxHKG51bGwpO3RyeXtsZXQgQz1hd2FpdCBFMShgJHtMfSBwZXJtaXNzaW9ucyAke2t9ICR7en0gJHtNMShKKX0gLWQgJHtNMSgkKX1gKTtpZihDLmV4aXRDb2RlIT09MCl7RyhDLnN0ZGVyci50cmltKCl8fGBzZXJ2ZS1zaW0gcGVybWlzc2lvbnMgZmFpbGVkIChleGl0ICR7Qy5leGl0Q29kZX0pYCk7cmV0dXJufVooKEYpPT4oey4uLkYsW3pdOms9PT0icmVzZXQiP3ZvaWQgMDprfSkpfWZpbmFsbHl7WShudWxsKX19LFtMLCQsSl0pLFU9RChhc3luYygpPT57aWYoIUopcmV0dXJuO1koIl9fYWxsX18iKSxHKG51bGwpO3RyeXtsZXQgej1hd2FpdCBFMShgJHtMfSBwZXJtaXNzaW9ucyByZXNldCBhbGwgJHtNMShKKX0gLWQgJHtNMSgkKX1gKTtpZih6LmV4aXRDb2RlIT09MCl7Ryh6LnN0ZGVyci50cmltKCl8fGBzZXJ2ZS1zaW0gcGVybWlzc2lvbnMgZmFpbGVkIChleGl0ICR7ei5leGl0Q29kZX0pYCk7cmV0dXJufVooe30pfWZpbmFsbHl7WShudWxsKX19LFtMLCQsSl0pO2lmKCFKKXJldHVybiBYKHFRLHt9KTtyZXR1cm4gWChlMSx7b3BlbjpOLG9uT3BlbkNoYW5nZTpCLHN1bW1hcnlDbGFzc05hbWU6ImdyaWQgW2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvXzFmcl9hdXRvXSBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1sZWZ0IixzdW1tYXJ5OlgoWjEse2NoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIGxlYWRpbmctbm9uZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOiJQZXJtaXNzaW9ucyJ9KSxYKCJzcGFuIix7fSldfSksY2hpbGRyZW46W3EmJlgoImRpdiIse2NsYXNzTmFtZToiYmctZGFuZ2VyLzEwIGJvcmRlciBib3JkZXItZGFuZ2VyLzIwIHRleHQtZGFuZ2VyLXNvZnQgdGV4dC1bMTFweF0gcHgtMiBweS0xLjUgcm91bmRlZC1tZCIsY2hpbGRyZW46cX0pLFgoImRpdiIse2NsYXNzTmFtZToicmVsYXRpdmUiLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6Im1heC1oLVsyNjBweF0gb3ZlcmZsb3cteS1hdXRvIGZsZXggZmxleC1jb2wgZ2FwLTEgcHktMiBbc2Nyb2xsYmFyLXdpZHRoOnRoaW5dIixjaGlsZHJlbjpyNi5tYXAoKHtrZXk6eixsYWJlbDprfSk9PntsZXQgSD1RW3pdO3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBweC0wLjUgcHktMSIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzEycHhdIHRleHQtd2hpdGUvOTAgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgZmxleC0xIG1pbi13LTAiLGNoaWxkcmVuOmt9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZ2FwLTAuNSBiZy13aGl0ZS9bMC4wNF0gYm9yZGVyIGJvcmRlci13aGl0ZS84IHJvdW5kZWQtbWQgcC0wLjUiLHJvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbCI6ayxjaGlsZHJlbjpbWChzMyx7YWN0aXZlOkg9PT0iZ3JhbnQiLHBlbmRpbmc6Sz09PWAke3p9OmdyYW50YCxvbkNsaWNrOigpPT5WKHosImdyYW50IiksdmFyaWFudDoiZ3JhbnQiLHRpdGxlOiJBbGxvdyIsY2hpbGRyZW46WChFMix7c2l6ZToxMSxzdHJva2VXaWR0aDozfSl9KSxYKHMzLHthY3RpdmU6SD09PSJyZXZva2UiLHBlbmRpbmc6Sz09PWAke3p9OnJldm9rZWAsb25DbGljazooKT0+Vih6LCJyZXZva2UiKSx2YXJpYW50OiJyZXZva2UiLHRpdGxlOiJEZW55IixjaGlsZHJlbjpYKEcwLHtzaXplOjExLHN0cm9rZVdpZHRoOjN9KX0pLFgoczMse2FjdGl2ZTohMSxwZW5kaW5nOks9PT1gJHt6fTpyZXNldGAsb25DbGljazooKT0+Vih6LCJyZXNldCIpLHZhcmlhbnQ6InJlc2V0Iix0aXRsZToiUmVzZXQiLGNoaWxkcmVuOlgoaTAse3NpemU6MTEsc3Ryb2tlV2lkdGg6Mi40fSl9KV19KV19LHopfSl9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGgtWzE0cHhdIHBvaW50ZXItZXZlbnRzLW5vbmUgcm91bmRlZC10LVsxMHB4XSBiZy1bbGluZWFyLWdyYWRpZW50KHRvX2JvdHRvbSwjMWMxYzFlXzAlLHJnYmEoMjgsMjgsMzAsMClfMTAwJSldIn0pLFgoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgaC1bMTRweF0gcG9pbnRlci1ldmVudHMtbm9uZSBiZy1bbGluZWFyLWdyYWRpZW50KHRvX3RvcCwjMWMxYzFlXzAlLHJnYmEoMjgsMjgsMzAsMClfMTAwJSldIn0pXX0pLFgoImRpdiIse2NsYXNzTmFtZToiZmxleCBqdXN0aWZ5LWVuZCIsY2hpbGRyZW46WCgiYnV0dG9uIix7b25DbGljazpVLGRpc2FibGVkOks9PT0iX19hbGxfXyIsY2xhc3NOYW1lOiJiZy10cmFuc3BhcmVudCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHRleHQtd2hpdGUvNzAgdGV4dC1bMTBweF0gcHgtMiBweS1bM3B4XSByb3VuZGVkLVs1cHhdIGN1cnNvci1wb2ludGVyIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wNGVtXSIsdGl0bGU6InNlcnZlLXNpbSBwZXJtaXNzaW9ucyByZXNldCBhbGwiLGNoaWxkcmVuOks9PT0iX19hbGxfXyI/IuKApiI6IlJlc2V0IGFsbCJ9KX0pXX0pfWZ1bmN0aW9uIHFRKCl7cmV0dXJuIFgoImRpdiIseyJkYXRhLXRlc3RpZCI6ImFwcC1wZXJtaXNzaW9ucy1sb2FkaW5nIixjbGFzc05hbWU6ImJnLXBhbmVsIHJvdW5kZWQtWzEwcHhdIHB4LTMgcHktMiIsImFyaWEtZGlzYWJsZWQiOiJ0cnVlIiwiYXJpYS1idXN5IjoidHJ1ZSIsY2hpbGRyZW46WCgiZGl2Iix7Y2xhc3NOYW1lOiJzZWxlY3Qtbm9uZSB0ZXh0LXdoaXRlLzU1IG1pbi1oLVszNnB4XSBsZWFkaW5nLW5vbmUgcHktMi41IHB4LTEgLW15LTIgLW14LTEgdy1bY2FsYygxMDAlKzhweCldIGdyaWQgW2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvXzFmcl9hdXRvXSBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1sZWZ0IGN1cnNvci1kZWZhdWx0IixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMDhlbV0gbGVhZGluZy1ub25lIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsY2hpbGRyZW46IlBlcm1pc3Npb25zIn0pLFgoInNwYW4iLHt9KSxYKCJzcGFuIix7ImRhdGEtdGVzdGlkIjoicGVybWlzc2lvbnMtbG9hZGluZy1pbmRpY2F0b3IiLHJvbGU6InN0YXR1cyIsImFyaWEtbGFiZWwiOiJMb2FkaW5nIHBlcm1pc3Npb25zIixjbGFzc05hbWU6InNpemUtMi41IHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLVsjNWY2MjY4XSBib3JkZXItdC1bI2Y0ZjRmNV0gYW5pbWF0ZS1bZ3JpZC1zcGluXzAuN3NfbGluZWFyX2luZmluaXRlXSJ9KV19KX0pfWZ1bmN0aW9uIHMzKHthY3RpdmU6JCxwZW5kaW5nOkosb25DbGljazpRLHZhcmlhbnQ6Wix0aXRsZTpLLGNoaWxkcmVuOll9KXtsZXQgcT1aPT09ImdyYW50Ij8iIzRhZGU4MCI6Wj09PSJyZXZva2UiPyIjZjg3MTcxIjoiI2E1YjRmYyI7cmV0dXJuIFgoImJ1dHRvbiIse29uQ2xpY2s6USxkaXNhYmxlZDpKLHRpdGxlOkssImFyaWEtbGFiZWwiOkssY2xhc3NOYW1lOiJ3LTYgaC01LjUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLW5vbmUgcm91bmRlZCBwLTAgY3Vyc29yLXBvaW50ZXIgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjEycyxjb2xvcl8wLjEyc10iLHN0eWxlOntiYWNrZ3JvdW5kOiQ/YCR7cX0yMmA6InRyYW5zcGFyZW50Iixjb2xvcjokP3E6InJnYmEoMjU1LDI1NSwyNTUsMC41NSkiLG9wYWNpdHk6Sj8wLjU6MX0sY2hpbGRyZW46WX0pfWZ1bmN0aW9uIHU1KHtsYWJlbDokLGNoZWNrZWQ6SixkaXNhYmxlZDpRPSExLG9uQ2hhbmdlOlp9KXtyZXR1cm4gWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixyb2xlOiJzd2l0Y2giLCJhcmlhLWNoZWNrZWQiOkosImFyaWEtbGFiZWwiOiQsZGlzYWJsZWQ6USxvbkNsaWNrOigpPT5aKCFKKSxjbGFzc05hbWU6YHJlbGF0aXZlIGgtWzE4cHhdIHctOCBzaHJpbmstMCByb3VuZGVkLWZ1bGwgYm9yZGVyLW5vbmUgcC0wIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNdICR7UT8iY3Vyc29yLWRlZmF1bHQgYmctd2hpdGUvMjAiOko/ImN1cnNvci1wb2ludGVyIGJnLVsjMGE4NGZmXSI6ImN1cnNvci1wb2ludGVyIGJnLXdoaXRlLzIwIn1gLGNoaWxkcmVuOlgoInNwYW4iLHtjbGFzc05hbWU6YGFic29sdXRlIHRvcC1bMnB4XSBzaXplLVsxNHB4XSByb3VuZGVkLWZ1bGwgW3RyYW5zaXRpb246bGVmdF8wLjE1c10gJHtRPyJiZy13aGl0ZS81MCI6ImJnLXdoaXRlIn1gLHN0eWxlOntsZWZ0Oko/MTY6Mn19KX0pfXZhciBHUT0iYmctcGFuZWwgcm91bmRlZC1bMTBweF0iLFZRPSJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIG0tMCI7ZnVuY3Rpb24gbjYoe292ZXJsYXlFbmFibGVkOiQsb25Ub2dnbGVPdmVybGF5Okp9KXtsZXR7c25hcHNob3Q6UX09TjIoKSx7aGlnaGxpZ2h0ZWRLZXk6WixzZXRIaWdobGlnaHRlZEtleTpLfT1JNSgpLFk9UT8uZWxlbWVudHM/P1tdLHE9RDUoUSksRz1RPy5lcnJvcnM/LlswXT8/bnVsbDtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOmAke0dRfSBweC0zIHB5LTJgLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6VlEsY2hpbGRyZW46IkFYIFRyZWUifSksWCh1NSx7bGFiZWw6IkVuYWJsZSBvdmVybGF5IixjaGVja2VkOiQsb25DaGFuZ2U6Sn0pXX0pLCEkP251bGw6cT9YKGE2LHtjaGlsZHJlbjoiQVggdW5hdmFpbGFibGUgb24gdGhpcyBzaW11bGF0b3IuIn0pOlkubGVuZ3RoPT09MD9YKGE2LHtzcGlubmVyOiFHLGNoaWxkcmVuOkc/PyJXYWl0aW5nIGZvciBhY2Nlc3NpYmlsaXR5IGRhdGHigKYifSk6WCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0xIG10LTIgcHktMiBtYXgtaC1bMjYwcHhdIG92ZXJmbG93LXktYXV0byBbc2Nyb2xsYmFyLXdpZHRoOnRoaW5dIixyb2xlOiJsaXN0IixjaGlsZHJlbjpZLm1hcCgoTixCKT0+e2xldCBMPWEwKE4pO3JldHVybiBYKEJRLHtlbGVtZW50Ok4saW5kZXg6QixhY3RpdmU6TD09PVosb25IaWdobGlnaHQ6S30sTCl9KX0pXX0pfWZ1bmN0aW9uIGE2KHtjaGlsZHJlbjokLHNwaW5uZXI6Sj0hMX0pe3JldHVybiBYKCJkaXYiLHtyb2xlOiJzdGF0dXMiLCJhcmlhLWxpdmUiOiJwb2xpdGUiLGNsYXNzTmFtZToibXQtMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiBweS00IHRleHQtWzEycHhdIHRleHQtd2hpdGUvNDUiLGNoaWxkcmVuOltKP1goInNwYW4iLHsiYXJpYS1oaWRkZW4iOiJ0cnVlIixjbGFzc05hbWU6InNpemUtMy41IHNocmluay0wIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItd2hpdGUvMjAgYm9yZGVyLXQtd2hpdGUvNjAgYW5pbWF0ZS1bZ3JpZC1zcGluXzAuOHNfbGluZWFyX2luZmluaXRlXSJ9KTpudWxsLFgoInNwYW4iLHtjaGlsZHJlbjokfSldfSl9dmFyIEJRPWMwKGZ1bmN0aW9uKHtlbGVtZW50OkosaW5kZXg6USxhY3RpdmU6WixvbkhpZ2hsaWdodDpLfSl7bGV0IFk9YTAoSikscT1UNShKLFEpLEc9YCR7TWF0aC5yb3VuZChKLmZyYW1lLndpZHRoKX14JHtNYXRoLnJvdW5kKEouZnJhbWUuaGVpZ2h0KX1gLE49W3EubGFiZWwscS5yb2xlfHxxLnR5cGV8fCJlbGVtZW50IixHXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpO3JldHVybiBYKCJkaXYiLHtyb2xlOiJsaXN0aXRlbSIsdGFiSW5kZXg6MCwiZGF0YS1heC1rZXkiOlksdGl0bGU6Tixvbk1vdXNlRW50ZXI6KCk9PksoWSksb25Nb3VzZUxlYXZlOigpPT5LKG51bGwpLG9uRm9jdXM6KCk9PksoWSksb25CbHVyOigpPT5LKG51bGwpLGNsYXNzTmFtZTpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHJvdW5kZWQtbWQgcHktMSBweC0wLjUgbWluLXctMCAke1o/ImJnLXdoaXRlL1swLjA2XSI6IiJ9YCxjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBnYXAtMC41IGZsZXgtMSBtaW4tdy0wIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC13aGl0ZS85MCB0ZXh0LVsxMnB4XSBmb250LW1lZGl1bSIsY2hpbGRyZW46Si5sYWJlbHx8Si5yb2xlfHwiVW5sYWJlbGVkIn0pLFgoInNwYW4iLHtjbGFzc05hbWU6Im92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtd2hpdGUvNDUgZm9udC1tb25vIHRleHQtWzEwcHhdIixjaGlsZHJlbjpKLnJvbGV8fEoudHlwZXx8ImVsZW1lbnQifSldfSksWCgiY29kZSIse2NsYXNzTmFtZToic2hyaW5rLTAgYmctd2hpdGUvWzAuMDRdIGJvcmRlciBib3JkZXItd2hpdGUvOCByb3VuZGVkLW1kIHRleHQtd2hpdGUvNTUgZm9udC1tb25vIHRleHQtWzEwcHhdIHB4LTEuNSBweS1bM3B4XSIsY2hpbGRyZW46R30pXX0pfSwoJCxKKT0+JC5pbmRleD09PUouaW5kZXgmJiQuYWN0aXZlPT09Si5hY3RpdmUmJiQub25IaWdobGlnaHQ9PT1KLm9uSGlnaGxpZ2h0JiZ3NSgkLmVsZW1lbnQsSi5lbGVtZW50KSk7dmFyIE5RPW5ldyBTZXQoWyJpbWFnZS9qcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvZ2lmIiwiaW1hZ2UvaGVpYyIsImltYWdlL2hlaWYiLCJpbWFnZS93ZWJwIiwidmlkZW8vbXA0IiwidmlkZW8vcXVpY2t0aW1lIl0pLHQzPTE5NjYwOCxzNj01MjQyODgwMDAsbDU9ImFwcGxpY2F0aW9uL3gtc2VydmUtc2ltLWhvc3QtcGF0aCI7YXN5bmMgZnVuY3Rpb24gdDYoJCxKLFEpe2xldCBaPWF3YWl0IEooYHhjcnVuIHNpbWN0bCBhZGRtZWRpYSAke1F9ICR7TTEoJCl9YCk7aWYoWi5leGl0Q29kZSE9PTApdGhyb3cgRXJyb3IoWi5zdGRlcnJ8fGBhZGRtZWRpYSBmYWlsZWQgKGV4aXQgJHtaLmV4aXRDb2RlfSlgKX1mdW5jdGlvbiBGMigkKXtsZXQgSj0kLm5hbWUsUT1KLmxhc3RJbmRleE9mKCIuIik7aWYoUT49MClyZXR1cm4gSi5zbGljZShRKzEpLnRvTG93ZXJDYXNlKCk7aWYoJC50eXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpKXJldHVybiJtcDQiO3JldHVybiJqcGcifWZ1bmN0aW9uIGU2KCQpe2lmKEYyKCQpPT09ImlwYSIpcmV0dXJuImlwYSI7aWYoTlEuaGFzKCQudHlwZSkpcmV0dXJuIm1lZGlhIjtyZXR1cm4gbnVsbH1mdW5jdGlvbiBMUSgkKXtsZXQgSj1uZXcgVWludDhBcnJheSgkKSxRPSIiO2ZvcihsZXQgWj0wO1o8Si5sZW5ndGg7Wis9MzI3NjgpUSs9U3RyaW5nLmZyb21DaGFyQ29kZSguLi5KLnN1YmFycmF5KFosWiszMjc2OCkpO3JldHVybiBidG9hKFEpfWFzeW5jIGZ1bmN0aW9uICQ0KCQsSixRLFope2xldCBLPTA7Zm9yKGxldCBZPTA7WTwkLnNpemU7WSs9dDMpe2xldCBxPWF3YWl0ICQuc2xpY2UoWSxZK3QzKS5hcnJheUJ1ZmZlcigpLEc9TFEocSksQj1hd2FpdCBRKGBiYXNoIC1jICdlY2hvICR7R30gfCBiYXNlNjQgLWQgJHtZPT09MD8iPiI6Ij4+In0gJHtKfSdgKTtpZihCLmV4aXRDb2RlIT09MCl0aHJvdyBFcnJvcihCLnN0ZGVycnx8YFdyaXRlIGZhaWxlZCAoZXhpdCAke0IuZXhpdENvZGV9KWApO2lmKCFaKWNvbnRpbnVlO2xldCBMPU1hdGgubWluKFkrdDMsJC5zaXplKSxWPU1hdGguZmxvb3IoTC8kLnNpemUqMTAwKTtpZihWIT09SylLPVYsWihMLyQuc2l6ZSl9fWFzeW5jIGZ1bmN0aW9uIEo0KCQsSixRLFope2lmKCQuc2l6ZT5zNil0aHJvdyBFcnJvcigiRmlsZSB0b28gbGFyZ2UgKG1heCA1MDBNQikiKTtsZXQgSz1gL3RtcC8ke0p9LSR7Y3J5cHRvLnJhbmRvbVVVSUQoKX0uJHtRfWA7cmV0dXJuIGF3YWl0ICQ0KCQsSyxaKSxLfWFzeW5jIGZ1bmN0aW9uIFE0KCQsSixRLFosSyl7aWYoJC5zaXplPnM2KXRocm93IEVycm9yKCJGaWxlIHRvbyBsYXJnZSAobWF4IDUwME1CKSIpO2xldCBZPUo9PT0iaXBhIj8iaXBhIjpGMigkKSxHPWAvdG1wLyR7Sj09PSJpcGEiPyJzZXJ2ZS1zaW0taW5zdGFsbCI6InNlcnZlLXNpbS11cGxvYWQifS0ke2NyeXB0by5yYW5kb21VVUlEKCl9LiR7WX1gO3RyeXtLKDApLGF3YWl0ICQ0KCQsRyxRLEspLEsobnVsbCk7bGV0IE49Sj09PSJpcGEiP2B4Y3J1biBzaW1jdGwgaW5zdGFsbCAke1p9ICR7R31gOmB4Y3J1biBzaW1jdGwgYWRkbWVkaWEgJHtafSAke0d9YCxCPWF3YWl0IFEoTik7aWYoQi5leGl0Q29kZSE9PTApe2xldCBMPUo9PT0iaXBhIj8iaW5zdGFsbCI6ImFkZG1lZGlhIjt0aHJvdyBFcnJvcihCLnN0ZGVycnx8YCR7TH0gZmFpbGVkIChleGl0ICR7Qi5leGl0Q29kZX0pYCl9fWZpbmFsbHl7UShgYmFzaCAtYyAncm0gLWYgJHtHfSdgKS5jYXRjaCgoKT0+e30pfX12YXIgelE9MzAwMDthc3luYyBmdW5jdGlvbiBVUSgkLEo9ZmV0Y2gpe3RyeXtsZXQgUT1hd2FpdCBKKCQse2NhY2hlOiJuby1zdG9yZSJ9KTtpZighUS5vaylyZXR1cm4gbnVsbDtsZXQgWj1hd2FpdCBRLmpzb24oKTtyZXR1cm4gWiYmdHlwZW9mIFo9PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoWik/WjpudWxsfWNhdGNoe3JldHVybiBudWxsfX12YXIgSFE9MjA5NzE1MjAwLENRPSJMYXJnZSB2aWRlbyAoPjIwMCBNQikg4oCUIG1heSBzdHV0dGVyIG9uIHNoYXJlZCBtZW1vcnkiLFg0PSJIRUlDIGRlY29kZSBmYWlsZWQg4oCUIGV4cG9ydCBhcyBKUEVHIG9yIFBORyBhbmQgcmV0cnkiO2Z1bmN0aW9uIEZRKCQsSil7aWYoSilyZXR1cm4iYWN0aXZlIjtpZigkPT09ImFjdGl2ZSIpcmV0dXJuImRpc2Nvbm5lY3RlZCI7aWYoJD09PSJkaXNjb25uZWN0ZWQiKXJldHVybiJyZWFkeSI7cmV0dXJuICR9ZnVuY3Rpb24ga1EoJCl7aWYoISQuaW5qZWN0ZWQpcmV0dXJuInBsYXkiO2lmKCQuc291cmNlPT09InBsYWNlaG9sZGVyIilyZXR1cm4icGxheSI7aWYoJC5idW5kbGVJZCYmISQuZm9yZWdyb3VuZElzSW5qZWN0ZWQpcmV0dXJuImF0dGFjaCI7cmV0dXJuInN0b3AifWZ1bmN0aW9uIE1RKCQpe3JldHVybiAkLnNwbGl0KGAKYCkubWFwKChKKT0+Si50cmltKCkpLmZpbHRlcihCb29sZWFuKS5mbGF0TWFwKChKKT0+e2xldCBRPUouaW5kZXhPZigiXHQiKTtpZihRPD0wKXJldHVybltdO2xldCBaPUouc2xpY2UoMCxRKS50cmltKCksSz1KLnNsaWNlKFErMSkudHJpbSgpO2lmKCFafHwhSylyZXR1cm5bXTtyZXR1cm5be2lkOlosbmFtZTpLfV19KX12YXIgT1E9bmV3IFNldChbIm1wNCIsIm00diIsIm1vdiIsInF0IiwiYXZpIiwibWt2Iiwid2VibSIsIm1wZyIsIm1wZWciLCIzZ3AiLCIzZzIiLCJ0cyIsIndtdiJdKTtmdW5jdGlvbiBLNCgkKXtpZigkLnR5cGUmJiQudHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iKSlyZXR1cm4hMDtsZXQgSj0oJC5uYW1lPz8iIikudG9Mb3dlckNhc2UoKSxRPUoubGFzdEluZGV4T2YoIi4iKTtpZihRPDApcmV0dXJuITE7cmV0dXJuIE9RLmhhcyhKLnNsaWNlKFErMSkpfWZ1bmN0aW9uIEFRKCQpe3JldHVybiBLNCgkKSYmJC5zaXplPkhRfWZ1bmN0aW9uIFdRKCQpe2xldCBKPSgkLnR5cGU/PyIiKS50b0xvd2VyQ2FzZSgpO2lmKEo9PT0iaW1hZ2UvaGVpYyJ8fEo9PT0iaW1hZ2UvaGVpZiIpcmV0dXJuITA7bGV0IFE9KCQubmFtZT8/IiIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIFEuZW5kc1dpdGgoIi5oZWljIil8fFEuZW5kc1dpdGgoIi5oZWlmIil9ZnVuY3Rpb24gX1Eoe3Jhd01lc3NhZ2U6JCxsYXN0RmlsZUlzSGVpYzpKLHNvdXJjZTpRfSl7aWYoSiYmKFE9PT0iaW1hZ2UifHxRPT09InZpZGVvIikpcmV0dXJuIFg0O3JldHVybiAkfWZ1bmN0aW9uIFBRKHtzdGF0ZTokfSl7bGV0IEo9JD09PSJhY3RpdmUiPyJBY3RpdmUiOiQ9PT0iZGlzY29ubmVjdGVkIj8iRGlzY29ubmVjdGVkIjoiUmVhZHkiLFE9JD09PSJhY3RpdmUiPyJzaXplLTEuNSByb3VuZGVkLWZ1bGwgYmctc3VjY2Vzcy1lbWVyYWxkIFtib3gtc2hhZG93OjBfMF82cHhfcmdiYSg3NCwyMjIsMTI4LDAuNyldIjokPT09ImRpc2Nvbm5lY3RlZCI/InNpemUtMS41IHJvdW5kZWQtZnVsbCBiZy1kYW5nZXItc29mdCBbYm94LXNoYWRvdzowXzBfNnB4X3JnYmEoMjQ4LDExMywxMTMsMC41NSldIjpudWxsO3JldHVybiBYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzU1IGZvbnQtbW9ubyBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBqdXN0aWZ5LXNlbGYtZW5kIGxlYWRpbmctbm9uZSIsImRhdGEtY2FtZXJhLXBpbGwtc3RhdGUiOiQsY2hpbGRyZW46W1EmJlgoInNwYW4iLHtjbGFzc05hbWU6UX0pLEpdfSl9ZnVuY3Rpb24gRFEoKXtyZXR1cm4gWCgicCIse2NsYXNzTmFtZToibS0wIHRleHQtY2VudGVyIHRleHQtWzEwcHhdIGxlYWRpbmctWzEuNV0gdGV4dC13aGl0ZS80NSIsImRhdGEtY2FtZXJhLXRlc3QtcGF0dGVybi1oaW50IjohMCxjaGlsZHJlbjoiVGVzdC1wYXR0ZXJuIGZlZWQifSl9ZnVuY3Rpb24gd1Eoe21vZGU6JCxmaWxlTmFtZTpKLHdlYmNhbU5hbWU6USxzb3VyY2VLaW5kOlp9KXtpZigkPT09InVwbG9hZGluZyIpcmV0dXJuIFgoInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzExcHhdIHRleHQtd2hpdGUvNTUiLGNoaWxkcmVuOiJVcGxvYWRpbmfigKYifSk7aWYoJD09PSJmaWxlIilyZXR1cm4gWChaMSx7Y2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToic2hyaW5rLTAgdGV4dC1bOXB4XSB0cmFja2luZy1bMC4xZW1dIHVwcGVyY2FzZSB0ZXh0LXdoaXRlLzU1IGJnLXdoaXRlL1swLjA2XSBib3JkZXIgYm9yZGVyLXdoaXRlLzggcHgtWzdweF0gcHktWzJweF0gcm91bmRlZC1mdWxsIixjaGlsZHJlbjpaPT09InZpZGVvIj8iVmlkZW8iOiJJbWFnZSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4LTEgbWluLXctMCB0cnVuY2F0ZSB0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlLzkwIGZvbnQtbW9ubyIsY2hpbGRyZW46Sj8/IiJ9KV19KTtpZigkPT09IndlYmNhbSIpcmV0dXJuIFgoWjEse2NoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6InNocmluay0wIHRleHQtWzlweF0gdHJhY2tpbmctWzAuMWVtXSB1cHBlcmNhc2UgdGV4dC13aGl0ZS81NSBiZy13aGl0ZS9bMC4wNl0gYm9yZGVyIGJvcmRlci13aGl0ZS84IHB4LVs3cHhdIHB5LVsycHhdIHJvdW5kZWQtZnVsbCIsY2hpbGRyZW46IldlYmNhbSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4LTEgbWluLXctMCB0cnVuY2F0ZSB0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlLzkwIGZvbnQtbW9ubyIsY2hpbGRyZW46UT8/IiJ9KV19KTtyZXR1cm4gWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTJweF0gdGV4dC13aGl0ZS84NSBmb250LW1lZGl1bSIsY2hpbGRyZW46IlNlbGVjdCBvciBkcm9wIG1lZGlhIn0pfWZ1bmN0aW9uIFo0KHtraW5kOiQsbWVzc2FnZTpKfSl7cmV0dXJuIFgoImRpdiIse2NsYXNzTmFtZTokPT09Indhcm5pbmciPyJiZy13YXJuaW5nLzEwIGJvcmRlciBib3JkZXItd2FybmluZy8yNSB0ZXh0LXdhcm5pbmctc29mdCB0ZXh0LVsxMXB4XSBweC0yIHB5LTEuNSByb3VuZGVkLW1kIGJyZWFrLXdvcmRzIjoiYmctZGFuZ2VyLzEwIGJvcmRlciBib3JkZXItZGFuZ2VyLzIwIHRleHQtZGFuZ2VyLXNvZnQgdGV4dC1bMTFweF0gcHgtMiBweS0xLjUgcm91bmRlZC1tZCBicmVhay13b3JkcyIsImRhdGEtY2FtZXJhLWJhbm5lci1raW5kIjokLHJvbGU6JD09PSJlcnJvciI/ImFsZXJ0Ijoic3RhdHVzIixjaGlsZHJlbjpKfSl9ZnVuY3Rpb24gWTQoe3VkaWQ6JCxidW5kbGVJZDpKfSl7bGV0W1EsWl09QSghMSksW0ssWV09QSgicGxhY2Vob2xkZXIiKSxbcSxHXT1BKCIiKSxbTixCXT1BKG51bGwpLFtMLFZdPUEoITEpLFU9VCgwKSxbeixrXT1BKCExKSxbSCxDXT1BKCExKSxGPVQobnVsbCksW08sSV09QShbXSksW3csU109QSghMSksW2osJDFdPUEoIiIpLFttLGNdPUEoIm9mZiIpLFtuLG9dPUEobnVsbCksW3IsUTFdPUEobnVsbCksTjE9biE9PW51bGx8fHIhPT1udWxsLFtkLHhdPUEobnVsbCksW2EsSzFdPUEobnVsbCksWyxMMV09QShudWxsKSxbSjEsWTFdPUEoITEpLFtDMSx5XT1BKCJyZWFkeSIpLFtnLF9dPUEoKCk9Pm5ldyBTZXQpLFtwLHVdPUEobnVsbCksW3YsRzFdPUEobnVsbCksejE9VCghMSksQTE9VCghMSksVzE9VCgib2ZmIiksaTE9VCghMSksTzE9VDEoKCk9PntsZXQgUD13aW5kb3cuX19TSU1fUFJFVklFV19fPy5zZXJ2ZVNpbUJpbjtpZighUClyZXR1cm4ic2VydmUtc2ltIjtpZigvXC50cyQvLnRlc3QoUCkpcmV0dXJuYGJ1biAke00xKFApfWA7aWYoL1wuanMkLy50ZXN0KFApKXJldHVybmBub2RlICR7TTEoUCl9YDtyZXR1cm4gTTEoUCl9LFtdKSxqMT1EKGFzeW5jKCk9PntsZXQgUD13aW5kb3cuX19TSU1fUFJFVklFV19fPy5jYW1lcmFTdGF0dXNFbmRwb2ludDtyZXR1cm4gUD9VUShQKTpudWxsfSxbXSksXzE9VChhc3luYygpPT57fSksbDE9VChKKTtiKCgpPT57bDEuY3VycmVudD1KfSxbSl0pLGIoKCk9PntsZXQgUD0hMTtyZXR1cm4oYXN5bmMoKT0+e2xldCBsPWF3YWl0IGoxKCk7aWYoUHx8IWx8fCFsLmFsaXZlKXJldHVybjtBMS5jdXJyZW50PSEwO2xldCBpPWwuc291cmNlO2lmKGk9PT0icGxhY2Vob2xkZXIifHxpPT09IndlYmNhbSJ8fGk9PT0iaW1hZ2UifHxpPT09InZpZGVvIilZKGkpO2lmKChpPT09ImltYWdlInx8aT09PSJ2aWRlbyIpJiZsLmFyZylHKGwuYXJnKSxCKGwuYXJnLnNwbGl0KCIvIikucG9wKCk/P251bGwpO2lmKGk9PT0id2ViY2FtIiYmbC5hcmcpJDEobC5hcmcpLF8xLmN1cnJlbnQoKTtsZXQgazE9bC5taXJyb3I9PT0ib24iPyJvbiI6Im9mZiI7YyhrMSksVzEuY3VycmVudD1rMSx1KGwuaGVscGVyUGlkPz9udWxsKSxZMSghMCk7bGV0IFYxPUFycmF5LmlzQXJyYXkobC5idW5kbGVJZHMpP2wuYnVuZGxlSWRzOltdO2lmKFYxLmxlbmd0aD4wKV8obmV3IFNldChWMSkpO2xldCBCMT1sMS5jdXJyZW50LGcxPWkmJmkhPT0icGxhY2Vob2xkZXIiO3koQjEmJlYxLmluY2x1ZGVzKEIxKSYmZzE/ImFjdGl2ZSI6InJlYWR5IiksTDEoYFJlYXR0YWNoZWQg4oaSICR7aT8/InJ1bm5pbmcgaGVscGVyIn0ke2wuYXJnP2AgKCR7bC5hcmd9KWA6IiJ9YCl9KSgpLCgpPT57UD0hMH19LFskLGoxXSksYigoKT0+e2xldCBQPSExLGw9ITEsaT1udWxsLGsxPWFzeW5jKCk9PntpZihQfHxsKXJldHVybjtpZih0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIilyZXR1cm47bD0hMDt0cnl7bGV0IEIxPWF3YWl0IGoxKCk7aWYoUClyZXR1cm47bGV0IGcxPSEhQjE/LmFsaXZlLHAxPUFycmF5LmlzQXJyYXkoQjE/LmJ1bmRsZUlkcyk/QjEuYnVuZGxlSWRzOm51bGwseDE9ISFKJiYocDE/cDEuaW5jbHVkZXMoSik6Zy5oYXMoSikpLE0wPUIxPy5zb3VyY2U/P251bGwsdzE9SjEmJmcxJiZ4MSYmISEoTTAmJk0wIT09InBsYWNlaG9sZGVyIikmJihwPT1udWxsfHxCMT8uaGVscGVyUGlkPT09cCk7aWYoeSgoTDApPT5GUShMMCx3MSkpLCFnMSlZMSgoTDApPT57aWYoIUwwKXJldHVybiBMMDtyZXR1cm4gXyhuZXcgU2V0KSx1KG51bGwpLFcxLmN1cnJlbnQ9Im9mZiIsITF9KTtlbHNlIGlmKEoxJiZwIT1udWxsJiZCMT8uaGVscGVyUGlkIT09cClZMSghMSksXyhuZXcgU2V0KSx1KG51bGwpLFcxLmN1cnJlbnQ9Im9mZiI7ZWxzZSBpZihnMSYmQXJyYXkuaXNBcnJheShCMT8uYnVuZGxlSWRzKSl7bGV0IEwwPUIxLmJ1bmRsZUlkcztfKChEMCk9PntpZihEMC5zaXplPT09TDAubGVuZ3RoJiZMMC5ldmVyeSgoUzApPT5EMC5oYXMoUzApKSlyZXR1cm4gRDA7cmV0dXJuIG5ldyBTZXQoTDApfSl9fWZpbmFsbHl7bD0hMX19O2k9c2V0SW50ZXJ2YWwoKCk9PntrMSgpfSx6USk7bGV0IFYxPSgpPT57aWYoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlPT09InZpc2libGUiKWsxKCl9O2lmKHR5cGVvZiBkb2N1bWVudDwidSIpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsVjEpO3JldHVybigpPT57aWYoUD0hMCxpKWNsZWFySW50ZXJ2YWwoaSk7aWYodHlwZW9mIGRvY3VtZW50PCJ1Iilkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixWMSl9fSxbajEsSjEscCxKLGddKTtsZXQgVTE9RChhc3luYygpPT57UyghMCkseChudWxsKTt0cnl7bGV0IFA9YXdhaXQgRTEoYCR7TzF9IGNhbWVyYSAtLWxpc3Qtd2ViY2Ftc2ApO2lmKFAuZXhpdENvZGUhPT0wKXt4KFAuc3RkZXJyLnRyaW0oKXx8YC0tbGlzdC13ZWJjYW1zIGZhaWxlZCAoJHtQLmV4aXRDb2RlfSlgKTtyZXR1cm59bGV0IGw9TVEoUC5zdGRvdXQpO2lmKEkobCksbC5sZW5ndGg+MCYmIWopJDEobFswXS5pZCl9ZmluYWxseXtTKCExKX19LFtqLE8xXSk7YigoKT0+e18xLmN1cnJlbnQ9VTF9LFtVMV0pLGIoKCk9PntpZihIJiZPLmxlbmd0aD09PTAmJiF3KVUxKCl9LFtILE8ubGVuZ3RoLHcsVTFdKTtsZXQgSTE9RCgoUCk9Pnt4KF9RKHtyYXdNZXNzYWdlOlAsbGFzdEZpbGVJc0hlaWM6ejEuY3VycmVudCxzb3VyY2U6S30pKX0sW0tdKSxkMT1EKGFzeW5jKFAsbCxpKT0+e2xldCBrMT1QPT09ImltYWdlInx8UD09PSJ2aWRlbyIsVjE9WyJjYW1lcmEiLCJzd2l0Y2giLGsxPyJmaWxlIjpQXTtpZihQPT09IndlYmNhbSImJmwpVjEucHVzaChNMShsKSk7aWYoazEpe2lmKCFpLnRyaW0oKSlyZXR1cm4geCgiRHJvcCBhIGZpbGUgaW50byB0aGUgcGFuZWwgb3IgcGljayBhbm90aGVyIHNvdXJjZS4iKSwhMTtWMS5wdXNoKE0xKGkudHJpbSgpKSl9VjEucHVzaCgiLWQiLCQsIi0tcXVpZXQiKTtsZXQgQjE9YXdhaXQgRTEoYCR7TzF9ICR7VjEuam9pbigiICIpfWApO2lmKEIxLmV4aXRDb2RlIT09MClyZXR1cm4gSTEoQjEuc3RkZXJyLnRyaW0oKXx8QjEuc3Rkb3V0LnRyaW0oKXx8YHN3aXRjaCBmYWlsZWQgKCR7QjEuZXhpdENvZGV9KWApLCExO3oxLmN1cnJlbnQ9ITE7dHJ5e2xldCBnMT1KU09OLnBhcnNlKEIxLnN0ZG91dC50cmltKCkpO0wxKGBTd2l0Y2hlZCDihpIgJHtnMS5zb3VyY2U/P1B9JHtnMS5hcmc/YCAoJHtnMS5hcmd9KWA6IiJ9YCl9Y2F0Y2h7TDEoYFN3aXRjaGVkIOKGkiAke1B9YCl9cmV0dXJuITB9LFskLE8xLEkxXSksdDE9RChhc3luYygpPT57aWYoIUopcmV0dXJuO28oImluamVjdCIpLHgobnVsbCksTDEobnVsbCk7dHJ5e2xldCBQPVsiY2FtZXJhIixNMShKKSwiLWQiLCQsIi0tcXVpZXQiXTtpZihLPT09ImltYWdlInx8Sz09PSJ2aWRlbyIpe2lmKCFxLnRyaW0oKSl7eCgiRHJvcCBhIGZpbGUgaW50byB0aGUgcGFuZWwgb3IgcGljayBhbm90aGVyIHNvdXJjZS4iKTtyZXR1cm59UC5wdXNoKCItLWZpbGUiLE0xKHEudHJpbSgpKSl9ZWxzZSBpZihLPT09IndlYmNhbSIpaWYoailQLnB1c2goIi0td2ViY2FtIixNMShqKSk7ZWxzZSBQLnB1c2goIi0td2ViY2FtIik7UC5wdXNoKCItLW1pcnJvciIsbSk7bGV0IGw9YXdhaXQgRTEoYCR7TzF9ICR7UC5qb2luKCIgIil9YCk7aWYobC5leGl0Q29kZSE9PTApe0kxKGwuc3RkZXJyLnRyaW0oKXx8bC5zdGRvdXQudHJpbSgpfHxgaW5qZWN0IGZhaWxlZCAoJHtsLmV4aXRDb2RlfSlgKTtyZXR1cm59ejEuY3VycmVudD0hMTtsZXQgaT1udWxsO3RyeXtsZXQgazE9SlNPTi5wYXJzZShsLnN0ZG91dC50cmltKCkpO2k9azEuaGVscGVyUGlkPz9udWxsO2xldCBWMT1rMS5oZWxwZXJSZWxhdW5jaGVkPT09ITE/IkF0dGFjaGVkIjoiSW5qZWN0ZWQiLEIxPWsxLnBpZD9gIHBpZCAke2sxLnBpZH1gOiIiLGcxPWsxLmhlbHBlclBpZD9gLCBoZWxwZXIgcGlkICR7azEuaGVscGVyUGlkfWA6IiI7TDEoYCR7VjF9ICR7azEuc291cmNlPz9LfSBpbnRvICR7Sn0ke0IxfSR7ZzF9YCl9Y2F0Y2h7TDEobC5zdGRvdXQudHJpbSgpfHwiSW5qZWN0ZWQuIil9WTEoITApLHkoSz09PSJwbGFjZWhvbGRlciI/InJlYWR5IjoiYWN0aXZlIiksdShpKSxfKChrMSk9PmsxLmhhcyhKKT9rMTpuZXcgU2V0KGsxKS5hZGQoSikpLFcxLmN1cnJlbnQ9bX1maW5hbGx5e28obnVsbCl9fSxbSiwkLEsscSxqLG0sTzEsSTFdKSxoMT1KMT9gJHtLfTo6JHtLPT09IndlYmNhbSI/ajoiIn06OiR7Sz09PSJpbWFnZSJ8fEs9PT0idmlkZW8iP3E6IiJ9YDpudWxsLGExPSEhSiYmZy5oYXMoSiksJDA9YTEmJkshPT0icGxhY2Vob2xkZXIiO2IoKCk9PntpZighJDApe2kxLmN1cnJlbnQ9ITE7cmV0dXJufWlmKGkxLmN1cnJlbnQpcmV0dXJuO2kxLmN1cnJlbnQ9ITAsWighMCl9LFskMF0pLGIoKCk9PntpZighdilyZXR1cm47aWYoIUp8fE4xfHx6KXJldHVybjtpZihLIT09IndlYmNhbSJ8fGohPT12KXJldHVybjtpZihHMShudWxsKSxKMSlyZXR1cm47dDEoKX0sW3YsSixOMSx6LEssaixKMSx0MV0pLGIoKCk9PntpZighSjEpcmV0dXJuO2lmKChLPT09ImltYWdlInx8Sz09PSJ2aWRlbyIpJiYhcS50cmltKCkpcmV0dXJuO2lmKEs9PT0id2ViY2FtIiYmIWopcmV0dXJuO2lmKEExLmN1cnJlbnQpe0ExLmN1cnJlbnQ9ITE7cmV0dXJufWxldCBQPSExO3JldHVybihhc3luYygpPT57UTEoInN3aXRjaCIpLHgobnVsbCk7dHJ5e2lmKFApcmV0dXJuO2F3YWl0IGQxKEssaixxKX1maW5hbGx5e2lmKCFQKVExKG51bGwpfX0pKCksKCk9PntQPSEwfX0sW2gxXSksYigoKT0+e2lmKCFKMSlyZXR1cm47aWYoVzEuY3VycmVudD09PW0pcmV0dXJuO2xldCBQPW0sbD0hMTtyZXR1cm4oYXN5bmMoKT0+e1ExKCJtaXJyb3IiKSx4KG51bGwpO3RyeXtsZXQgaT1hd2FpdCBFMShgJHtPMX0gY2FtZXJhIG1pcnJvciAke1B9IC1kICR7JH0gLS1xdWlldGApO2lmKGwpcmV0dXJuO2lmKGkuZXhpdENvZGUhPT0wKXt4KGkuc3RkZXJyLnRyaW0oKXx8aS5zdGRvdXQudHJpbSgpfHxgbWlycm9yIGZhaWxlZCAoJHtpLmV4aXRDb2RlfSlgKTtyZXR1cm59VzEuY3VycmVudD1QLEwxKGBNaXJyb3Ig4oaSICR7UH1gKX1maW5hbGx5e2lmKCFsKVExKG51bGwpfX0pKCksKCk9PntsPSEwfX0sW20sSjFdKTtsZXQgVjA9RChhc3luYygpPT57bygic3RvcCIpLHgobnVsbCk7dHJ5e2xldCBQPWF3YWl0IEUxKGAke08xfSBjYW1lcmEgLS1zdG9wLXdlYmNhbSAtZCAkeyR9YCk7aWYoUC5leGl0Q29kZSE9PTApe3goUC5zdGRlcnIudHJpbSgpfHxgc3RvcC13ZWJjYW0gZmFpbGVkICgke1AuZXhpdENvZGV9KWApO3JldHVybn1MMSgiQ2FtZXJhIGhlbHBlciBzdG9wcGVkLiIpLFkxKCExKSx5KCJyZWFkeSIpLF8obmV3IFNldCksVzEuY3VycmVudD0ib2ZmIn1maW5hbGx5e28obnVsbCl9fSxbJCxPMV0pLHMxPUQoYXN5bmMoUCk9PntsZXQgbD1XUSh7dHlwZTpQLnR5cGUsbmFtZTpQLm5hbWV9KSxpPVAudHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iKXx8bCxrMT1QLnR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIil8fEs0KHt0eXBlOlAudHlwZSxuYW1lOlAubmFtZX0pO2lmKCFpJiYhazEpe3oxLmN1cnJlbnQ9ITEseChgVW5zdXBwb3J0ZWQgZmlsZSB0eXBlOiAke1AudHlwZXx8UC5uYW1lfWApO3JldHVybn1pZihrKCEwKSx4KG51bGwpLEsxKG51bGwpLEFRKHt0eXBlOlAudHlwZSxuYW1lOlAubmFtZSxzaXplOlAuc2l6ZX0pKUsxKENRKTt6MS5jdXJyZW50PWw7dHJ5e2xldCBWMT1GMihQKSxCMT1hd2FpdCBKNChQLCJzZXJ2ZS1zaW0tY2Ftc3JjIixWMSxFMSk7QihQLm5hbWUpLFkoazE/InZpZGVvIjoiaW1hZ2UiKSxHKEIxKSxMMShgTG9hZGVkICR7UC5uYW1lfWApfWNhdGNoKFYxKXtpZih6MS5jdXJyZW50KXgoWDQpO2Vsc2UgeChWMT8ubWVzc2FnZT8/IlVwbG9hZCBmYWlsZWQiKX1maW5hbGx5e2soITEpfX0sW10pLHYwPUQoYXN5bmMoUCk9PntQLnByZXZlbnREZWZhdWx0KCksUC5zdG9wUHJvcGFnYXRpb24oKSxVLmN1cnJlbnQ9MCxWKCExKTtsZXQgbD1QLmRhdGFUcmFuc2Zlcj8uZmlsZXM/LlswXTtpZihsKWF3YWl0IHMxKGwpfSxbczFdKSxtMT1EKCgpPT57WSgicGxhY2Vob2xkZXIiKSxHKCIiKSxCKG51bGwpLHgobnVsbCksSzEobnVsbCksejEuY3VycmVudD0hMX0sW10pLHEwPUQoKCk9PntGLmN1cnJlbnQ/LmNsaWNrKCl9LFtdKSxKMD1EKGFzeW5jKFApPT57bGV0IGw9UC50YXJnZXQsaT1sLmZpbGVzPy5bMF07aWYobC52YWx1ZT0iIixpKWF3YWl0IHMxKGkpfSxbczFdKTtiKCgpPT57aWYoIUgpcmV0dXJuO2xldCBQPShsKT0+e2xldCBpPWwudGFyZ2V0O2lmKGkgaW5zdGFuY2VvZiBFbGVtZW50JiZpLmNsb3Nlc3QoIltkYXRhLWNhbWVyYS1zb3VyY2UtbWVudV0iKSlyZXR1cm47QyghMSl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixQKSwoKT0+d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsUCl9LFtIXSk7bGV0IF8wPUQoKFApPT57aWYoJDEoUC5pZCksWSgid2ViY2FtIiksQihudWxsKSx4KG51bGwpLHoxLmN1cnJlbnQ9ITEsQyghMSksSilHMShQLmlkKX0sW0pdKSxjMT1EKCgpPT57YygoUCk9PlA9PT0ib24iPyJvZmYiOiJvbiIpfSxbXSksbjE9IUoxfHxLPT09InBsYWNlaG9sZGVyIixQMD1EKChQKT0+e2lmKFAucHJldmVudERlZmF1bHQoKSxVLmN1cnJlbnQrKyxVLmN1cnJlbnQ9PT0xKVYoITApfSxbXSksdjE9RCgoUCk9PntpZihQLnByZXZlbnREZWZhdWx0KCksUC5kYXRhVHJhbnNmZXIpUC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0iY29weSJ9LFtdKSxDMD1EKChQKT0+e2lmKFAucHJldmVudERlZmF1bHQoKSxVLmN1cnJlbnQtLSxVLmN1cnJlbnQ8PTApVS5jdXJyZW50PTAsVighMSl9LFtdKSxCMD1rUSh7YnVuZGxlSWQ6SixpbmplY3RlZDpKMSxzb3VyY2U6Syxmb3JlZ3JvdW5kSXNJbmplY3RlZDphMX0pLEQxPUIwPT09InN0b3AiP3tsYWJlbDpuPT09InN0b3AiPyJTdG9wcGluZ+KApiI6IlN0b3AiLG9uQ2xpY2s6VjAsa2luZDoic3RvcCJ9OkIwPT09ImF0dGFjaCI/e2xhYmVsOm49PT0iaW5qZWN0Ij8iSW5qZWN0aW5n4oCmIjpgSW5qZWN0ICR7Sn1gLG9uQ2xpY2s6dDEsa2luZDoiYXR0YWNoIn06e2xhYmVsOm49PT0iaW5qZWN0Ij8iU3RhcnRpbmfigKYiOiJQbGF5IixvbkNsaWNrOnQxLGtpbmQ6InBsYXkifSx5MT1CMD09PSJzdG9wIj96fHxuIT09bnVsbDohSnx8enx8biE9PW51bGwsUTA9Sz09PSJwbGFjZWhvbGRlciIsRjA9Sz09PSJ3ZWJjYW0iLE4wPShLPT09ImltYWdlInx8Sz09PSJ2aWRlbyIpJiYhIU4sazA9RjA/Ty5maW5kKChQKT0+UC5pZD09PWopPy5uYW1lPz9qPz8iV2ViY2FtIjpudWxsLFgxPXo/InVwbG9hZGluZyI6TjA/ImZpbGUiOkYwPyJ3ZWJjYW0iOiJwbGFjZWhvbGRlciI7cmV0dXJuIFgoZTEse29wZW46USxvbk9wZW5DaGFuZ2U6Wixib2R5Q2xhc3NOYW1lOiJwdC0yLjUiLHN1bW1hcnlDbGFzc05hbWU6ImdyaWQgW2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvXzFmcl9hdXRvXSBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1sZWZ0IixzdW1tYXJ5OlgoWjEse2NoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIGxlYWRpbmctbm9uZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOiJDYW1lcmEifSksWChQUSx7c3RhdGU6QzF9KV19KSxjaGlsZHJlbjpYKCJkaXYiLHtvbkRyYWdFbnRlcjpQMCxvbkRyYWdPdmVyOnYxLG9uRHJhZ0xlYXZlOkMwLG9uRHJvcDp2MCxjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTIuNSIsY2hpbGRyZW46W1goInAiLHtjbGFzc05hbWU6Im0tMCB0ZXh0LVsxMHB4XSBsZWFkaW5nLVsxLjVdIHRleHQtd2hpdGUvNDUiLGNoaWxkcmVuOiJSZXBsYWNlcyB0aGUgc2ltdWxhdG9yJ3MgY2FtZXJhIGZlZWQgYnkgaW5qZWN0aW5nIGEgZHlsaWIgYXQgYXBwIGxhdW5jaCBhbmQgc3RyZWFtaW5nIGZyYW1lcyBpbnRvIHNoYXJlZCBtZW1vcnkuIFBpY2sgbWVkaWEgb3IgYSB3ZWJjYW0sIHRoZW4gUGxheSB0byBpbmplY3QgaW50byB0aGUgZm9yZWdyb3VuZCBhcHAuIn0pLFgoImlucHV0Iix7cmVmOkYsdHlwZToiZmlsZSIsYWNjZXB0OiJpbWFnZS8qLHZpZGVvLyoiLGNsYXNzTmFtZToiaGlkZGVuIixvbkNoYW5nZTpKMH0pLFgoImRpdiIse29uQ2xpY2s6KFApPT57aWYoIVEwKXJldHVybjtpZihQLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1jbGVhci1tZWRpYV0iKSlyZXR1cm47cTAoKX0sdGl0bGU6UTA/Ik5vIHNvdXJjZSBzZWxlY3RlZCDigJQgUGxheSB1c2VzIGEgdGVzdC1wYXR0ZXJuIGZlZWQuIENsaWNrIHRvIHBpY2sgYW4gaW1hZ2UvdmlkZW8sIG9yIGRyb3Agb25lIGhlcmUuIjpGMD9gU291cmNlOiAke2swfWA6YFNvdXJjZTogJHtOPz9LfWAsY2xhc3NOYW1lOlsicmVsYXRpdmUgbWluLWgtWzQ0cHhdIGZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yLjUgcHgtMy41IHB5LTIuNSByb3VuZGVkLVs3cHhdIHRleHQtY2VudGVyIHRyYW5zaXRpb24tW2JvcmRlci1jb2xvcixiYWNrZ3JvdW5kXSBkdXJhdGlvbi0xNTAiLFEwPyJiZy13aGl0ZS9bMC4wNF0gYm9yZGVyIGJvcmRlci1kYXNoZWQgYm9yZGVyLXdoaXRlLzEyIjoiYmctd2hpdGUvWzAuMDRdIGJvcmRlciBib3JkZXItd2hpdGUvOCIsTD8iIWJnLVtyZ2JhKDEwLDEzMiwyNTUsMC4wOCldICFib3JkZXItW3JnYmEoMTAsMTMyLDI1NSwwLjYpXSI6IiIsej8iY3Vyc29yLXByb2dyZXNzIjpRMD8iY3Vyc29yLXBvaW50ZXIiOiJjdXJzb3ItZGVmYXVsdCJdLmpvaW4oIiAiKSxjaGlsZHJlbjpbWCh3USx7bW9kZTpYMSxmaWxlTmFtZTpOLHdlYmNhbU5hbWU6azAsc291cmNlS2luZDpLfSksIVEwJiYheiYmWCgiYnV0dG9uIix7ImRhdGEtY2xlYXItbWVkaWEiOiEwLG9uQ2xpY2s6KFApPT57UC5zdG9wUHJvcGFnYXRpb24oKSxtMSgpfSxjbGFzc05hbWU6InNocmluay0wIHctNSBoLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgdGV4dC13aGl0ZS81NSBob3Zlcjp0ZXh0LXdoaXRlLzkwIGN1cnNvci1wb2ludGVyIHAtMCIsImFyaWEtbGFiZWwiOiJDbGVhciBzb3VyY2UiLHRpdGxlOiJDbGVhciDihpIgcGxhY2Vob2xkZXIiLGNoaWxkcmVuOlgoRzAse3NpemU6MTQsc3Ryb2tlV2lkdGg6Mn0pfSldfSksUTAmJiF6JiZYKERRLHt9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtc3RyZXRjaCBnYXAtMS41IixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSIsImRhdGEtY2FtZXJhLXNvdXJjZS1tZW51IjohMCxjaGlsZHJlbjpbWCgiYnV0dG9uIix7b25DbGljazooKT0+QygoUCk9PiFQKSxjbGFzc05hbWU6ImgtZnVsbCBtaW4taC1bMzZweF0gdy0xMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy10cmFuc3BhcmVudCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHRleHQtd2hpdGUvODUgcm91bmRlZC1bN3B4XSBjdXJzb3ItcG9pbnRlciBwLTAgaG92ZXI6Ymctd2hpdGUvWzAuMDZdIGhvdmVyOmJvcmRlci13aGl0ZS8yMCBob3Zlcjp0ZXh0LXdoaXRlIiwiYXJpYS1oYXNwb3B1cCI6Im1lbnUiLCJhcmlhLWV4cGFuZGVkIjpILHRpdGxlOks9PT0id2ViY2FtIj9gU291cmNlOiB3ZWJjYW0ke2o/YCAoJHtPLmZpbmQoKFApPT5QLmlkPT09aik/Lm5hbWU/P2p9KWA6IiJ9IOKAlCBjbGljayB0byBjaGFuZ2VgOmBTb3VyY2U6ICR7S30g4oCUIGNsaWNrIHRvIHBpY2sgbWVkaWEgb3Igd2ViY2FtYCwiYXJpYS1sYWJlbCI6IkNob29zZSBjYW1lcmEgc291cmNlIixjaGlsZHJlbjpYKHYyLHtzaXplOjIwLHN0cm9rZVdpZHRoOjJ9KX0pLEgmJlgoImRpdiIse3JvbGU6Im1lbnUiLGNsYXNzTmFtZToiYWJzb2x1dGUgdG9wLVtjYWxjKDEwMCUrNnB4KV0gbGVmdC0wIHotMTAgbWluLXctWzIwMHB4XSBmbGV4IGZsZXgtY29sIGdhcC1weCBwLTEgYmctcGFuZWwgYm9yZGVyIGJvcmRlci13aGl0ZS84IHJvdW5kZWQtWzdweF0gc2hhZG93LVswXzhweF8yNHB4X3JnYmEoMCwwLDAsMC40KV0iLGNoaWxkcmVuOltYKCJidXR0b24iLHtyb2xlOiJtZW51aXRlbSIsY2xhc3NOYW1lOiJ0ZXh0LWxlZnQgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgdGV4dC13aGl0ZS84NSB0ZXh0LVsxMnB4XSBweC0yLjUgcHktWzdweF0gcm91bmRlZC1tZCBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy13aGl0ZS9bMC4wNl0iLG9uQ2xpY2s6KCk9PntDKCExKSxxMCgpfSx0aXRsZToiUGljayBhbiBpbWFnZSBvciB2aWRlbyBmcm9tIGRpc2siLGNoaWxkcmVuOiJCcm93c2UgbWVkaWHigKYifSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJoLXB4IGJnLXdoaXRlLzggbXktMSJ9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwbC0yLjUgcHItMiBwdC0xIHBiLVsycHhdIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTBweF0gdGV4dC13aGl0ZS80NSB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMDhlbV0iLGNoaWxkcmVuOnc/IkNhbWVyYXMgKGxvYWRpbmfigKYpIjpPLmxlbmd0aD09PTA/Ik5vIGNhbWVyYXMiOiJDYW1lcmFzIn0pLFgoImJ1dHRvbiIse29uQ2xpY2s6KFApPT57UC5zdG9wUHJvcGFnYXRpb24oKSxVMSgpfSxkaXNhYmxlZDp3LGNsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdy1bMjJweF0gaC1bMjJweF0gYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcm91bmRlZC1bNXB4XSB0ZXh0LXdoaXRlLzU1IGhvdmVyOnRleHQtd2hpdGUvOTAgY3Vyc29yLXBvaW50ZXIgcC0wIGRpc2FibGVkOm9wYWNpdHktNTAiLCJhcmlhLWxhYmVsIjoiUmVmcmVzaCBjYW1lcmFzIix0aXRsZToiUmVmcmVzaCBjYW1lcmFzIixjaGlsZHJlbjpYKGkwLHtzaXplOjEzLHN0cm9rZVdpZHRoOjJ9KX0pXX0pLE8ubWFwKChQKT0+e2xldCBsPUs9PT0id2ViY2FtIiYmaj09PVAuaWQ7cmV0dXJuIFgoImJ1dHRvbiIse3JvbGU6Im1lbnVpdGVtIixjbGFzc05hbWU6WyJ0ZXh0LWxlZnQgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgdGV4dC1bMTJweF0gcHgtMi41IHB5LVs3cHhdIHJvdW5kZWQtbWQgY3Vyc29yLXBvaW50ZXIgaG92ZXI6Ymctd2hpdGUvWzAuMDZdIixsPyIhYmctd2hpdGUvWzAuMTJdICF0ZXh0LXdoaXRlIjoidGV4dC13aGl0ZS84NSJdLmpvaW4oIiAiKSxvbkNsaWNrOigpPT5fMChQKSx0aXRsZTpQLm5hbWUsY2hpbGRyZW46UC5uYW1lfSxQLmlkKX0pXX0pXX0pLFgoImJ1dHRvbiIse29uQ2xpY2s6RDEub25DbGljayxkaXNhYmxlZDp5MSxjbGFzc05hbWU6WyJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEuNSBweS0yIHB4LTIuNSBib3JkZXItbm9uZSByb3VuZGVkLVs3cHhdIHRleHQtWzEycHhdIGZvbnQtc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgZGlzYWJsZWQ6b3BhY2l0eS01MCBtaW4taC1bMzZweF0iLEQxLmtpbmQ9PT0ic3RvcCI/ImJnLXdoaXRlL1swLjE2XSB0ZXh0LXdoaXRlIGVuYWJsZWQ6aG92ZXI6Ymctd2hpdGUvWzAuMjJdIjoiYmctc3VjY2Vzcy1lbWVyYWxkIHRleHQtWyMwNjIwMThdIGVuYWJsZWQ6aG92ZXI6YnJpZ2h0bmVzcy1bMS4wOF0iXS5qb2luKCIgIiksdGl0bGU6RDEua2luZD09PSJzdG9wIj8iU3RvcCB0aGUgY2FtZXJhIGhlbHBlciBhbmQgdGVybWluYXRlIGluamVjdGVkIGFwcHMiOkQxLmtpbmQ9PT0iYXR0YWNoIj9gSW5qZWN0ICR7Sn0gc28gaXQgam9pbnMgdGhlIGNhbWVyYSBmZWVkYDohSj8iQnJpbmcgYW4gYXBwIHRvIHRoZSBmb3JlZ3JvdW5kIGZpcnN0IjoiU3RhcnQ6IGluamVjdCB0aGUgZHlsaWIgYW5kIGxhdW5jaCB0aGUgZm9yZWdyb3VuZCBhcHAgd2l0aCB0aGUgY2hvc2VuIHNvdXJjZSIsImFyaWEtcHJlc3NlZCI6RDEua2luZD09PSJzdG9wIiwiYXJpYS1sYWJlbCI6RDEua2luZD09PSJzdG9wIj8iU3RvcCI6IlBsYXkiLGNoaWxkcmVuOltEMS5raW5kPT09InN0b3AiP1godTIse30pOlgocDIse30pLFgoInNwYW4iLHtjaGlsZHJlbjpEMS5raW5kPT09InN0b3AiPyJTdG9wIjpEMS5raW5kPT09ImF0dGFjaCI/IkluamVjdCI6IlBsYXkifSldfSksWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOmMxLGRpc2FibGVkOm4xLGNsYXNzTmFtZTpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdy0xMCBtaW4taC1bMzZweF0gYm9yZGVyIHJvdW5kZWQtWzdweF0gZm9udC1baW5oZXJpdF0gZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgYWN0aXZlOnNjYWxlLVswLjk3XSAke209PT0ib24iPyJiZy13aGl0ZSBib3JkZXItd2hpdGUgdGV4dC1bIzBhMGEwY10gY3Vyc29yLXBvaW50ZXIgZW5hYmxlZDpob3ZlcjpiZy13aGl0ZS9bMC44OF0gZW5hYmxlZDpob3Zlcjpib3JkZXItd2hpdGUvWzAuODhdIGVuYWJsZWQ6aG92ZXI6dGV4dC1bIzBhMGEwY10iOiJiZy13aGl0ZS9bMC4wNF0gYm9yZGVyLXdoaXRlLzggdGV4dC13aGl0ZS84NSBjdXJzb3ItcG9pbnRlciBlbmFibGVkOmhvdmVyOmJnLXdoaXRlL1swLjA5XSBlbmFibGVkOmhvdmVyOmJvcmRlci1bcmdiYSgyNTUsMjU1LDI1NSwwLjE4KV0gZW5hYmxlZDpob3Zlcjp0ZXh0LXdoaXRlIn1gLCJhcmlhLWxhYmVsIjpgTWlycm9yOiAke219IOKAlCB0YXAgdG8gdG9nZ2xlYCx0aXRsZTpuMT8iTWlycm9yIHRvZ2dsZSBhdmFpbGFibGUgb25jZSBhIHNvdXJjZSBpcyBzdHJlYW1pbmciOmBNaXJyb3I6ICR7bX0g4oCUIGNsaWNrIHRvIHRvZ2dsZWAsImFyaWEtcHJlc3NlZCI6bT09PSJvbiIsY2hpbGRyZW46WCh4Mix7c2l6ZToyMCxzdHJva2VXaWR0aDoyLGZpbGw6bT09PSJvbiI/ImN1cnJlbnRDb2xvciI6Im5vbmUifSl9KV19KSxhJiZYKFo0LHtraW5kOiJ3YXJuaW5nIixtZXNzYWdlOmF9KSxkJiZYKFo0LHtraW5kOiJlcnJvciIsbWVzc2FnZTpkfSldfSl9KX12YXIgcTQ9NTAwO2Z1bmN0aW9uIEc0KHt1ZGlkOiQsZXZlbnRzRW5kcG9pbnQ6Sn0pe2xldFtRLFpdPUEoITEpLFtLLFldPUEoW10pLFtxLEddPUEoITEpLE49VDEoKCk9Pko/P2Ake2YxKCJhcGkvZXZlbnQtbG9nL2V2ZW50cyIpfT9kZXZpY2U9JHtlbmNvZGVVUklDb21wb25lbnQoJCl9YCxbSiwkXSk7YigoKT0+e0coITEpLFkoW10pO2xldCBMPXkwKE4pO3JldHVybiBMLm9ubWVzc2FnZT0oe2RhdGE6Vn0pPT57dHJ5e2xldCBVPUpTT04ucGFyc2UoVik7aWYoRyghMSksQXJyYXkuaXNBcnJheShVLmV2ZW50cykpWShVLmV2ZW50cy5zbGljZSgtcTQpKTtlbHNlIGlmKFUuZXZlbnQpWSgoeik9PntyZXR1cm5bLi4uei5maWx0ZXIoKEgpPT5ILmlkIT09VS5ldmVudC5pZCksVS5ldmVudF0uc2xpY2UoLXE0KX0pfWNhdGNoe319LEwub25lcnJvcj0oKT0+RyghMCksKCk9PkwuY2xvc2UoKX0sW05dKTtsZXQgQj1UMSgoKT0+Sy5zbGljZSgpLnJldmVyc2UoKSxbS10pO3JldHVybiBYKGUxLHtvcGVuOlEsb25PcGVuQ2hhbmdlOlosImRhdGEtZXZlbnQtbG9nIjoiIixzdW1tYXJ5Q2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b18xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbGVmdCIsc3VtbWFyeTpYKFoxLHtjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzUwIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wOGVtXSBsZWFkaW5nLW5vbmUiLGNoaWxkcmVuOiJFdmVudCBMb2cifSksWCgic3BhbiIse30pLFgoInNwYW4iLHtjbGFzc05hbWU6InJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci13aGl0ZS84IGJnLXdoaXRlL1swLjA0XSBweC0xLjUgcHktWzNweF0gdGV4dC1bMTBweF0gZm9udC1tb25vIHRleHQtd2hpdGUvNjAiLGNoaWxkcmVuOksubGVuZ3RofSldfSksY2hpbGRyZW46Qi5sZW5ndGg9PT0wP1goImRpdiIse3JvbGU6InN0YXR1cyIsImFyaWEtbGl2ZSI6InBvbGl0ZSIsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS00IHRleHQtWzEycHhdIHRleHQtd2hpdGUvNDUiLGNoaWxkcmVuOnE/IkRpc2Nvbm5lY3RlZCI6Ik5vIGV2ZW50cyB5ZXQifSk6WCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IG1heC1oLVszMjBweF0gZmxleC1jb2wgZ2FwLTEgb3ZlcmZsb3cteS1hdXRvIHB5LTAuNSBbc2Nyb2xsYmFyLXdpZHRoOnRoaW5dIixyb2xlOiJsaXN0IixjaGlsZHJlbjpCLm1hcCgoTCk9PlgoVFEse2V2ZW50Okx9LEwuaWQpKX0pfSl9ZnVuY3Rpb24gVFEoe2V2ZW50OiR9KXtsZXQgSj1JUSgkLnRpbWVzdGFtcCksUT1bJC5zb3VyY2UsJC5raW5kLCQuYWN0aW9uXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIC8gIiksWj0kLm1zZz8/JC5zdW1tYXJ5LEs9JC5zdGF0dXM9PT0iZXJyb3IiPyJib3JkZXItWyNmZjQ1M2FdLzUwIGJnLVsjZmY0NTNhXS8xMCB0ZXh0LVsjZmZiM2FkXSI6ImJvcmRlci13aGl0ZS84IGJnLXdoaXRlL1swLjA0XSB0ZXh0LXdoaXRlLzUwIjtyZXR1cm4gWCgiZGl2Iix7cm9sZToibGlzdGl0ZW0iLHRpdGxlOlEsY2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy1bNTZweF8xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtbWQgcHgtMS41IHB5LTEuNSB0ZXh0LVsxMnB4XSBsZWFkaW5nLXRpZ2h0IGhvdmVyOmJnLXdoaXRlL1swLjA1XSIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbW9ubyB0ZXh0LVsxMHB4XSB0ZXh0LXdoaXRlLzQ1IixjaGlsZHJlbjpKfSksWCgic3BhbiIse2NsYXNzTmFtZToibWluLXctMCIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6ImJsb2NrIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtd2hpdGUvOTAiLGNoaWxkcmVuOlp9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJtdC0wLjUgYmxvY2sgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgZm9udC1tb25vIHRleHQtWzEwcHhdIHRleHQtd2hpdGUvNDAiLGNoaWxkcmVuOlF9KV19KSwkLnN0YXR1cz9YKCJzcGFuIix7Y2xhc3NOYW1lOmByb3VuZGVkLW1kIGJvcmRlciBweC0xLjUgcHktWzNweF0gdGV4dC1bMTBweF0gZm9udC1tb25vICR7S31gLGNoaWxkcmVuOiQuc3RhdHVzfSk6bnVsbF19KX1mdW5jdGlvbiBJUSgkKXtsZXQgSj1uZXcgRGF0ZSgkKTtpZihOdW1iZXIuaXNOYU4oSi5nZXRUaW1lKCkpKXJldHVybiIiO3JldHVybiBKLnRvTG9jYWxlVGltZVN0cmluZyhbXSx7aG91cjoiMi1kaWdpdCIsbWludXRlOiIyLWRpZ2l0IixzZWNvbmQ6IjItZGlnaXQifSl9dmFyIEVRPTYwLHlRPTgwMDA7ZnVuY3Rpb24gVjQoJCl7bGV0W0osUV09QShudWxsKSxbWixLXT1BKFtdKSxbWSxxXT1BKCExKSxbRyxOXT1BKCExKSxCPVQoMCk7cmV0dXJuIGIoKCk9PntRKG51bGwpLEsoW10pLHEoITEpLE4oITEpLEIuY3VycmVudD0wO2xldCBMPXkwKCQpO0wub25tZXNzYWdlPSh7ZGF0YTpVfSk9Pnt0cnl7bGV0IHo9SlNPTi5wYXJzZShVKTtpZihxKCExKSwic2NoZW1hVmVyc2lvbiJpbiB6KVEoeik7ZWxzZSBpZigidCJpbiB6KXtsZXQgaz16O0IuY3VycmVudD1EYXRlLm5vdygpLE4oITEpLEsoKEgpPT57bGV0IEM9Wy4uLkhdLnJldmVyc2UoKS5maW5kKChPKT0+Ty5idW5kbGVJZCE9PW51bGwpPy5idW5kbGVJZD8/bnVsbDtyZXR1cm5bLi4uQyE9PW51bGwmJmsuYnVuZGxlSWQhPT1udWxsJiZDIT09ay5idW5kbGVJZD9bXTpILGtdLnNsaWNlKC1FUSl9KX19Y2F0Y2h7fX0sTC5vbmVycm9yPSgpPT5xKCEwKTtsZXQgVj1zZXRJbnRlcnZhbCgoKT0+e2lmKEIuY3VycmVudD4wJiZEYXRlLm5vdygpLUIuY3VycmVudD55USlOKCEwKX0sMTAwMCk7cmV0dXJuKCk9PntMLmNsb3NlKCksY2xlYXJJbnRlcnZhbChWKX19LFskXSkse21ldGE6SixsYXRlc3Q6Wi5hdCgtMSk/P251bGwsaGlzdG9yeTpaLGVycm9yZWQ6WSxzdGFsZTpHfX1mdW5jdGlvbiBlMygkKXtyZXR1cm5gJHtNYXRoLnJvdW5kKCQpfSVgfWZ1bmN0aW9uICQ4KCQpe2xldCBKPSQvMTA0ODU3NjtyZXR1cm4gSj49MTAyND9gJHsoSi8xMDI0KS50b0ZpeGVkKDEpfSBHQmA6YCR7TWF0aC5yb3VuZChKKX0gTUJgfWZ1bmN0aW9uIEI0KCQsSixRKXtpZigkLmxlbmd0aDwyKXJldHVybiIiO2xldCBaPU1hdGgubWF4KC4uLiQsMSksSz1KLygkLmxlbmd0aC0xKSxZPSQubWFwKChHLE4pPT4oe3g6TipLLHk6US1HL1oqUX0pKSxxPWBNJHtZWzBdLngudG9GaXhlZCgxKX0sJHtZWzBdLnkudG9GaXhlZCgxKX1gO2ZvcihsZXQgRz0wO0c8WS5sZW5ndGgtMTtHKyspe2xldCBOPVlbRy0xXT8/WVtHXSxCPVlbR10sTD1ZW0crMV0sVj1ZW0crMl0/P0wsVT1NYXRoLm1pbihCLnksTC55KSx6PU1hdGgubWF4KEIueSxMLnkpLGs9KEkpPT5NYXRoLm1pbih6LE1hdGgubWF4KFUsSSkpLEg9Qi54KyhMLngtTi54KS82LEM9ayhCLnkrKEwueS1OLnkpLzYpLEY9TC54LShWLngtQi54KS82LE89ayhMLnktKFYueS1CLnkpLzYpO3ErPWAgQyR7SC50b0ZpeGVkKDEpfSwke0MudG9GaXhlZCgxKX0gJHtGLnRvRml4ZWQoMSl9LCR7Ty50b0ZpeGVkKDEpfSAke0wueC50b0ZpeGVkKDEpfSwke0wueS50b0ZpeGVkKDEpfWB9cmV0dXJuIHF9dmFyIEo4PTk2LGQ1PTI0O2Z1bmN0aW9uIEw0KHt1ZGlkOiQsY3VycmVudEFwcEJ1bmRsZUlkOkosbWV0cmljc0VuZHBvaW50OlF9KXtsZXQgWj1UMSgoKT0+UT8/YCR7ZjEoIm1ldHJpY3MiKX0/ZGV2aWNlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCQpfWAsW1EsJF0pLHttZXRhOkssbGF0ZXN0OlksaGlzdG9yeTpxLGVycm9yZWQ6RyxzdGFsZTpOfT1WNChaKSxbQixMXT1BKCEwKSxWPVkhPT1udWxsJiZZLmJ1bmRsZUlkIT09bnVsbCYmIUcmJiFOLFU9SiE9bnVsbCYmSi5zdGFydHNXaXRoKCJjb20uYXBwbGUuIiksej1HPyJUaGUgbWV0cmljcyBzdHJlYW0gZGlzY29ubmVjdGVkIjpVPyJPbmx5IHlvdXIgYXBwIGlzIG1lYXN1cmVkOyBhIHN5c3RlbSBhcHAgaXMgaW4gdGhlIGZvcmVncm91bmQiOiJXYWl0aW5nIGZvciBDUFUgLyBtZW1vcnkgZGF0YSI7cmV0dXJuIFgoZTEse29wZW46Qixvbk9wZW5DaGFuZ2U6TCxzdW1tYXJ5Q2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b18xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbGVmdCIsYm9keUNsYXNzTmFtZTpWP3ZvaWQgMDoiaGlkZGVuIixzdW1tYXJ5OlgoWjEse2NoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIGxlYWRpbmctbm9uZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOiJBY3Rpdml0eSJ9KSxWPyFCJiZYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzQwIHRhYnVsYXItbnVtcyB0ZXh0LXJpZ2h0IixjaGlsZHJlbjpbZTMoWS5jcHVQY3QpLCIgwrcgIiwkOChZLm1lbUJ5dGVzKV19KTpYKCJzcGFuIix7ImRhdGEtbWV0cmljcy13YXJuaW5nIjohMCxyb2xlOiJzdGF0dXMiLGNsYXNzTmFtZToiZ3JvdXAgcmVsYXRpdmUganVzdGlmeS1zZWxmLWVuZCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOltYKHAwLHsiYXJpYS1oaWRkZW4iOiJ0cnVlIixjbGFzc05hbWU6InctMy41IGgtMy41IHRleHQtYW1iZXItNDAwIn0pLFgoInNwYW4iLHtjbGFzc05hbWU6InNyLW9ubHkiLGNoaWxkcmVuOnp9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHJpZ2h0LTAgdG9wLWZ1bGwgei0xMCBtdC0xIGhpZGRlbiB3LW1heCBtYXgtdy1bMjIwcHhdIHJvdW5kZWQtbWQgYmctYmxhY2svOTAgcHgtMiBweS0xIHRleHQtWzExcHhdIGxlYWRpbmctc251ZyB0ZXh0LXdoaXRlLzkwIHNoYWRvdy1sZyBncm91cC1ob3ZlcjpibG9jayIsY2hpbGRyZW46en0pXX0pXX0pLGNoaWxkcmVuOlY/WChaMSx7Y2hpbGRyZW46W1goTjQse2xhYmVsOiJDUFUiLHZhbHVlOmUzKFkuY3B1UGN0KSxoaW50Oks/YCR7Sy5ob3N0Q29yZXN9IGNvcmVzYDp2b2lkIDAsdmFsdWVzOnEubWFwKChrKT0+ay5jcHVQY3QpLGNsYXNzTmFtZToidGV4dC1lbWVyYWxkLTQwMCJ9KSxYKE40LHtsYWJlbDoiTWVtb3J5Iix2YWx1ZTokOChZLm1lbUJ5dGVzKSx2YWx1ZXM6cS5tYXAoKGspPT5rLm1lbUJ5dGVzKSxjbGFzc05hbWU6InRleHQtc2t5LTQwMCJ9KV19KTpudWxsfSl9ZnVuY3Rpb24gTjQoe2xhYmVsOiQsdmFsdWU6SixoaW50OlEsdmFsdWVzOlosY2xhc3NOYW1lOkt9KXtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0xIixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWJhc2VsaW5lIGp1c3RpZnktYmV0d2VlbiIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6InRleHQtd2hpdGUvNTAgdGV4dC1bMTFweF0iLGNoaWxkcmVuOiR9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0YWJ1bGFyLW51bXMgdGV4dC1bMTFweF0iLGNoaWxkcmVuOltKLFEmJlgoInNwYW4iLHtjbGFzc05hbWU6InRleHQtd2hpdGUvMzAgdGV4dC1bMTFweF0gbWwtMS41IixjaGlsZHJlbjpRfSldfSldfSksWChiUSx7dmFsdWVzOlosY2xhc3NOYW1lOkt9KV19KX1mdW5jdGlvbiBiUSh7dmFsdWVzOiQsY2xhc3NOYW1lOkp9KXtsZXQgUT1CNCgkLEo4LGQ1KSxaPVE/YCR7UX0gTCR7Sjh9LCR7ZDV9IEwwLCR7ZDV9IFpgOiIiO3JldHVybiBYKCJzdmciLHt2aWV3Qm94OmAwIDAgJHtKOH0gJHtkNX1gLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUiLGNsYXNzTmFtZTpgdy1mdWxsIGgtOCAke0p9YCxjaGlsZHJlbjpbWCgicGF0aCIse2Q6WixmaWxsOiJjdXJyZW50Q29sb3IiLG9wYWNpdHk6MC4xMixzdHJva2U6Im5vbmUifSksWCgicGF0aCIse2Q6USxmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6MS41LHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIn0pXX0pfXZhciByMj1bImV4dHJhLXNtYWxsIiwic21hbGwiLCJtZWRpdW0iLCJsYXJnZSIsImV4dHJhLWxhcmdlIiwiZXh0cmEtZXh0cmEtbGFyZ2UiLCJleHRyYS1leHRyYS1leHRyYS1sYXJnZSJdLFNRPTI1MCx4UT17YXBwZWFyYW5jZToibGlnaHQiLCJsaXF1aWQtZ2xhc3MiOiJjbGVhciIsImNvbG9yLWZpbHRlciI6Im5vbmUiLCJ0ZXh0LXNpemUiOiJsYXJnZSIsInJlZHVjZS1tb3Rpb24iOiJvZmYiLCJpbmNyZWFzZS1jb250cmFzdCI6Im9mZiIsInNob3ctYm9yZGVycyI6Im9mZiIsInJlZHVjZS10cmFuc3BhcmVuY3kiOiJvZmYiLHZvaWNlb3Zlcjoib2ZmIn0sUTg9e2FwcGVhcmFuY2U6W3t2YWx1ZToibGlnaHQiLGxhYmVsOiJMaWdodCJ9LHt2YWx1ZToiZGFyayIsbGFiZWw6IkRhcmsifV0sImxpcXVpZC1nbGFzcyI6W3t2YWx1ZToiY2xlYXIiLGxhYmVsOiJDbGVhciJ9LHt2YWx1ZToidGludGVkIixsYWJlbDoiVGludGVkIn1dLCJjb2xvci1maWx0ZXIiOlt7dmFsdWU6Im5vbmUiLGxhYmVsOiJOb25lIn0se3ZhbHVlOiJyZWQtZ3JlZW4iLGxhYmVsOiJSZWQvR3JlZW4gKFByb3Rhbm9waWEpIn0se3ZhbHVlOiJncmVlbi1yZWQiLGxhYmVsOiJHcmVlbi9SZWQgKERldXRlcmFub3BpYSkifSx7dmFsdWU6ImJsdWUteWVsbG93IixsYWJlbDoiQmx1ZS9ZZWxsb3cgKFRyaXRhbm9waWEpIn0se3ZhbHVlOiJncmF5c2NhbGUiLGxhYmVsOiJHcmF5c2NhbGUifV19LGpRPVt7a2V5OiJyZWR1Y2UtbW90aW9uIixsYWJlbDoiUmVkdWNlIE1vdGlvbiJ9LHtrZXk6ImluY3JlYXNlLWNvbnRyYXN0IixsYWJlbDoiSW5jcmVhc2UgQ29udHJhc3QifSx7a2V5OiJzaG93LWJvcmRlcnMiLGxhYmVsOiJTaG93IEJvcmRlcnMifSx7a2V5OiJyZWR1Y2UtdHJhbnNwYXJlbmN5IixsYWJlbDoiUmVkdWNlIFRyYW5zcGFyZW5jeSJ9LHtrZXk6InZvaWNlb3ZlciIsbGFiZWw6IlZvaWNlT3ZlciJ9XTtmdW5jdGlvbiBZMCh7aWNvbjokLGxhYmVsOkosY2hpbGRyZW46UX0pe3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBtaW4taC1bMzBweF0iLCJkYXRhLXNldHRpbmctcm93IjpKLGNoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlLzkwIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToiZmxleCBzaXplLVsxOHB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSIsY2hpbGRyZW46JH0pLEpdfSksWCgic3BhbiIse2NsYXNzTmFtZToiZmxleCBtaW4tdy0wIGp1c3RpZnktZW5kIixjaGlsZHJlbjpRfSldfSl9ZnVuY3Rpb24gdlEoe3ZhbHVlOiQsZGlzYWJsZWQ6SixvbkNoYW5nZTpRfSl7bGV0W1osS109QShudWxsKSxZPVQobnVsbCkscT1UKG51bGwpLEc9RCgoQyk9PntpZihxLmN1cnJlbnQ9PT1DKXJldHVybjtxLmN1cnJlbnQ9QyxRKEMpfSxbUV0pLE49RCgoQyk9PntpZihLKEMpLFkuY3VycmVudCljbGVhclRpbWVvdXQoWS5jdXJyZW50KTtZLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+RyhDKSxTUSl9LFtHXSksQj1EKCgpPT57aWYoWS5jdXJyZW50KWNsZWFyVGltZW91dChZLmN1cnJlbnQpLFkuY3VycmVudD1udWxsO0soKEMpPT57aWYoQyE9PW51bGwpRyhDKTtyZXR1cm4gbnVsbH0pLHEuY3VycmVudD1udWxsfSxbR10pLEw9cjIubGVuZ3RoLTEsVj1aPz8kLFU9YCR7Vi9MKjEwMH0lYDtyZXR1cm4gWCgic3BhbiIse2NsYXNzTmFtZToiZmxleCB3LVsxMjBweF0gbWluLXctMCBmbGV4LWNvbCIsY2hpbGRyZW46W1goImlucHV0Iix7dHlwZToicmFuZ2UiLCJhcmlhLWxhYmVsIjoiVGV4dCBTaXplIixtaW46MCxtYXg6TCxzdGVwOjEsdmFsdWU6VixkaXNhYmxlZDpKLG9uQ2hhbmdlOihDKT0+TihOdW1iZXIoQy50YXJnZXQudmFsdWUpKSxvblBvaW50ZXJVcDpCLG9uS2V5VXA6QixvbkJsdXI6QixzdHlsZTp7Ii0tc2xpZGVyLWZpbGwiOlUsIi0tc2xpZGVyLWZpbGwtY29sb3IiOko/InJnYmEoMjU1LDI1NSwyNTUsMC4zKSI6IiMwYTg0ZmYifSxjbGFzc05hbWU6YGgtWzEzcHhdIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1mdWxsIGJnLXRyYW5zcGFyZW50IG91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOltvdXRsaW5lOjEuNXB4X3NvbGlkX3JnYmEoMTAsMTMyLDI1NSwwLjU1KV0gZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC00ICR7Sj8iY3Vyc29yLWRlZmF1bHQiOiJjdXJzb3ItcG9pbnRlciJ9ICR7IlsmOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja106aC1bNHB4XSBbJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2tdOnJvdW5kZWQtZnVsbCBbJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2tdOltiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0b19yaWdodCx2YXIoLS1zbGlkZXItZmlsbC1jb2xvcilfdmFyKC0tc2xpZGVyLWZpbGwpLHJnYmEoMjU1LDI1NSwyNTUsMC4yMilfdmFyKC0tc2xpZGVyLWZpbGwpKV0gWyY6Oi1tb3otcmFuZ2UtdHJhY2tdOmgtWzRweF0gWyY6Oi1tb3otcmFuZ2UtdHJhY2tdOnJvdW5kZWQtZnVsbCBbJjo6LW1vei1yYW5nZS10cmFja106Ymctd2hpdGUvMjAgWyY6Oi1tb3otcmFuZ2UtcHJvZ3Jlc3NdOmgtWzRweF0gWyY6Oi1tb3otcmFuZ2UtcHJvZ3Jlc3NdOnJvdW5kZWQtZnVsbCBbJjo6LW1vei1yYW5nZS1wcm9ncmVzc106YmctW3ZhcigtLXNsaWRlci1maWxsLWNvbG9yKV0ifSAkeyJbJjo6LXdlYmtpdC1zbGlkZXItdGh1bWJdOmFwcGVhcmFuY2Utbm9uZSBbJjo6LXdlYmtpdC1zbGlkZXItdGh1bWJdOnNpemUtWzEzcHhdIFsmOjotd2Via2l0LXNsaWRlci10aHVtYl06cm91bmRlZC1mdWxsIFsmOjotd2Via2l0LXNsaWRlci10aHVtYl06Ymctd2hpdGUgWyY6ZGlzYWJsZWQ6Oi13ZWJraXQtc2xpZGVyLXRodW1iXTpiZy13aGl0ZS81MCBbJjo6LXdlYmtpdC1zbGlkZXItdGh1bWJdOnNoYWRvdy1bMF8xcHhfM3B4X3JnYmEoMCwwLDAsMC40NSldIFsmOjotd2Via2l0LXNsaWRlci10aHVtYl06LW10LVs0LjVweF0gWyY6Oi1tb3otcmFuZ2UtdGh1bWJdOnNpemUtWzEzcHhdIFsmOjotbW96LXJhbmdlLXRodW1iXTpyb3VuZGVkLWZ1bGwgWyY6Oi1tb3otcmFuZ2UtdGh1bWJdOmJvcmRlci1ub25lIFsmOjotbW96LXJhbmdlLXRodW1iXTpiZy13aGl0ZSBbJjpkaXNhYmxlZDo6LW1vei1yYW5nZS10aHVtYl06Ymctd2hpdGUvNTAifWB9KSxYKCJzcGFuIix7ImFyaWEtaGlkZGVuIjohMCxjbGFzc05hbWU6InBvaW50ZXItZXZlbnRzLW5vbmUgbXQtWzNweF0gZmxleCBqdXN0aWZ5LWJldHdlZW4gcHgtWzUuNXB4XSIsY2hpbGRyZW46cjIubWFwKChDKT0+WCgic3BhbiIse2NsYXNzTmFtZToic2l6ZS1bMnB4XSByb3VuZGVkLWZ1bGwgYmctd2hpdGUvNDAifSxDKSl9KV19KX1mdW5jdGlvbiBIMCh7bGFiZWw6JCx2YWx1ZTpKLG9wdGlvbnM6USxkaXNhYmxlZDpaLG9uQ2hhbmdlOkt9KXtyZXR1cm4gWChwNSx7bGFiZWw6JCx2YWx1ZTpKLG9wdGlvbnM6USxkaXNhYmxlZDpaLG9uQ2hhbmdlOkssY2xhc3NOYW1lOiJiZy13aGl0ZS9bMC4wNl0gYm9yZGVyIGJvcmRlci13aGl0ZS8xMCByb3VuZGVkLW1kIHRleHQtd2hpdGUvOTAgdGV4dC1bMTJweF0gcHktMC41IHB4LTIgbWluLXctMCBtYXgtdy1bMTUwcHhdIGRpc2FibGVkOnRleHQtd2hpdGUvNDAifSl9dmFyIG8yPXthcHBlYXJhbmNlOlgoInN2ZyIse3dpZHRoOiIxNCIsaGVpZ2h0OiIxNCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltYKCJwYXRoIix7ZDoiTTEyIDJ2MiJ9KSxYKCJwYXRoIix7ZDoiTTE0LjgzNyAxNi4zODVhNiA2IDAgMSAxLTcuMjIzLTcuMjIyYy42MjQtLjE0Ny45Ny42Ni43MTUgMS4yNDhhNCA0IDAgMCAwIDUuMjYgNS4yNTljLjU4OS0uMjU1IDEuMzk2LjA5IDEuMjQ4LjcxNSJ9KSxYKCJwYXRoIix7ZDoiTTE2IDEyYTQgNCAwIDAgMC00LTQifSksWCgicGF0aCIse2Q6Im0xOSA1LTEuMjU2IDEuMjU2In0pLFgoInBhdGgiLHtkOiJNMjAgMTJoMiJ9KV19KSxnbGFzczpYKCJzdmciLHt3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHZpZXdCb3g6IjAgMCAyMjAgMjIwIixmaWxsOiJjdXJyZW50Q29sb3IiLHN0cm9rZToibm9uZSIsY2hpbGRyZW46W1goInBhdGgiLHtkOiJNMTUyIDE4M1YxOTVIMTAwVjE4M0gxNTJaTTE5NiAxMzlWMTI2QzE5NiAxMDEuNjk5IDE3Ni4zMDEgODIgMTUyIDgySDEwMEM3NS42OTk1IDgyIDU2IDEwMS42OTkgNTYgMTI2VjEzOUM1NiAxNjMuMzAxIDc1LjY5OTUgMTgzIDEwMCAxODNWMTk1TDk5LjI3NjQgMTk0Ljk5NUM2OC45MjI4IDE5NC42MTEgNDQuMzg5MyAxNzAuMDc3IDQ0LjAwNDkgMTM5LjcyNEw0NCAxMzlWMTI2QzQ0IDk1LjA3MjEgNjkuMDcyMSA3MCAxMDAgNzBIMTUyQzE4Mi45MjggNzAgMjA4IDk1LjA3MjEgMjA4IDEyNlYxMzlMMjA3Ljk5NSAxMzkuNzI0QzIwNy42MTEgMTcwLjA3NyAxODMuMDc3IDE5NC42MTEgMTUyLjcyNCAxOTQuOTk1TDE1MiAxOTVWMTgzQzE3Ni4zMDEgMTgzIDE5NiAxNjMuMzAxIDE5NiAxMzlaIn0pLFgoInBhdGgiLHtkOiJNMTM2IDI1QzE0Ny4wNDYgMjUgMTU2IDMzLjk1NDMgMTU2IDQ1VjcwSDE0M1Y0NUMxNDMgNDEuMTM0IDEzOS44NjYgMzggMTM2IDM4SDQxQzM3LjEzNCAzOCAzNCA0MS4xMzQgMzQgNDVWMTQwQzM0IDE0My44NjYgMzcuMTM0IDE0NyA0MSAxNDdINDQuODYwNEM0NS42NDg3IDE1MS41MzYgNDYuOTYzNCAxNTUuODkxIDQ4Ljc0MDIgMTYwSDQxTDQwLjQ4MzQgMTU5Ljk5M0MyOS44NDgxIDE1OS43MjQgMjEuMjc2NSAxNTEuMTUyIDIxLjAwNjggMTQwLjUxN0wyMSAxNDBWNDVDMjEgMzMuOTU0MyAyOS45NTQzIDI1IDQxIDI1SDEzNloifSksWCgicGF0aCIse2Q6Ik0xNTYuMTk5IDE0MEMxNTYuMTk5IDE1MC44NzMgMTQ3LjUyMyAxNTkuNzE5IDEzNi43MTYgMTU5Ljk5M0wxMzYuMTk5IDE2MEg4MC45MTdDNzcuOTQ2MSAxNjAgNzYuMTYzOSAxNjMuMyA3Ny43OTMgMTY1Ljc4NEM3OS4yNDUxIDE2Ny45OTkgNzYuMTY0NyAxNzAuMzUzIDc0LjQwOTQgMTY4LjM3TDczLjYwNTkgMTY3LjQ2MkM2OS4zNDk3IDE2Mi42NTQgNjcgMTU2LjQ1NSA2NyAxNTAuMDM0QzY3IDE0OC4zNTggNjguMzU4MyAxNDcgNzAuMDMzOSAxNDdIMTM2LjE5OUMxNDAuMDY1IDE0NyAxNDMuMTk5IDE0My44NjYgMTQzLjE5OSAxNDBWOTYuOTk1NUMxNDMuMTk5IDkzLjk4MjIgMTQxLjM1NCA5MS4yNzYzIDEzOC41NDkgOTAuMTc2MUMxMzcuMzg5IDg5LjcyMTUgMTM3LjcxNSA4OCAxMzguOTYgODhMMTQzLjE5OSA4OEMxNTAuMzc5IDg4IDE1Ni4xOTkgOTMuODIwMyAxNTYuMTk5IDEwMVYxNDBaIn0pXX0pLGZpbHRlcjpYKCJzdmciLHt3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbWCgicGF0aCIse2Q6Ik0xMSAxN2E0IDQgMCAwIDEtOCAwVjVhMiAyIDAgMCAxIDItMmg0YTIgMiAwIDAgMSAyIDJaIn0pLFgoInBhdGgiLHtkOiJNMTYuNyAxM0gxOWEyIDIgMCAwIDEgMiAydjRhMiAyIDAgMCAxLTIgMkg3In0pLFgoInBhdGgiLHtkOiJNIDcgMTdoLjAxIn0pLFgoInBhdGgiLHtkOiJtMTEgOCAyLjMtMi4zYTIuNCAyLjQgMCAwIDEgMy40MDQuMDA0TDE4LjYgNy42YTIuNCAyLjQgMCAwIDEgLjAyNiAzLjQzNEw5LjkgMTkuOCJ9KV19KSx0ZXh0U2l6ZTpYKCJzdmciLHt3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHZpZXdCb3g6IjAgMCA1MiAzNCIsZmlsbDoiY3VycmVudENvbG9yIixzdHJva2U6Im5vbmUiLGNoaWxkcmVuOlgoInBhdGgiLHtkOiJNMzkuNzI2NiAzMy4wMjM0QzM4LjE0ODQgMzMuMDIzNCAzNi43NSAzMi43MjY2IDM1LjUzMTIgMzIuMTMyOEMzNC4zMTI1IDMxLjUzOTEgMzMuMzU5NCAzMC43MTA5IDMyLjY3MTkgMjkuNjQ4NEMzMiAyOC41NzAzIDMxLjY2NDEgMjcuMzEyNSAzMS42NjQxIDI1Ljg3NUMzMS42NjQxIDIzLjc4MTIgMzIuNDI5NyAyMi4xMDk0IDMzLjk2MDkgMjAuODU5NEMzNS41MDc4IDE5LjYwOTQgMzcuNzEwOSAxOC45MDYyIDQwLjU3MDMgMTguNzVMNDcuNjAxNiAxOC4zNTE2VjE2LjVDNDcuNjAxNiAxNS4wMTU2IDQ3LjEzMjggMTMuODM1OSA0Ni4xOTUzIDEyLjk2MDlDNDUuMjU3OCAxMi4wODU5IDQzLjk1MzEgMTEuNjQ4NCA0Mi4yODEyIDExLjY0ODRDNDAuOTA2MiAxMS42NDg0IDM5Ljc1IDExLjk0NTMgMzguODEyNSAxMi41MzkxQzM3Ljg3NSAxMy4xMzI4IDM3LjA5MzggMTQuMDQ2OSAzNi40Njg4IDE1LjI4MTJDMzYuMjY1NiAxNS42MDk0IDM2LjAxNTYgMTUuODUxNiAzNS43MTg4IDE2LjAwNzhDMzUuNDIxOSAxNi4xNjQxIDM1LjA3ODEgMTYuMjQyMiAzNC42ODc1IDE2LjI0MjJDMzQuMTU2MiAxNi4yNDIyIDMzLjcxMDkgMTYuMDc4MSAzMy4zNTE2IDE1Ljc1QzMzLjAwNzggMTUuNDIxOSAzMi44MzU5IDE0Ljk5MjIgMzIuODM1OSAxNC40NjA5QzMyLjgzNTkgMTQuMjI2NiAzMi44NjcyIDEzLjk3NjYgMzIuOTI5NyAxMy43MTA5QzMzLjAwNzggMTMuNDQ1MyAzMy4xMDk0IDEzLjE3OTcgMzMuMjM0NCAxMi45MTQxQzMzLjg3NSAxMS40NjA5IDM1LjAxNTYgMTAuMzA0NyAzNi42NTYyIDkuNDQ1MzFDMzguMzEyNSA4LjU4NTk0IDQwLjIyNjYgOC4xNTYyNSA0Mi4zOTg0IDguMTU2MjVDNDQuMzIwMyA4LjE1NjI1IDQ1Ljk4NDQgOC40OTIxOSA0Ny4zOTA2IDkuMTY0MDZDNDguODEyNSA5LjgyMDMxIDQ5Ljg5ODQgMTAuNzUgNTAuNjQ4NCAxMS45NTMxQzUxLjQxNDEgMTMuMTU2MiA1MS43OTY5IDE0LjU3MDMgNTEuNzk2OSAxNi4xOTUzVjMwLjkxNDFDNTEuNzk2OSAzMS41ODU5IDUxLjYwOTQgMzIuMTA5NCA1MS4yMzQ0IDMyLjQ4NDRDNTAuODU5NCAzMi44NTk0IDUwLjM2NzIgMzMuMDQ2OSA0OS43NTc4IDMzLjA0NjlDNDkuMTY0MSAzMy4wNDY5IDQ4LjY3OTcgMzIuODY3MiA0OC4zMDQ3IDMyLjUwNzhDNDcuOTI5NyAzMi4xNDg0IDQ3LjczNDQgMzEuNjY0MSA0Ny43MTg4IDMxLjA1NDdWMjguMzU5NEg0Ny42NzE5QzQ2Ljk4NDQgMjkuNzgxMiA0NS45MDYyIDMwLjkxNDEgNDQuNDM3NSAzMS43NTc4QzQyLjk4NDQgMzIuNjAxNiA0MS40MTQxIDMzLjAyMzQgMzkuNzI2NiAzMy4wMjM0Wk00MC44MDQ3IDI5LjY3MTlDNDIuMDcwMyAyOS42NzE5IDQzLjIxMDkgMjkuNDA2MiA0NC4yMjY2IDI4Ljg3NUM0NS4yNTc4IDI4LjM0MzggNDYuMDc4MSAyNy42MTcyIDQ2LjY4NzUgMjYuNjk1M0M0Ny4yOTY5IDI1Ljc3MzQgNDcuNjAxNiAyNC43NSA0Ny42MDE2IDIzLjYyNVYyMS4zMjgxTDQxLjEzMjggMjEuNzVDMzkuNDQ1MyAyMS44NTk0IDM4LjE2NDEgMjIuMjczNCAzNy4yODkxIDIyLjk5MjJDMzYuNDE0MSAyMy42OTUzIDM1Ljk3NjYgMjQuNjA5NCAzNS45NzY2IDI1LjczNDRDMzUuOTc2NiAyNi45MjE5IDM2LjQyMTkgMjcuODc1IDM3LjMxMjUgMjguNTkzOEMzOC4yMDMxIDI5LjMxMjUgMzkuMzY3MiAyOS42NzE5IDQwLjgwNDcgMjkuNjcxOVpNMi4xNzk2OSAzMy4wMjM0QzEuNTA3ODEgMzMuMDIzNCAwLjk3NjU2MiAzMi44MzU5IDAuNTg1OTM4IDMyLjQ2MDlDMC4xOTUzMTIgMzIuMDg1OSAwIDMxLjU3ODEgMCAzMC45Mzc1QzAgMzAuNTMxMiAwLjA4NTkzNzUgMzAuMDcwMyAwLjI1NzgxMiAyOS41NTQ3TDEwLjQwNjIgMi40MTQwNkMxMC45ODQ0IDAuODA0Njg4IDEyLjEwMTYgMCAxMy43NTc4IDBDMTQuNjE3MiAwIDE1LjMyODEgMC4yMDMxMjUgMTUuODkwNiAwLjYwOTM3NUMxNi40NTMxIDEuMDE1NjIgMTYuODc1IDEuNjI1IDE3LjE1NjIgMi40Mzc1TDI3LjI1NzggMjkuNDg0NEMyNy40NDUzIDMwIDI3LjUzOTEgMzAuNDY4OCAyNy41MzkxIDMwLjg5MDZDMjcuNTM5MSAzMS41NDY5IDI3LjMzNTkgMzIuMDcwMyAyNi45Mjk3IDMyLjQ2MDlDMjYuNTIzNCAzMi44MzU5IDI1Ljk3NjYgMzMuMDIzNCAyNS4yODkxIDMzLjAyMzRDMjQuNjMyOCAzMy4wMjM0IDI0LjEwOTQgMzIuODc1IDIzLjcxODggMzIuNTc4MUMyMy4zNDM4IDMyLjI4MTIgMjMuMDM5MSAzMS43ODkxIDIyLjgwNDcgMzEuMTAxNkwxMy44MjgxIDUuMzQzNzVIMTMuNjY0MUw0LjY2NDA2IDMxLjEwMTZDNC40Mjk2OSAzMS43ODkxIDQuMTI1IDMyLjI4MTIgMy43NSAzMi41NzgxQzMuMzc1IDMyLjg3NSAyLjg1MTU2IDMzLjAyMzQgMi4xNzk2OSAzMy4wMjM0Wk02LjY3OTY5IDIzLjc0MjJDNi4xNDg0NCAyMy43NDIyIDUuNzAzMTIgMjMuNTYyNSA1LjM0Mzc1IDIzLjIwMzFDNC45ODQzOCAyMi44NDM4IDQuODA0NjkgMjIuMzk4NCA0LjgwNDY5IDIxLjg2NzJDNC44MDQ2OSAyMS4zNTE2IDQuOTg0MzggMjAuOTE0MSA1LjM0Mzc1IDIwLjU1NDdDNS43MDMxMiAyMC4xOTUzIDYuMTQ4NDQgMjAuMDE1NiA2LjY3OTY5IDIwLjAxNTZIMjAuODU5NEMyMS4zNzUgMjAuMDE1NiAyMS44MTI1IDIwLjE5NTMgMjIuMTcxOSAyMC41NTQ3QzIyLjUzMTIgMjAuOTE0MSAyMi43MTA5IDIxLjM1MTYgMjIuNzEwOSAyMS44NjcyQzIyLjcxMDkgMjIuMzk4NCAyMi41MzEyIDIyLjg0MzggMjIuMTcxOSAyMy4yMDMxQzIxLjgxMjUgMjMuNTYyNSAyMS4zNzUgMjMuNzQyMiAyMC44NTk0IDIzLjc0MjJINi42Nzk2OVoifSl9KSxtb3Rpb246WCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLGNoaWxkcmVuOltYKCJjaXJjbGUiLHtjeDoiMTQiLGN5OiIxMiIscjoiNiJ9KSxYKCJwYXRoIix7ZDoiTTMgOGg0TTIgMTJoNE0zIDE2aDQifSldfSksY29udHJhc3Q6WCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1goImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9KSxYKCJwYXRoIix7ZDoiTTEyIDE4YTYgNiAwIDAgMCAwLTEydjEyeiJ9KV19KSxib3JkZXJzOlgoInN2ZyIse3dpZHRoOiIxNCIsaGVpZ2h0OiIxNCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltYKCJwYXRoIix7ZDoiTTUgMjFhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAyIn0pLFgoInBhdGgiLHtkOiJNOSAyMWgxIn0pLFgoInBhdGgiLHtkOiJNMTQgMjFoMSJ9KV19KSx0cmFuc3BhcmVuY3k6WCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIwIDAgNjMgNDYiLGZpbGw6ImN1cnJlbnRDb2xvciIsc3Ryb2tlOiJub25lIixjaGlsZHJlbjpYKCJwYXRoIix7ZDoiTTIyLjczNDQgNC4xNzE4OEMyMi4xODc1IDQuMTcxODggMjEuNzE4OCAzLjk3NjU2IDIxLjMyODEgMy41ODU5NEMyMC45Mzc1IDMuMTk1MzEgMjAuNzQyMiAyLjcxODc1IDIwLjc0MjIgMi4xNTYyNUMyMC43NDIyIDEuNjA5MzggMjAuOTM3NSAxLjE0MDYyIDIxLjMyODEgMC43NUMyMS43MTg4IDAuMzU5Mzc1IDIyLjE4NzUgMC4xNjQwNjIgMjIuNzM0NCAwLjE2NDA2MkMyMy4yODEyIDAuMTY0MDYyIDIzLjc1IDAuMzU5Mzc1IDI0LjE0MDYgMC43NUMyNC41MzEyIDEuMTQwNjIgMjQuNzI2NiAxLjYwOTM4IDI0LjcyNjYgMi4xNTYyNUMyNC43MjY2IDIuNzE4NzUgMjQuNTMxMiAzLjE5NTMxIDI0LjE0MDYgMy41ODU5NEMyMy43NSAzLjk3NjU2IDIzLjI4MTIgNC4xNzE4OCAyMi43MzQ0IDQuMTcxODhaTTI5LjEwOTQgNS4yMDMxMkMyOC41NDY5IDUuMjAzMTIgMjguMDcwMyA1LjAwNzgxIDI3LjY3OTcgNC42MTcxOUMyNy4yODkxIDQuMjI2NTYgMjcuMDkzOCAzLjc1NzgxIDI3LjA5MzggMy4yMTA5NEMyNy4wOTM4IDIuNjY0MDYgMjcuMjg5MSAyLjE5NTMxIDI3LjY3OTcgMS44MDQ2OUMyOC4wNzAzIDEuMzk4NDQgMjguNTQ2OSAxLjE5NTMxIDI5LjEwOTQgMS4xOTUzMUMyOS42NTYyIDEuMTk1MzEgMzAuMTI1IDEuMzk4NDQgMzAuNTE1NiAxLjgwNDY5QzMwLjkwNjIgMi4xOTUzMSAzMS4xMDE2IDIuNjY0MDYgMzEuMTAxNiAzLjIxMDk0QzMxLjEwMTYgMy43NTc4MSAzMC45MDYyIDQuMjI2NTYgMzAuNTE1NiA0LjYxNzE5QzMwLjEyNSA1LjAwNzgxIDI5LjY1NjIgNS4yMDMxMiAyOS4xMDk0IDUuMjAzMTJaTTM0Ljg3NSA4LjEzMjgxQzM0LjMyODEgOC4xMzI4MSAzMy44NTE2IDcuOTM3NSAzMy40NDUzIDcuNTQ2ODhDMzMuMDU0NyA3LjE0MDYyIDMyLjg1OTQgNi42NzE4OCAzMi44NTk0IDYuMTQwNjJDMzIuODU5NCA1LjU3ODEyIDMzLjA1NDcgNS4xMDE1NiAzMy40NDUzIDQuNzEwOTRDMzMuODUxNiA0LjMyMDMxIDM0LjMyODEgNC4xMjUgMzQuODc1IDQuMTI1QzM1LjQyMTkgNC4xMjUgMzUuODkwNiA0LjMyMDMxIDM2LjI4MTIgNC43MTA5NEMzNi42ODc1IDUuMTAxNTYgMzYuODkwNiA1LjU3ODEyIDM2Ljg5MDYgNi4xNDA2MkMzNi44OTA2IDYuNjcxODggMzYuNjg3NSA3LjE0MDYyIDM2LjI4MTIgNy41NDY4OEMzNS44OTA2IDcuOTM3NSAzNS40MjE5IDguMTMyODEgMzQuODc1IDguMTMyODFaTTM5LjQ0NTMgMTIuNjc5N0MzOC44OTg0IDEyLjY3OTcgMzguNDIxOSAxMi40ODQ0IDM4LjAxNTYgMTIuMDkzOEMzNy42MjUgMTEuNzAzMSAzNy40Mjk3IDExLjIzNDQgMzcuNDI5NyAxMC42ODc1QzM3LjQyOTcgMTAuMTU2MiAzNy42MjUgOS42OTUzMSAzOC4wMTU2IDkuMzA0NjlDMzguNDIxOSA4Ljg5ODQ0IDM4Ljg5ODQgOC42OTUzMSAzOS40NDUzIDguNjk1MzFDMzkuOTkyMiA4LjY5NTMxIDQwLjQ2MDkgOC44OTg0NCA0MC44NTE2IDkuMzA0NjlDNDEuMjQyMiA5LjY5NTMxIDQxLjQzNzUgMTAuMTU2MiA0MS40Mzc1IDEwLjY4NzVDNDEuNDM3NSAxMS4yMzQ0IDQxLjI0MjIgMTEuNzAzMSA0MC44NTE2IDEyLjA5MzhDNDAuNDYwOSAxMi40ODQ0IDM5Ljk5MjIgMTIuNjc5NyAzOS40NDUzIDEyLjY3OTdaTTQyLjM3NSAxOC4zOTg0QzQxLjgxMjUgMTguMzk4NCA0MS4zMjgxIDE4LjIwMzEgNDAuOTIxOSAxNy44MTI1QzQwLjUzMTIgMTcuNDIxOSA0MC4zMzU5IDE2Ljk1MzEgNDAuMzM1OSAxNi40MDYyQzQwLjMzNTkgMTUuODQzOCA0MC41MzEyIDE1LjM2NzIgNDAuOTIxOSAxNC45NzY2QzQxLjMyODEgMTQuNTg1OSA0MS44MTI1IDE0LjM5MDYgNDIuMzc1IDE0LjM5MDZDNDIuOTA2MiAxNC4zOTA2IDQzLjM2NzIgMTQuNTg1OSA0My43NTc4IDE0Ljk3NjZDNDQuMTY0MSAxNS4zNjcyIDQ0LjM2NzIgMTUuODQzOCA0NC4zNjcyIDE2LjQwNjJDNDQuMzY3MiAxNi45NTMxIDQ0LjE2NDEgMTcuNDIxOSA0My43NTc4IDE3LjgxMjVDNDMuMzY3MiAxOC4yMDMxIDQyLjkwNjIgMTguMzk4NCA0Mi4zNzUgMTguMzk4NFpNNDMuNDUzMSAyNC43OTY5QzQyLjkwNjIgMjQuNzk2OSA0Mi40Mzc1IDI0LjYwMTYgNDIuMDQ2OSAyNC4yMTA5QzQxLjY1NjIgMjMuODIwMyA0MS40NjA5IDIzLjM0MzggNDEuNDYwOSAyMi43ODEyQzQxLjQ2MDkgMjIuMjM0NCA0MS42NTYyIDIxLjc2NTYgNDIuMDQ2OSAyMS4zNzVDNDIuNDM3NSAyMC45ODQ0IDQyLjkwNjIgMjAuNzg5MSA0My40NTMxIDIwLjc4OTFDNDQgMjAuNzg5MSA0NC40Njg4IDIwLjk4NDQgNDQuODU5NCAyMS4zNzVDNDUuMjY1NiAyMS43NjU2IDQ1LjQ2ODggMjIuMjM0NCA0NS40Njg4IDIyLjc4MTJDNDUuNDY4OCAyMy4zNDM4IDQ1LjI2NTYgMjMuODIwMyA0NC44NTk0IDI0LjIxMDlDNDQuNDY4OCAyNC42MDE2IDQ0IDI0Ljc5NjkgNDMuNDUzMSAyNC43OTY5Wk00Mi4zNzUgMzEuMTcxOUM0MS44MTI1IDMxLjE3MTkgNDEuMzI4MSAzMC45NzY2IDQwLjkyMTkgMzAuNTg1OUM0MC41MzEyIDMwLjE5NTMgNDAuMzM1OSAyOS43MjY2IDQwLjMzNTkgMjkuMTc5N0M0MC4zMzU5IDI4LjYxNzIgNDAuNTMxMiAyOC4xNDA2IDQwLjkyMTkgMjcuNzVDNDEuMzI4MSAyNy4zNTk0IDQxLjgxMjUgMjcuMTY0MSA0Mi4zNzUgMjcuMTY0MUM0Mi45MDYyIDI3LjE2NDEgNDMuMzY3MiAyNy4zNTk0IDQzLjc1NzggMjcuNzVDNDQuMTY0MSAyOC4xNDA2IDQ0LjM2NzIgMjguNjE3MiA0NC4zNjcyIDI5LjE3OTdDNDQuMzY3MiAyOS43MjY2IDQ0LjE2NDEgMzAuMTk1MyA0My43NTc4IDMwLjU4NTlDNDMuMzY3MiAzMC45NzY2IDQyLjkwNjIgMzEuMTcxOSA0Mi4zNzUgMzEuMTcxOVpNMzkuNDQ1MyAzNi44OTA2QzM4Ljg5ODQgMzYuODkwNiAzOC40MjE5IDM2LjY5NTMgMzguMDE1NiAzNi4zMDQ3QzM3LjYyNSAzNS44OTg0IDM3LjQyOTcgMzUuNDIxOSAzNy40Mjk3IDM0Ljg3NUMzNy40Mjk3IDM0LjMyODEgMzcuNjI1IDMzLjg1OTQgMzguMDE1NiAzMy40Njg4QzM4LjQyMTkgMzMuMDYyNSAzOC44OTg0IDMyLjg1OTQgMzkuNDQ1MyAzMi44NTk0QzM5Ljk5MjIgMzIuODU5NCA0MC40NjA5IDMzLjA2MjUgNDAuODUxNiAzMy40Njg4QzQxLjI0MjIgMzMuODU5NCA0MS40Mzc1IDM0LjMyODEgNDEuNDM3NSAzNC44NzVDNDEuNDM3NSAzNS40MjE5IDQxLjI0MjIgMzUuODk4NCA0MC44NTE2IDM2LjMwNDdDNDAuNDYwOSAzNi42OTUzIDM5Ljk5MjIgMzYuODkwNiAzOS40NDUzIDM2Ljg5MDZaTTM0Ljg3NSA0MS40Mzc1QzM0LjMyODEgNDEuNDM3NSAzMy44NTE2IDQxLjI0MjIgMzMuNDQ1MyA0MC44NTE2QzMzLjA1NDcgNDAuNDYwOSAzMi44NTk0IDM5Ljk5MjIgMzIuODU5NCAzOS40NDUzQzMyLjg1OTQgMzguODk4NCAzMy4wNTQ3IDM4LjQyOTcgMzMuNDQ1MyAzOC4wMzkxQzMzLjg1MTYgMzcuNjMyOCAzNC4zMjgxIDM3LjQyOTcgMzQuODc1IDM3LjQyOTdDMzUuNDIxOSAzNy40Mjk3IDM1Ljg5MDYgMzcuNjMyOCAzNi4yODEyIDM4LjAzOTFDMzYuNjg3NSAzOC40Mjk3IDM2Ljg5MDYgMzguODk4NCAzNi44OTA2IDM5LjQ0NTNDMzYuODkwNiAzOS45OTIyIDM2LjY4NzUgNDAuNDYwOSAzNi4yODEyIDQwLjg1MTZDMzUuODkwNiA0MS4yNDIyIDM1LjQyMTkgNDEuNDM3NSAzNC44NzUgNDEuNDM3NVpNMjkuMTA5NCA0NC4zNjcyQzI4LjU0NjkgNDQuMzY3MiAyOC4wNzAzIDQ0LjE2NDEgMjcuNjc5NyA0My43NTc4QzI3LjI4OTEgNDMuMzY3MiAyNy4wOTM4IDQyLjg5ODQgMjcuMDkzOCA0Mi4zNTE2QzI3LjA5MzggNDEuODA0NyAyNy4yODkxIDQxLjMzNTkgMjcuNjc5NyA0MC45NDUzQzI4LjA3MDMgNDAuNTU0NyAyOC41NDY5IDQwLjM1OTQgMjkuMTA5NCA0MC4zNTk0QzI5LjY1NjIgNDAuMzU5NCAzMC4xMjUgNDAuNTU0NyAzMC41MTU2IDQwLjk0NTNDMzAuOTA2MiA0MS4zMzU5IDMxLjEwMTYgNDEuODA0NyAzMS4xMDE2IDQyLjM1MTZDMzEuMTAxNiA0Mi44OTg0IDMwLjkwNjIgNDMuMzY3MiAzMC41MTU2IDQzLjc1NzhDMzAuMTI1IDQ0LjE2NDEgMjkuNjU2MiA0NC4zNjcyIDI5LjEwOTQgNDQuMzY3MlpNMjIuNzM0NCA0NS4zOTg0QzIyLjE4NzUgNDUuMzk4NCAyMS43MTg4IDQ1LjIwMzEgMjEuMzI4MSA0NC44MTI1QzIwLjkzNzUgNDQuNDIxOSAyMC43NDIyIDQzLjk1MzEgMjAuNzQyMiA0My40MDYyQzIwLjc0MjIgNDIuODQzOCAyMC45Mzc1IDQyLjM2NzIgMjEuMzI4MSA0MS45NzY2QzIxLjcxODggNDEuNTg1OSAyMi4xODc1IDQxLjM5MDYgMjIuNzM0NCA0MS4zOTA2QzIzLjI4MTIgNDEuMzkwNiAyMy43NSA0MS41ODU5IDI0LjE0MDYgNDEuOTc2NkMyNC41MzEyIDQyLjM2NzIgMjQuNzI2NiA0Mi44NDM4IDI0LjcyNjYgNDMuNDA2MkMyNC43MjY2IDQzLjk1MzEgMjQuNTMxMiA0NC40MjE5IDI0LjE0MDYgNDQuODEyNUMyMy43NSA0NS4yMDMxIDIzLjI4MTIgNDUuMzk4NCAyMi43MzQ0IDQ1LjM5ODRaTTE2LjM1OTQgNDQuMzY3MkMxNS44MTI1IDQ0LjM2NzIgMTUuMzQzOCA0NC4xNjQxIDE0Ljk1MzEgNDMuNzU3OEMxNC41NjI1IDQzLjM2NzIgMTQuMzY3MiA0Mi44OTg0IDE0LjM2NzIgNDIuMzUxNkMxNC4zNjcyIDQxLjgwNDcgMTQuNTYyNSA0MS4zMzU5IDE0Ljk1MzEgNDAuOTQ1M0MxNS4zNDM4IDQwLjU1NDcgMTUuODEyNSA0MC4zNTk0IDE2LjM1OTQgNDAuMzU5NEMxNi45MjE5IDQwLjM1OTQgMTcuMzk4NCA0MC41NTQ3IDE3Ljc4OTEgNDAuOTQ1M0MxOC4xNzk3IDQxLjMzNTkgMTguMzc1IDQxLjgwNDcgMTguMzc1IDQyLjM1MTZDMTguMzc1IDQyLjg5ODQgMTguMTc5NyA0My4zNjcyIDE3Ljc4OTEgNDMuNzU3OEMxNy4zOTg0IDQ0LjE2NDEgMTYuOTIxOSA0NC4zNjcyIDE2LjM1OTQgNDQuMzY3MlpNMTAuNTcwMyA0MS40Mzc1QzEwLjAzOTEgNDEuNDM3NSA5LjU3MDMxIDQxLjI0MjIgOS4xNjQwNiA0MC44NTE2QzguNzczNDQgNDAuNDYwOSA4LjU3ODEyIDM5Ljk5MjIgOC41NzgxMiAzOS40NDUzQzguNTc4MTIgMzguODk4NCA4Ljc3MzQ0IDM4LjQyOTcgOS4xNjQwNiAzOC4wMzkxQzkuNTcwMzEgMzcuNjMyOCAxMC4wMzkxIDM3LjQyOTcgMTAuNTcwMyAzNy40Mjk3QzExLjEzMjggMzcuNDI5NyAxMS42MDk0IDM3LjYzMjggMTIgMzguMDM5MUMxMi4zOTA2IDM4LjQyOTcgMTIuNTg1OSAzOC44OTg0IDEyLjU4NTkgMzkuNDQ1M0MxMi41ODU5IDM5Ljk5MjIgMTIuMzkwNiA0MC40NjA5IDEyIDQwLjg1MTZDMTEuNjA5NCA0MS4yNDIyIDExLjEzMjggNDEuNDM3NSAxMC41NzAzIDQxLjQzNzVaTTYuMDIzNDQgMzYuODkwNkM1LjQ3NjU2IDM2Ljg5MDYgNSAzNi42OTUzIDQuNTkzNzUgMzYuMzA0N0M0LjIwMzEyIDM1Ljg5ODQgNC4wMDc4MSAzNS40MjE5IDQuMDA3ODEgMzQuODc1QzQuMDA3ODEgMzQuMzI4MSA0LjIwMzEyIDMzLjg1OTQgNC41OTM3NSAzMy40Njg4QzUgMzMuMDYyNSA1LjQ3NjU2IDMyLjg1OTQgNi4wMjM0NCAzMi44NTk0QzYuNTcwMzEgMzIuODU5NCA3LjAzOTA2IDMzLjA2MjUgNy40Mjk2OSAzMy40Njg4QzcuODIwMzEgMzMuODU5NCA4LjAxNTYyIDM0LjMyODEgOC4wMTU2MiAzNC44NzVDOC4wMTU2MiAzNS40MjE5IDcuODIwMzEgMzUuODk4NCA3LjQyOTY5IDM2LjMwNDdDNy4wMzkwNiAzNi42OTUzIDYuNTcwMzEgMzYuODkwNiA2LjAyMzQ0IDM2Ljg5MDZaTTMuMDkzNzUgMzEuMTcxOUMyLjU2MjUgMzEuMTcxOSAyLjA5Mzc1IDMwLjk3NjYgMS42ODc1IDMwLjU4NTlDMS4yOTY4OCAzMC4xOTUzIDEuMTAxNTYgMjkuNzI2NiAxLjEwMTU2IDI5LjE3OTdDMS4xMDE1NiAyOC42MTcyIDEuMjk2ODggMjguMTQwNiAxLjY4NzUgMjcuNzVDMi4wOTM3NSAyNy4zNTk0IDIuNTYyNSAyNy4xNjQxIDMuMDkzNzUgMjcuMTY0MUMzLjY1NjI1IDI3LjE2NDEgNC4xMzI4MSAyNy4zNTk0IDQuNTIzNDQgMjcuNzVDNC45MTQwNiAyOC4xNDA2IDUuMTA5MzggMjguNjE3MiA1LjEwOTM4IDI5LjE3OTdDNS4xMDkzOCAyOS43MjY2IDQuOTE0MDYgMzAuMTk1MyA0LjUyMzQ0IDMwLjU4NTlDNC4xMzI4MSAzMC45NzY2IDMuNjU2MjUgMzEuMTcxOSAzLjA5Mzc1IDMxLjE3MTlaTTIuMDE1NjIgMjQuNzk2OUMxLjQ1MzEyIDI0Ljc5NjkgMC45NzY1NjIgMjQuNjAxNiAwLjU4NTkzOCAyNC4yMTA5QzAuMTk1MzEyIDIzLjgyMDMgMCAyMy4zNDM4IDAgMjIuNzgxMkMwIDIyLjIzNDQgMC4xOTUzMTIgMjEuNzY1NiAwLjU4NTkzOCAyMS4zNzVDMC45NzY1NjIgMjAuOTg0NCAxLjQ1MzEyIDIwLjc4OTEgMi4wMTU2MiAyMC43ODkxQzIuNTYyNSAyMC43ODkxIDMuMDMxMjUgMjAuOTg0NCAzLjQyMTg4IDIxLjM3NUMzLjgxMjUgMjEuNzY1NiA0LjAwNzgxIDIyLjIzNDQgNC4wMDc4MSAyMi43ODEyQzQuMDA3ODEgMjMuMzQzOCAzLjgxMjUgMjMuODIwMyAzLjQyMTg4IDI0LjIxMDlDMy4wMzEyNSAyNC42MDE2IDIuNTYyNSAyNC43OTY5IDIuMDE1NjIgMjQuNzk2OVpNMy4wOTM3NSAxOC4zOTg0QzIuNTYyNSAxOC4zOTg0IDIuMDkzNzUgMTguMjAzMSAxLjY4NzUgMTcuODEyNUMxLjI5Njg4IDE3LjQyMTkgMS4xMDE1NiAxNi45NTMxIDEuMTAxNTYgMTYuNDA2MkMxLjEwMTU2IDE1Ljg0MzggMS4yOTY4OCAxNS4zNjcyIDEuNjg3NSAxNC45NzY2QzIuMDkzNzUgMTQuNTg1OSAyLjU2MjUgMTQuMzkwNiAzLjA5Mzc1IDE0LjM5MDZDMy42NTYyNSAxNC4zOTA2IDQuMTMyODEgMTQuNTg1OSA0LjUyMzQ0IDE0Ljk3NjZDNC45MTQwNiAxNS4zNjcyIDUuMTA5MzggMTUuODQzOCA1LjEwOTM4IDE2LjQwNjJDNS4xMDkzOCAxNi45NTMxIDQuOTE0MDYgMTcuNDIxOSA0LjUyMzQ0IDE3LjgxMjVDNC4xMzI4MSAxOC4yMDMxIDMuNjU2MjUgMTguMzk4NCAzLjA5Mzc1IDE4LjM5ODRaTTYuMDIzNDQgMTIuNjc5N0M1LjQ3NjU2IDEyLjY3OTcgNSAxMi40ODQ0IDQuNTkzNzUgMTIuMDkzOEM0LjIwMzEyIDExLjcwMzEgNC4wMDc4MSAxMS4yMzQ0IDQuMDA3ODEgMTAuNjg3NUM0LjAwNzgxIDEwLjE1NjIgNC4yMDMxMiA5LjY5NTMxIDQuNTkzNzUgOS4zMDQ2OUM1IDguODk4NDQgNS40NzY1NiA4LjY5NTMxIDYuMDIzNDQgOC42OTUzMUM2LjU3MDMxIDguNjk1MzEgNy4wMzkwNiA4Ljg5ODQ0IDcuNDI5NjkgOS4zMDQ2OUM3LjgyMDMxIDkuNjk1MzEgOC4wMTU2MiAxMC4xNTYyIDguMDE1NjIgMTAuNjg3NUM4LjAxNTYyIDExLjIzNDQgNy44MjAzMSAxMS43MDMxIDcuNDI5NjkgMTIuMDkzOEM3LjAzOTA2IDEyLjQ4NDQgNi41NzAzMSAxMi42Nzk3IDYuMDIzNDQgMTIuNjc5N1pNMTAuNTcwMyA4LjEzMjgxQzEwLjAzOTEgOC4xMzI4MSA5LjU3MDMxIDcuOTM3NSA5LjE2NDA2IDcuNTQ2ODhDOC43NzM0NCA3LjE0MDYyIDguNTc4MTIgNi42NzE4OCA4LjU3ODEyIDYuMTQwNjJDOC41NzgxMiA1LjU3ODEyIDguNzczNDQgNS4xMDE1NiA5LjE2NDA2IDQuNzEwOTRDOS41NzAzMSA0LjMyMDMxIDEwLjAzOTEgNC4xMjUgMTAuNTcwMyA0LjEyNUMxMS4xMzI4IDQuMTI1IDExLjYwOTQgNC4zMjAzMSAxMiA0LjcxMDk0QzEyLjM5MDYgNS4xMDE1NiAxMi41ODU5IDUuNTc4MTIgMTIuNTg1OSA2LjE0MDYyQzEyLjU4NTkgNi42NzE4OCAxMi4zOTA2IDcuMTQwNjIgMTIgNy41NDY4OEMxMS42MDk0IDcuOTM3NSAxMS4xMzI4IDguMTMyODEgMTAuNTcwMyA4LjEzMjgxWk0xNi4zNTk0IDUuMjAzMTJDMTUuODEyNSA1LjIwMzEyIDE1LjM0MzggNS4wMDc4MSAxNC45NTMxIDQuNjE3MTlDMTQuNTYyNSA0LjIyNjU2IDE0LjM2NzIgMy43NTc4MSAxNC4zNjcyIDMuMjEwOTRDMTQuMzY3MiAyLjY2NDA2IDE0LjU2MjUgMi4xOTUzMSAxNC45NTMxIDEuODA0NjlDMTUuMzQzOCAxLjM5ODQ0IDE1LjgxMjUgMS4xOTUzMSAxNi4zNTk0IDEuMTk1MzFDMTYuOTIxOSAxLjE5NTMxIDE3LjM5ODQgMS4zOTg0NCAxNy43ODkxIDEuODA0NjlDMTguMTc5NyAyLjE5NTMxIDE4LjM3NSAyLjY2NDA2IDE4LjM3NSAzLjIxMDk0QzE4LjM3NSAzLjc1NzgxIDE4LjE3OTcgNC4yMjY1NiAxNy43ODkxIDQuNjE3MTlDMTcuMzk4NCA1LjAwNzgxIDE2LjkyMTkgNS4yMDMxMiAxNi4zNTk0IDUuMjAzMTJaTTQwLjEwMTYgNDUuNTYyNUMzNi45NDUzIDQ1LjU2MjUgMzMuOTkyMiA0NC45Njg4IDMxLjI0MjIgNDMuNzgxMkMyOC41MDc4IDQyLjYwOTQgMjYuMDkzOCA0MC45NzY2IDI0IDM4Ljg4MjhDMjEuOTA2MiAzNi43ODkxIDIwLjI2NTYgMzQuMzY3MiAxOS4wNzgxIDMxLjYxNzJDMTcuOTA2MiAyOC44NjcyIDE3LjMyMDMgMjUuOTIxOSAxNy4zMjAzIDIyLjc4MTJDMTcuMzIwMyAxOS42NDA2IDE3LjkwNjIgMTYuNjk1MyAxOS4wNzgxIDEzLjk0NTNDMjAuMjY1NiAxMS4xNzk3IDIxLjkwNjIgOC43NTc4MSAyNCA2LjY3OTY5QzI2LjA5MzggNC41ODU5NCAyOC41MDc4IDIuOTUzMTIgMzEuMjQyMiAxLjc4MTI1QzMzLjk5MjIgMC41OTM3NSAzNi45NDUzIDAgNDAuMTAxNiAwQzQzLjI0MjIgMCA0Ni4xODc1IDAuNTkzNzUgNDguOTM3NSAxLjc4MTI1QzUxLjY4NzUgMi45NTMxMiA1NC4xMDE2IDQuNTg1OTQgNTYuMTc5NyA2LjY3OTY5QzU4LjI3MzQgOC43NTc4MSA1OS45MDYyIDExLjE3OTcgNjEuMDc4MSAxMy45NDUzQzYyLjI2NTYgMTYuNjk1MyA2Mi44NTk0IDE5LjY0MDYgNjIuODU5NCAyMi43ODEyQzYyLjg1OTQgMjUuOTIxOSA2Mi4yNjU2IDI4Ljg2NzIgNjEuMDc4MSAzMS42MTcyQzU5LjkwNjIgMzQuMzY3MiA1OC4yNzM0IDM2Ljc4OTEgNTYuMTc5NyAzOC44ODI4QzU0LjEwMTYgNDAuOTc2NiA1MS42ODc1IDQyLjYwOTQgNDguOTM3NSA0My43ODEyQzQ2LjE4NzUgNDQuOTY4OCA0My4yNDIyIDQ1LjU2MjUgNDAuMTAxNiA0NS41NjI1Wk00MC4xMDE2IDQxLjM5MDZDNDIuNjY0MSA0MS4zOTA2IDQ1LjA3MDMgNDAuOTA2MiA0Ny4zMjAzIDM5LjkzNzVDNDkuNTcwMyAzOC45Njg4IDUxLjU0NjkgMzcuNjMyOCA1My4yNSAzNS45Mjk3QzU0Ljk2ODggMzQuMjI2NiA1Ni4zMDQ3IDMyLjI1NzggNTcuMjU3OCAzMC4wMjM0QzU4LjIxMDkgMjcuNzczNCA1OC42ODc1IDI1LjM1OTQgNTguNjg3NSAyMi43ODEyQzU4LjY4NzUgMjAuMjAzMSA1OC4yMTA5IDE3Ljc5NjkgNTcuMjU3OCAxNS41NjI1QzU2LjMwNDcgMTMuMzEyNSA1NC45Njg4IDExLjMzNTkgNTMuMjUgOS42MzI4MUM1MS41NDY5IDcuOTI5NjkgNDkuNTcwMyA2LjU5Mzc1IDQ3LjMyMDMgNS42MjVDNDUuMDcwMyA0LjY1NjI1IDQyLjY2NDEgNC4xNzE4OCA0MC4xMDE2IDQuMTcxODhDMzcuNTIzNCA0LjE3MTg4IDM1LjEwOTQgNC42NTYyNSAzMi44NTk0IDUuNjI1QzMwLjYyNSA2LjU5Mzc1IDI4LjY0ODQgNy45Mjk2OSAyNi45Mjk3IDkuNjMyODFDMjUuMjI2NiAxMS4zMzU5IDIzLjg5MDYgMTMuMzEyNSAyMi45MjE5IDE1LjU2MjVDMjEuOTY4OCAxNy43OTY5IDIxLjQ5MjIgMjAuMjAzMSAyMS40OTIyIDIyLjc4MTJDMjEuNDkyMiAyNS4zNTk0IDIxLjk2ODggMjcuNzczNCAyMi45MjE5IDMwLjAyMzRDMjMuODkwNiAzMi4yNTc4IDI1LjIyNjYgMzQuMjI2NiAyNi45Mjk3IDM1LjkyOTdDMjguNjQ4NCAzNy42MzI4IDMwLjYyNSAzOC45Njg4IDMyLjg1OTQgMzkuOTM3NUMzNS4xMDk0IDQwLjkwNjIgMzcuNTIzNCA0MS4zOTA2IDQwLjEwMTYgNDEuMzkwNloifSl9KSx2b2ljZW92ZXI6WCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1goInBhdGgiLHtkOiJtMTEgNy42MDEtNS45OTQgOC4xOWExIDEgMCAwIDAgLjEgMS4yOThsLjgxNy44MThhMSAxIDAgMCAwIDEuMzE0LjA4N0wxNS4wOSAxMiJ9KSxYKCJwYXRoIix7ZDoiTTE2LjUgMjEuMTc0QzE1LjUgMjAuNSAxNC4zNzIgMjAgMTMgMjBjLTIuMDU4IDAtMy45MjggMi4zNTYtNiAyLTIuMDcyLS4zNTYtMi43NzUtMy4zNjktMS41LTQuNSJ9KSxYKCJjaXJjbGUiLHtjeDoiMTYiLGN5OiI3IixyOiI1In0pXX0pfTtmdW5jdGlvbiBSUSgkKXtpZighJClyZXR1cm4hMDtyZXR1cm4geTUoJCkub3MudG9Mb3dlckNhc2UoKT09PSJpb3MifWZ1bmN0aW9uIHo0KHt1ZGlkOiQscnVudGltZTpKfSl7bGV0W1EsWl09QSghMCksW0ssWV09QShudWxsKSxbcSxHXT1BKG51bGwpLFtOLEJdPUEobnVsbCksTD1SUShKKSxWPUQoYXN5bmMoKT0+e0IobnVsbCk7dHJ5e2xldCB3PWF3YWl0IGozKHtkZXZpY2U6JH0se3NpZ25hbDpBYm9ydFNpZ25hbC50aW1lb3V0KDE1MDAwKX0pO2lmKHcpWSh3KTtlbHNlIEIoIlVuZXhwZWN0ZWQgc2ltdWxhdG9yLXNldHRpbmdzIHJlcGx5Iil9Y2F0Y2godyl7Qih3IGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiZ3Lm5hbWU9PT0iVGltZW91dEVycm9yIj8iVGltZWQgb3V0IHJlYWRpbmcgc2ltdWxhdG9yIHNldHRpbmdzIjp3IGluc3RhbmNlb2YgRXJyb3ImJncubWVzc2FnZSE9PSJGYWlsZWQgdG8gZmV0Y2giP3cubWVzc2FnZToiQ291bGQgbm90IHJlYWNoIHRoZSBwcmV2aWV3IHNlcnZlciDigJQgcmVsb2FkIHRoZSBwYWdlIGlmIHRoaXMgcGVyc2lzdHMiKX19LFskXSk7YigoKT0+e2lmKFkobnVsbCksIUwpcmV0dXJuO1YoKX0sW1YsTF0pO2xldCBVPUQoYXN5bmModyxTKT0+e0codyksQihudWxsKSxZKChqKT0+aj97Li4uaixbd106U306aik7dHJ5e2F3YWl0IGozKHtkZXZpY2U6JCxvcHRpb246dyx2YWx1ZTpTfSx7c2lnbmFsOkFib3J0U2lnbmFsLnRpbWVvdXQoMTUwMDApfSl9Y2F0Y2goail7QihqIGluc3RhbmNlb2YgRXJyb3I/ai5tZXNzYWdlOmBGYWlsZWQgdG8gc2V0ICR7d31gKSxWKCl9ZmluYWxseXtHKG51bGwpfX0sWyQsVl0pLHo9VCh7cnVubmluZzohMSxuZXh0Om51bGx9KSxrPVQoVSk7ay5jdXJyZW50PVU7bGV0IEg9RCgodyk9PntsZXQgUz16LmN1cnJlbnQ7aWYoUy5uZXh0PXcsUy5ydW5uaW5nKXJldHVybjtTLnJ1bm5pbmc9ITAsKGFzeW5jKCk9Pnt3aGlsZShTLm5leHQhPT1udWxsKXtsZXQgaj1TLm5leHQ7Uy5uZXh0PW51bGwsYXdhaXQgay5jdXJyZW50KCJ0ZXh0LXNpemUiLHIyW2pdKX1TLnJ1bm5pbmc9ITF9KSgpfSxbXSksQz1LIT09bnVsbCxGPUs/P3hRLE89cjIuaW5kZXhPZihGWyJ0ZXh0LXNpemUiXSksST1PPj0wP086RlsidGV4dC1zaXplIl0/LnN0YXJ0c1dpdGgoImFjY2Vzc2liaWxpdHkiKT9yMi5sZW5ndGgtMTozO3JldHVybiBYKGUxLHtvcGVuOlEsb25PcGVuQ2hhbmdlOlosImRhdGEtc2ltdWxhdG9yLXNldHRpbmdzIjoiIixzdW1tYXJ5Q2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b18xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbGVmdCIsc3VtbWFyeTpYKFoxLHtjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzUwIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wOGVtXSBsZWFkaW5nLW5vbmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIixjaGlsZHJlbjoiU2ltdWxhdG9yIn0pLFgoInNwYW4iLHt9KV19KSxjaGlsZHJlbjohTD9YKCJkaXYiLHtjbGFzc05hbWU6InRleHQtd2hpdGUvNDUgdGV4dC1bMTFweF0gcHgtMC41IHB5LTEiLGNoaWxkcmVuOiJTaW11bGF0b3Igc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSBvbiBpT1Mgc2ltdWxhdG9ycyBvbmx5LiJ9KTpYKFoxLHtjaGlsZHJlbjpbTiYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJiZy1kYW5nZXIvMTAgYm9yZGVyIGJvcmRlci1kYW5nZXIvMjAgdGV4dC1kYW5nZXItc29mdCB0ZXh0LVsxMXB4XSBweC0yIHB5LTEuNSByb3VuZGVkLW1kIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6Im1pbi13LTAiLGNoaWxkcmVuOk59KSxYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PnZvaWQgVigpLGNsYXNzTmFtZToic2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgcm91bmRlZCBib3JkZXIgYm9yZGVyLWRhbmdlci8zMCBiZy10cmFuc3BhcmVudCBweC0xLjUgcHktMC41IHRleHQtWzExcHhdIHRleHQtZGFuZ2VyLXNvZnQiLGNoaWxkcmVuOiJSZXRyeSJ9KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTEuNSBwYi0xLjUiLGNoaWxkcmVuOltYKFkwLHtpY29uOm8yLmFwcGVhcmFuY2UsbGFiZWw6IkFwcGVhcmFuY2UiLGNoaWxkcmVuOlgoSDAse2xhYmVsOiJBcHBlYXJhbmNlIix2YWx1ZTpGLmFwcGVhcmFuY2U/PyJsaWdodCIsb3B0aW9uczpROC5hcHBlYXJhbmNlLGRpc2FibGVkOiFDfHxxPT09ImFwcGVhcmFuY2UiLG9uQ2hhbmdlOih3KT0+VSgiYXBwZWFyYW5jZSIsdyl9KX0pLFgoWTAse2ljb246bzIuZ2xhc3MsbGFiZWw6IkxpcXVpZCBHbGFzcyIsY2hpbGRyZW46WChIMCx7bGFiZWw6IkxpcXVpZCBHbGFzcyIsdmFsdWU6RlsibGlxdWlkLWdsYXNzIl0/PyJjbGVhciIsb3B0aW9uczpROFsibGlxdWlkLWdsYXNzIl0sZGlzYWJsZWQ6IUN8fHE9PT0ibGlxdWlkLWdsYXNzIixvbkNoYW5nZToodyk9PlUoImxpcXVpZC1nbGFzcyIsdyl9KX0pLFgoWTAse2ljb246bzIuZmlsdGVyLGxhYmVsOiJDb2xvciBGaWx0ZXIiLGNoaWxkcmVuOlgoSDAse2xhYmVsOiJDb2xvciBGaWx0ZXIiLHZhbHVlOkZbImNvbG9yLWZpbHRlciJdPz8ibm9uZSIsb3B0aW9uczpROFsiY29sb3ItZmlsdGVyIl0sZGlzYWJsZWQ6IUN8fHE9PT0iY29sb3ItZmlsdGVyIixvbkNoYW5nZToodyk9PlUoImNvbG9yLWZpbHRlciIsdyl9KX0pLFgoWTAse2ljb246bzIudGV4dFNpemUsbGFiZWw6IlRleHQgU2l6ZSIsY2hpbGRyZW46WCh2USx7dmFsdWU6SSxkaXNhYmxlZDohQyxvbkNoYW5nZTpIfSl9KSxqUS5tYXAoKHtrZXk6dyxsYWJlbDpTfSk9PlgoWTAse2ljb246bzJbdz09PSJyZWR1Y2UtbW90aW9uIj8ibW90aW9uIjp3PT09ImluY3JlYXNlLWNvbnRyYXN0Ij8iY29udHJhc3QiOnc9PT0ic2hvdy1ib3JkZXJzIj8iYm9yZGVycyI6dz09PSJyZWR1Y2UtdHJhbnNwYXJlbmN5Ij8idHJhbnNwYXJlbmN5Ijoidm9pY2VvdmVyIl0sbGFiZWw6UyxjaGlsZHJlbjpYKHU1LHtsYWJlbDpTLGNoZWNrZWQ6Rlt3XT09PSJvbiIsZGlzYWJsZWQ6IUN8fHE9PT13LG9uQ2hhbmdlOihqKT0+VSh3LGo/Im9uIjoib2ZmIil9KX0sdykpXX0pXX0pfSl9dmFyIGhRPVt7dmFsdWU6Imh0dHAiLGxhYmVsOiJIVFRQIn0se3ZhbHVlOiJ3ZWJydGMiLGxhYmVsOiJXZWJSVEMifV0sZ1E9W3t2YWx1ZToiYXV0byIsbGFiZWw6IkF1dG8ifSx7dmFsdWU6ImgyNjQiLGxhYmVsOiJILjI2NCJ9LHt2YWx1ZToibWpwZWciLGxhYmVsOiJNSlBFRyJ9XSxmUT1be3ZhbHVlOiJoMjY0IixsYWJlbDoiSC4yNjQifSx7dmFsdWU6InZwOSIsbGFiZWw6IlZQOSJ9LHt2YWx1ZToidnA4IixsYWJlbDoiVlA4In1dLG1RPVt7dmFsdWU6IjAiLGxhYmVsOiJGdWxsIn0se3ZhbHVlOiIxOTIwIixsYWJlbDoiMTkyMCJ9LHt2YWx1ZToiMTYwMCIsbGFiZWw6IjE2MDAifSx7dmFsdWU6IjEyODAiLGxhYmVsOiIxMjgwIn0se3ZhbHVlOiI5NjAiLGxhYmVsOiI5NjAifSx7dmFsdWU6IjcyMCIsbGFiZWw6IjcyMCJ9XSxVND1bIjYwIiwiMzAiLCIyMCIsIjE1IiwiMTAiLCI1Il0ubWFwKCgkKT0+KHt2YWx1ZTokLGxhYmVsOiR9KSkscFE9W3t2YWx1ZToiMC40NSIsbGFiZWw6IjQ1JSJ9LHt2YWx1ZToiMC41NSIsbGFiZWw6IjU1JSJ9LHt2YWx1ZToiMC43IixsYWJlbDoiNzAlIn0se3ZhbHVlOiIwLjg1IixsYWJlbDoiODUlIn0se3ZhbHVlOiIxIixsYWJlbDoiMTAwJSJ9XSx1UT1be3ZhbHVlOiIxNTAwMDAwIixsYWJlbDoiMS41IE1icHMifSx7dmFsdWU6IjMwMDAwMDAiLGxhYmVsOiIzIE1icHMifSx7dmFsdWU6IjYwMDAwMDAiLGxhYmVsOiI2IE1icHMifSx7dmFsdWU6IjEwMDAwMDAwIixsYWJlbDoiMTAgTWJwcyJ9LHt2YWx1ZToiMTYwMDAwMDAiLGxhYmVsOiIxNiBNYnBzIn1dLHUwPSJzaXplLTMuNSI7ZnVuY3Rpb24gaTIoJCxKLFEpe2xldCBaPVN0cmluZygkKTtyZXR1cm4gSi5zb21lKChLKT0+Sy52YWx1ZT09PVopP0o6W3t2YWx1ZTpaLGxhYmVsOlEoJCl9LC4uLkpdfWZ1bmN0aW9uIEg0KHtzZXR0aW5nczokLG9uUGxheWJhY2tTZXR0aW5nc0NoYW5nZTpKLG9uRW5jb2RlclNldHRpbmdzQ2hhbmdlOlEsYWN0aXZlQ29kZWM6WixhdmNjU3VwcG9ydGVkOkssZW5jb2RlclNldHRpbmdzRGlzYWJsZWQ6WT0hMX0pe2xldFtxLEddPUEoITEpLE49JC50cmFuc3BvcnQ9PT0iaHR0cCIsQj0kLnRyYW5zcG9ydD09PSJ3ZWJydGMiO3JldHVybiBYKGUxLHtvcGVuOnEsb25PcGVuQ2hhbmdlOkcsImRhdGEtc3RyZWFtLXNldHRpbmdzIjoiIixzdW1tYXJ5Q2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b18xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbGVmdCIsc3VtbWFyeTpYKFoxLHtjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzUwIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wOGVtXSBsZWFkaW5nLW5vbmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIixjaGlsZHJlbjoiU3RyZWFtIn0pLFgoInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzExcHhdIHRleHQtd2hpdGUvNDAganVzdGlmeS1zZWxmLWVuZCB1cHBlcmNhc2UiLGNoaWxkcmVuOlp9KV19KSxjaGlsZHJlbjpYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTEuNSBwYi0xLjUiLGNoaWxkcmVuOltYKFkwLHtpY29uOlgocjAse2NsYXNzTmFtZTp1MH0pLGxhYmVsOiJUcmFuc3BvcnQiLGNoaWxkcmVuOlgoSDAse2xhYmVsOiJUcmFuc3BvcnQiLHZhbHVlOiQudHJhbnNwb3J0LG9wdGlvbnM6aFEsZGlzYWJsZWQ6ITEsb25DaGFuZ2U6KEwpPT5KKHt0cmFuc3BvcnQ6TH0pfSl9KSxYKFkwLHtpY29uOlgocjAse2NsYXNzTmFtZTp1MH0pLGxhYmVsOiJIVFRQIGNvZGVjIixjaGlsZHJlbjpYKEgwLHtsYWJlbDoiSFRUUCBjb2RlYyIsdmFsdWU6Sz8kLmh0dHBDb2RlYzoibWpwZWciLG9wdGlvbnM6Z1EsZGlzYWJsZWQ6IU58fCFLLG9uQ2hhbmdlOihMKT0+Sih7aHR0cENvZGVjOkx9KX0pfSksWChZMCx7aWNvbjpYKHIwLHtjbGFzc05hbWU6dTB9KSxsYWJlbDoiV2ViUlRDIGNvZGVjIixjaGlsZHJlbjpYKEgwLHtsYWJlbDoiV2ViUlRDIGNvZGVjIix2YWx1ZTokLndlYlJ0Y0NvZGVjLG9wdGlvbnM6ZlEsZGlzYWJsZWQ6IUIsb25DaGFuZ2U6KEwpPT5KKHt3ZWJSdGNDb2RlYzpMfSl9KX0pLFgoWTAse2ljb246WChqMCx7Y2xhc3NOYW1lOnUwfSksbGFiZWw6Ik1heCBzaXplIixjaGlsZHJlbjpYKEgwLHtsYWJlbDoiTWF4IHNpemUiLHZhbHVlOlN0cmluZygkLm1heERpbWVuc2lvbiksb3B0aW9uczppMigkLm1heERpbWVuc2lvbixtUSxTdHJpbmcpLGRpc2FibGVkOll8fCFOLG9uQ2hhbmdlOihMKT0+USh7bWF4RGltZW5zaW9uOk51bWJlcihMKX0pfSl9KSxYKFkwLHtpY29uOlgoajAse2NsYXNzTmFtZTp1MH0pLGxhYmVsOiJNSlBFRyBGUFMiLGNoaWxkcmVuOlgoSDAse2xhYmVsOiJNSlBFRyBGUFMiLHZhbHVlOlN0cmluZygkLm1qcGVnRnBzKSxvcHRpb25zOmkyKCQubWpwZWdGcHMsVTQsU3RyaW5nKSxkaXNhYmxlZDpZfHwhTixvbkNoYW5nZTooTCk9PlEoe21qcGVnRnBzOk51bWJlcihMKX0pfSl9KSxYKFkwLHtpY29uOlgoajAse2NsYXNzTmFtZTp1MH0pLGxhYmVsOiJNSlBFRyBxdWFsaXR5IixjaGlsZHJlbjpYKEgwLHtsYWJlbDoiTUpQRUcgcXVhbGl0eSIsdmFsdWU6U3RyaW5nKCQubWpwZWdRdWFsaXR5KSxvcHRpb25zOmkyKCQubWpwZWdRdWFsaXR5LHBRLChMKT0+YCR7TWF0aC5yb3VuZChMKjEwMCl9JWApLGRpc2FibGVkOll8fCFOLG9uQ2hhbmdlOihMKT0+USh7bWpwZWdRdWFsaXR5Ok51bWJlcihMKX0pfSl9KSxYKFkwLHtpY29uOlgoajAse2NsYXNzTmFtZTp1MH0pLGxhYmVsOiJILjI2NCBGUFMiLGNoaWxkcmVuOlgoSDAse2xhYmVsOiJILjI2NCBGUFMiLHZhbHVlOlN0cmluZygkLmgyNjRGcHMpLG9wdGlvbnM6aTIoJC5oMjY0RnBzLFU0LFN0cmluZyksZGlzYWJsZWQ6WXx8IU58fCFLfHwkLmh0dHBDb2RlYz09PSJtanBlZyIsb25DaGFuZ2U6KEwpPT5RKHtoMjY0RnBzOk51bWJlcihMKX0pfSl9KSxYKFkwLHtpY29uOlgoajAse2NsYXNzTmFtZTp1MH0pLGxhYmVsOiJILjI2NCBiaXRyYXRlIixjaGlsZHJlbjpYKEgwLHtsYWJlbDoiSC4yNjQgYml0cmF0ZSIsdmFsdWU6U3RyaW5nKCQuaDI2NEJpdHJhdGUpLG9wdGlvbnM6aTIoJC5oMjY0Qml0cmF0ZSx1USwoTCk9PmAke0wvMWU2fSBNYnBzYCksZGlzYWJsZWQ6WXx8IU58fCFLfHwkLmh0dHBDb2RlYz09PSJtanBlZyIsb25DaGFuZ2U6KEwpPT5RKHtoMjY0Qml0cmF0ZTpOdW1iZXIoTCl9KX0pfSldfSl9KX1mdW5jdGlvbiBDNCh7b3BlbjokLG9uQ2xvc2U6Six1ZGlkOlEsZGV2aWNlUnVudGltZTpaLGN1cnJlbnRBcHA6SyxldmVudExvZ0V2ZW50c0VuZHBvaW50OlksbWV0cmljc0VuZHBvaW50OnEsYXhPdmVybGF5RW5hYmxlZDpHLG9uVG9nZ2xlQXhPdmVybGF5Ok4sc3RyZWFtU2V0dGluZ3M6QixvblN0cmVhbVBsYXliYWNrU2V0dGluZ3NDaGFuZ2U6TCxvblN0cmVhbUVuY29kZXJTZXR0aW5nc0NoYW5nZTpWLGFjdGl2ZUNvZGVjOlUsYXZjY1N1cHBvcnRlZDp6LHN0cmVhbVNldHRpbmdzUGVuZGluZzprLHdpZHRoOkh9KXtyZXR1cm4gWChMMix7b3BlbjokLHdpZHRoOkgsc3R5bGU6e2JhY2tncm91bmRDb2xvcjpVMn0sY2hpbGRyZW46W1goejIse2NoaWxkcmVuOltYKHQ5LHtjaGlsZHJlbjoiVG9vbHMifSksWChqNSx7b25DbGljazpKfSldfSksJCYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJwLTMuNSBvdmVyZmxvdy15LWF1dG8gZmxleC0xIGZsZXggZmxleC1jb2wgZ2FwLTMiLGNoaWxkcmVuOltYKG82LHt1ZGlkOlEsY3VycmVudEFwcDpLfSksWChMNCx7dWRpZDpRLGN1cnJlbnRBcHBCdW5kbGVJZDpLPy5idW5kbGVJZD8/bnVsbCxtZXRyaWNzRW5kcG9pbnQ6cX0pLFgoRzQse3VkaWQ6USxldmVudHNFbmRwb2ludDpZfSksWCh6NCx7dWRpZDpRLHJ1bnRpbWU6Wn0pLFgobjYse292ZXJsYXlFbmFibGVkOkcsb25Ub2dnbGVPdmVybGF5Ok59KSxYKFk0LHt1ZGlkOlEsYnVuZGxlSWQ6Sz8uYnVuZGxlSWQ/P251bGx9KSxYKGQ2LHt1ZGlkOlEsZXhlYzpFMX0pLFgoaTYse3VkaWQ6USxidW5kbGVJZDpLPy5idW5kbGVJZD8/bnVsbH0pLFgoSDQse3NldHRpbmdzOkIsb25QbGF5YmFja1NldHRpbmdzQ2hhbmdlOkwsb25FbmNvZGVyU2V0dGluZ3NDaGFuZ2U6VixhY3RpdmVDb2RlYzpVLGF2Y2NTdXBwb3J0ZWQ6eixlbmNvZGVyU2V0dGluZ3NEaXNhYmxlZDprfSldfSldfSl9ZnVuY3Rpb24gRjQoJCxKKXtsZXQgUTt0cnl7UT1uZXcgVVJMKCQud2ViU29ja2V0RGVidWdnZXJVcmwpfWNhdGNoe3JldHVybiAkfWxldCBaPWAke1EucGF0aG5hbWV9JHtRLnNlYXJjaH1gLEs9Si5wcm90b2NvbD09PSJodHRwczoiPyJ3c3M6Ijoid3M6IixZPUoucHJvdG9jb2w9PT0iaHR0cHM6Ij8id3NzIjoid3MiLHE9YCR7Si5ob3N0fSR7Wn1gLEc9JC5kZXZ0b29sc0Zyb250ZW5kVXJsO3RyeXtsZXQgTj1uZXcgVVJMKCQuZGV2dG9vbHNGcm9udGVuZFVybCxgJHtKLnByb3RvY29sfS8vJHtKLmhvc3R9YCk7Ti5zZWFyY2hQYXJhbXMuZGVsZXRlKCJ3cyIpLE4uc2VhcmNoUGFyYW1zLmRlbGV0ZSgid3NzIiksTi5zZWFyY2hQYXJhbXMuc2V0KFkscSksRz1gJHtOLnBhdGhuYW1lfSR7Ti5zZWFyY2h9JHtOLmhhc2h9YH1jYXRjaHt9cmV0dXJuey4uLiQsd2ViU29ja2V0RGVidWdnZXJVcmw6YCR7S30vLyR7Si5ob3N0fSR7Wn1gLGRldnRvb2xzRnJvbnRlbmRVcmw6R319ZnVuY3Rpb24gYTIoJCxKKXtmZXRjaChmMSgiZGV2dG9vbHMvaGlnaGxpZ2h0Iikse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxib2R5OkpTT04uc3RyaW5naWZ5KHt0YXJnZXRJZDokLG9uOkp9KSxrZWVwYWxpdmU6ITB9KS5jYXRjaCgoKT0+e30pfWZ1bmN0aW9uIFo4KCl7bGV0ICQ9ZjEoImRldnRvb2xzL3JlbGVhc2UiKTt0cnl7aWYodHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5zZW5kQmVhY29uKXtsZXQgSj1uZXcgQmxvYihbInt9Il0se3R5cGU6ImFwcGxpY2F0aW9uL2pzb24ifSk7aWYobmF2aWdhdG9yLnNlbmRCZWFjb24oJCxKKSlyZXR1cm59fWNhdGNoe31mZXRjaCgkLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keToie30iLGtlZXBhbGl2ZTohMH0pLmNhdGNoKCgpPT57fSl9ZnVuY3Rpb24gazQoJCl7bGV0IEo9JC5jb250ZW50RG9jdW1lbnQ7aWYoIUopcmV0dXJuO2xldCBRPSgpPT57bGV0IFk9W0pdO3doaWxlKFkubGVuZ3RoKXtsZXQgcT1ZLnBvcCgpLEc9cS5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1sYWJlbF0sW3RpdGxlXSIpO2ZvcihsZXQgTiBvZiBHKXtsZXQgQj1OLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpfHxOLnRpdGxlfHwiIjtpZigvXnRvZ2dsZSBzY3JlZW5jYXN0JC9pLnRlc3QoQikpcmV0dXJuIE59Zm9yKGxldCBOIG9mIHEucXVlcnlTZWxlY3RvckFsbCgiKiIpKWlmKE4uc2hhZG93Um9vdClZLnB1c2goTi5zaGFkb3dSb290KX1yZXR1cm4gbnVsbH0sWj0wLEs9KCk9PntaKys7bGV0IFk9USgpO2lmKFkmJlkuZ2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiKSE9PSJmYWxzZSIpe1kuY2xpY2soKTtyZXR1cm59aWYoWjwyMClzZXRUaW1lb3V0KEssMTAwKX07SygpfWZ1bmN0aW9uIE00KCQpe2xldCBKPVtdLFE9bmV3IE1hcDtmb3IobGV0IFogb2YgJCl7bGV0IEs9Wi5hcHBOYW1lfHxaLmJ1bmRsZUlkfHwiVW5rbm93biIsWT1aLmJ1bmRsZUlkfHxLLHE9US5nZXQoWSk7aWYoIXEpcT17a2V5OlksYXBwTmFtZTpLLGJ1bmRsZUlkOlouYnVuZGxlSWQsdGFyZ2V0czpbXX0sUS5zZXQoWSxxKSxKLnB1c2goWSk7cS50YXJnZXRzLnB1c2goWil9cmV0dXJuIEoubWFwKChaKT0+US5nZXQoWikpfWZ1bmN0aW9uIE80KCQsSil7bGV0W1EsWl09QSh7fSksSz1UMSgoKT0+Si5zbGljZSgpLnNvcnQoKS5qb2luKCJ8IiksW0pdKTtyZXR1cm4gYigoKT0+e2lmKCEkKXJldHVybjtsZXQgWT0hMTtmb3IobGV0IHEgb2YgSil7aWYoIXEpY29udGludWU7bGV0IEc9YCR7JH06JHtxfWAsTj1IMi5nZXQoRyk7aWYodHlwZW9mIE49PT0ic3RyaW5nInx8Tj09PW51bGwpe1ooKEIpPT5CW3FdPT09Tj9COnsuLi5CLFtxXTpOfSk7Y29udGludWV9YzYoRTEsJCxxKS50aGVuKChCKT0+e2lmKFkpcmV0dXJuO1ooKEwpPT4oey4uLkwsW3FdOkJ9KSl9KX1yZXR1cm4oKT0+e1k9ITB9fSxbJCxLXSksUX1mdW5jdGlvbiBBNCh7dWRpZDokLHRhcmdldHM6SixzZWxlY3RlZDpRLG9uU2VsZWN0VGFyZ2V0Olosb25SZWZyZXNoOkt9KXtsZXQgWT1NNChKKSxxPVkubWFwKChIKT0+SC5idW5kbGVJZCkuZmlsdGVyKChIKT0+ISFIKSxHPU80KCQscSksW04sQl09QSghMSksW0wsVl09QShudWxsKSxVPVQobnVsbCksej1UKG51bGwpO2IoKCk9PntpZighTilyZXR1cm47bGV0IEg9KEMpPT57aWYoIXouY3VycmVudClyZXR1cm47aWYoIXouY3VycmVudC5jb250YWlucyhDLnRhcmdldCkpQighMSl9O3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLEgpLCgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLEgpfSxbTl0pLGIoKCk9PntpZihOKXJldHVybjtpZihVLmN1cnJlbnQpYTIoVS5jdXJyZW50LCExKSxVLmN1cnJlbnQ9bnVsbDtaOCgpfSxbTl0pLGIoKCk9PntsZXQgSD0oKT0+WjgoKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIixIKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIixIKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsSCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsSCl9fSxbXSk7bGV0IGs9UT8oUS50aXRsZXx8US51cmx8fFEuYXBwTmFtZXx8IlVudGl0bGVkIikuc2xpY2UoMCw5MCk6IlNlbGVjdCB0YXJnZXQiO3JldHVybiBYKCJkaXYiLHtyZWY6eixjbGFzc05hbWU6InJlbGF0aXZlIHctZnVsbCBtaW4tdy0wIixjaGlsZHJlbjpbWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT57QigoSCk9PntpZighSClLKCk7cmV0dXJuIUh9KX0sY2xhc3NOYW1lOiJ3LWZ1bGwgbWluLXctMCBoLVsyNnB4XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIgYmctcGFuZWwgdGV4dC13aGl0ZS85MCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHJvdW5kZWQtbWQgdGV4dC1bMTJweF0gcHgtMiBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQiLCJhcmlhLWhhc3BvcHVwIjoibGlzdGJveCIsImFyaWEtZXhwYW5kZWQiOk4sImFyaWEtbGFiZWwiOiJXZWJLaXQgdGFyZ2V0IixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgbWluLXctMCIsY2hpbGRyZW46a30pLFgoeTIse3NpemU6MTIsc3Ryb2tlV2lkdGg6Mn0pXX0pLE4mJlgoInVsIix7cm9sZToibGlzdGJveCIsY2xhc3NOYW1lOiJhYnNvbHV0ZSB0b3AtW2NhbGMoMTAwJSs0cHgpXSBsZWZ0LTAgbS0wIHAtMSBsaXN0LW5vbmUgYmctcGFuZWwgYm9yZGVyIGJvcmRlci13aGl0ZS8xMiByb3VuZGVkLWxnIHNoYWRvdy1bMF84cHhfMjRweF9yZ2JhKDAsMCwwLDAuNSldIG1pbi13LVsyMjBweF0gbWF4LXctWzM2MHB4XSBtYXgtaC1bMzIwcHhdIG92ZXJmbG93LXktYXV0byB6LTUwIixjaGlsZHJlbjpZLm1hcCgoSCk9PntsZXQgQz1ILmJ1bmRsZUlkP0dbSC5idW5kbGVJZF06bnVsbDtyZXR1cm4gWCgibGkiLHtjbGFzc05hbWU6Imxpc3Qtbm9uZSBtLTAgcC0wIixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0xLjUgcHQtMSBwYi0wLjUgdGV4dC1bMTJweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlL1swLjkyXSIsY2hpbGRyZW46W0M/WCgiaW1nIix7c3JjOkMsYWx0OiIiLGNsYXNzTmFtZToidy00IGgtNCByb3VuZGVkLVszcHhdIHNocmluay0wIG9iamVjdC1jb3ZlciJ9KTpYKCJzcGFuIix7Y2xhc3NOYW1lOiJ3LTQgaC00IHJvdW5kZWQtWzNweF0gc2hyaW5rLTAgb2JqZWN0LWNvdmVyIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0pLFgoInNwYW4iLHtjbGFzc05hbWU6Im92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjpILmFwcE5hbWV9KV19KSxYKCJ1bCIse3JvbGU6Imdyb3VwIixjbGFzc05hbWU6Imxpc3Qtbm9uZSBtLTAgcC0wIHBsLVsyNnB4XSIsY2hpbGRyZW46SC50YXJnZXRzLm1hcCgoRik9PntsZXQgTz1RPy5pZD09PUYuaWQsST0hIUYuaW5Vc2VCeU90aGVySW5zcGVjdG9yJiYhTyx3PShGLnRpdGxlfHxGLnVybHx8Ri5hcHBOYW1lfHwiVW50aXRsZWQiKS5zbGljZSgwLDkwKSxTPUw9PT1GLmlkJiYhSSxqPSJmbGV4IGZsZXgtY29sIHB4LTIgcHktWzNweF0gcm91bmRlZCB0ZXh0LVsxMnB4XSBsZWFkaW5nLVsxLjM1XSI7cmV0dXJuIFgoImxpIix7cm9sZToib3B0aW9uIiwiYXJpYS1zZWxlY3RlZCI6TywiYXJpYS1kaXNhYmxlZCI6SSx0YWJJbmRleDpJPy0xOjAsdGl0bGU6ST8iQWxyZWFkeSBiZWluZyBpbnNwZWN0ZWQgYnkgYW5vdGhlciBkZWJ1Z2dlciI6dm9pZCAwLG9uTW91c2VFbnRlcjooKT0+e2lmKEkpcmV0dXJuO2lmKFUuY3VycmVudCYmVS5jdXJyZW50IT09Ri5pZClhMihVLmN1cnJlbnQsITEpO1UuY3VycmVudD1GLmlkLFYoRi5pZCksYTIoRi5pZCwhMCl9LG9uTW91c2VMZWF2ZTooKT0+e2lmKFUuY3VycmVudD09PUYuaWQpYTIoRi5pZCwhMSksVS5jdXJyZW50PW51bGw7VigobSk9Pm09PT1GLmlkP251bGw6bSl9LG9uQ2xpY2s6KCk9PntpZihJKXJldHVybjtaKEYuaWQpLEIoITEpfSxjbGFzc05hbWU6YGZsZXggZmxleC1jb2wgcHgtMiBweS1bM3B4XSByb3VuZGVkIHRleHQtWzEycHhdIGxlYWRpbmctWzEuMzVdICR7ST8ib3BhY2l0eS00MCBjdXJzb3Itbm90LWFsbG93ZWQgaXRhbGljIHRleHQtd2hpdGUvODUiOlM/ImJnLVtyZ2JhKDEwLDEzMiwyNTUsMC4yMildIHRleHQtd2hpdGUvODUgY3Vyc29yLXBvaW50ZXIiOk8/ImJnLXdoaXRlL1swLjA2XSB0ZXh0LXdoaXRlLzg1IGN1cnNvci1wb2ludGVyIjoidGV4dC13aGl0ZS84NSBjdXJzb3ItcG9pbnRlciJ9YCxjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToiYmxvY2sgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAiLGNoaWxkcmVuOnd9KSxGLnVybCYmRi51cmwhPT0iYWJvdXQ6YmxhbmsiJiZYKCJzcGFuIix7Y2xhc3NOYW1lOiJibG9jayBmb250LW1vbm8gdGV4dC1bMTBweF0gdGV4dC13aGl0ZS9bMC40Ml0gb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAiLGNoaWxkcmVuOkYudXJsfSldfSxGLmlkKX0pfSldfSxILmtleSl9KX0pXX0pfWZ1bmN0aW9uIFc0KHtvcGVuOiQsb25DbG9zZTpKLHVkaWQ6USx0YXJnZXRzOlosc2VsZWN0ZWRUYXJnZXRJZDpLLG9uU2VsZWN0VGFyZ2V0OlksbG9hZGluZzpxLGVycm9yOkcsb25SZWZyZXNoOk4sd2lkdGg6Qn0pe2xldCBMPUs/Wi5maW5kKChWKT0+Vi5pZD09PUspPz9udWxsOm51bGw7cmV0dXJuIFgoTDIse29wZW46JCx3aWR0aDpCLGNoaWxkcmVuOltYKHoyLHtjaGlsZHJlbjpbWi5sZW5ndGg+MD9YKEE0LHt1ZGlkOlEsdGFyZ2V0czpaLHNlbGVjdGVkOkwsb25TZWxlY3RUYXJnZXQ6WSxvblJlZnJlc2g6Tn0pOlgoInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzEycHhdIHRleHQtd2hpdGUvWzAuNDhdIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjpxPyJMb29raW5nIGZvciBTYWZhcmkgYW5kIGluc3BlY3RhYmxlIHdlYnZpZXdzLi4uIjoiTm8gaW5zcGVjdGFibGUgU2FmYXJpIG9yIFdLV2ViVmlldyB0YXJnZXRzIn0pLFgoajUse29uQ2xpY2s6SixhcmlhTGFiZWw6IkNsb3NlIFdlYktpdCBEZXZUb29scyIsdGl0bGU6IkNsb3NlIixpY29uU2l6ZToxNX0pXX0pLFgoImRpdiIse2NsYXNzTmFtZToiZmxleC0xIG1pbi1oLTAgYmctd2hpdGUgcmVsYXRpdmUiLGNoaWxkcmVuOkc/WCgiZGl2Iix7Y2xhc3NOYW1lOiJoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC02IGJnLXBhbmVsLWRlZXAgdGV4dC13aGl0ZS9bMC41OF0gdGV4dC1jZW50ZXIgdGV4dC1bMTNweF0iLGNoaWxkcmVuOkd9KTpMJiYkP1goImlmcmFtZSIse3NyYzpMLmRldnRvb2xzRnJvbnRlbmRVcmwsdGl0bGU6YFdlYktpdCBEZXZUb29scyAtICR7TC50aXRsZXx8TC51cmx8fEwuaWR9YCxjbGFzc05hbWU6InctZnVsbCBoLWZ1bGwgYm9yZGVyLW5vbmUgYmxvY2sgYmctd2hpdGUiLG9uTG9hZDooVik9Pms0KFYuY3VycmVudFRhcmdldCl9LEwuaWQpOlgoImRpdiIse2NsYXNzTmFtZToiaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtNiBiZy1wYW5lbC1kZWVwIHRleHQtd2hpdGUvWzAuNThdIHRleHQtY2VudGVyIHRleHQtWzEzcHhdIixjaGlsZHJlbjpMPyJEZXZUb29scyBwYXVzZWQg4oCUIG9wZW4gdGhlIHBhbmVsIHRvIHJlYXR0YWNoLiI6Ik9wZW4gU2FmYXJpIG9yIGFuIGluc3BlY3RhYmxlIFdLV2ViVmlldyBpbiB0aGUgc2ltdWxhdG9yLiJ9KX0pXX0pfWZ1bmN0aW9uIGxRKHtob3N0UGF0aDokLGV4ZWM6Six1ZGlkOlEsb25VcGxvYWRTdGFydDpaLG9uVXBsb2FkUHJvZ3Jlc3M6SyxvblVwbG9hZEVuZDpZLG9uSG9zdFBhdGhEcm9wOnF9KXtxPy4oJCk7bGV0IEc9JC5zcGxpdCgiLyIpLnBvcCgpPz8iaW1hZ2UiLE49WihHLCJtZWRpYSIpO3JldHVybiBLKE4sbnVsbCksdDYoJCxKLFEpLnRoZW4oKCk9PlkoTiwhMCkpLmNhdGNoKChCKT0+WShOLCExLEIgaW5zdGFuY2VvZiBFcnJvcj9CLm1lc3NhZ2U6IkFkZCBmYWlsZWQiKSl9ZnVuY3Rpb24gXzQoe2V4ZWM6JCx1ZGlkOkosZW5hYmxlZDpRLG9uVXBsb2FkU3RhcnQ6WixvblVwbG9hZFByb2dyZXNzOkssb25VcGxvYWRFbmQ6WSxvblVuc3VwcG9ydGVkOnEsb25Ib3N0UGF0aERyb3A6R30pe2xldFtOLEJdPUEoITEpLEw9VCgwKSxWPUQoYXN5bmMoSCk9PntpZihILnByZXZlbnREZWZhdWx0KCksSC5zdG9wUHJvcGFnYXRpb24oKSxMLmN1cnJlbnQ9MCxCKCExKSwhUXx8IUopcmV0dXJuO2xldCBDPUguZGF0YVRyYW5zZmVyLmdldERhdGEobDUpO2lmKEMpe2xRKHtob3N0UGF0aDpDLGV4ZWM6JCx1ZGlkOkosb25VcGxvYWRTdGFydDpaLG9uVXBsb2FkUHJvZ3Jlc3M6SyxvblVwbG9hZEVuZDpZLG9uSG9zdFBhdGhEcm9wOkd9KTtyZXR1cm59bGV0IEY9QXJyYXkuZnJvbShILmRhdGFUcmFuc2Zlci5maWxlcyk7aWYoRi5sZW5ndGg9PT0wKXJldHVybjtmb3IobGV0IE8gb2YgRil7bGV0IEk9ZTYoTyk7aWYoIUkpe3EoTyk7Y29udGludWV9bGV0IHc9WihPLm5hbWUsSSk7UTQoTyxJLCQsSiwoUyk9PksodyxTKSkudGhlbigoKT0+WSh3LCEwKSkuY2F0Y2goKFMpPT5ZKHcsITEsUyBpbnN0YW5jZW9mIEVycm9yP1MubWVzc2FnZToiVXBsb2FkIGZhaWxlZCIpKX19LFtRLEosJCxaLEssWSxxLEddKSxVPUQoKEgpPT57aWYoSC5wcmV2ZW50RGVmYXVsdCgpLFEpSC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0iY29weSJ9LFtRXSksej1EKChIKT0+e2lmKEgucHJldmVudERlZmF1bHQoKSwhUSlyZXR1cm47aWYoTC5jdXJyZW50KyssTC5jdXJyZW50PT09MSlCKCEwKX0sW1FdKSxrPUQoKEgpPT57aWYoSC5wcmV2ZW50RGVmYXVsdCgpLEwuY3VycmVudC0tLEwuY3VycmVudDw9MClMLmN1cnJlbnQ9MCxCKCExKX0sW10pO3JldHVybntpc0RyYWdPdmVyOk4sZHJvcFpvbmVQcm9wczp7b25EcmFnT3ZlcjpVLG9uRHJhZ0VudGVyOnosb25EcmFnTGVhdmU6ayxvbkRyb3A6Vn19fWZ1bmN0aW9uIFA0KCQpe2xldCBKPW5ldyBVaW50OEFycmF5KDY1NTM2KSxRPTAsWj0wLEs9MTAyNCxZPW5ldyBUZXh0RGVjb2RlcigibGF0aW4xIikscT0oVSk9PntpZihRK1UubGVuZ3RoPkoubGVuZ3RoKXtpZihaPjApSi5jb3B5V2l0aGluKDAsWixRKSxRLT1aLFo9MDtpZihRK1UubGVuZ3RoPkoubGVuZ3RoKXtsZXQgej1KLmxlbmd0aDt3aGlsZSh6PFErVS5sZW5ndGgpeio9MjtsZXQgaz1uZXcgVWludDhBcnJheSh6KTtrLnNldChKLnN1YmFycmF5KDAsUSkpLEo9a319Si5zZXQoVSxRKSxRKz1VLmxlbmd0aH0sRz0oVSk9PntsZXQgej1NYXRoLm1pbihRLTQsVStLKTtmb3IobGV0IGs9VTtrPD16O2srKylpZihKW2tdPT09MTMmJkpbaysxXT09PTEwJiZKW2srMl09PT0xMyYmSltrKzNdPT09MTApcmV0dXJuIGs7cmV0dXJuLTF9LE49KFUseik9PntsZXQgaz1ZLmRlY29kZShKLnN1YmFycmF5KFUseikpLEg9L2NvbnRlbnQtbGVuZ3RoOlxzKihcZCspL2kuZXhlYyhrKTtyZXR1cm4gSD9OdW1iZXIoSFsxXSk6bnVsbH0sQj0wLEw9KFUpPT57bGV0IHo9LTE7Zm9yKGxldCBrPVU7azxRLTE7aysrKWlmKEpba109PT0yNTUmJkpbaysxXT09PTIxNil7ej1rO2JyZWFrfWlmKHo9PT0tMSlyZXR1cm4gbnVsbDtmb3IobGV0IGs9TWF0aC5tYXgoeisyLEIpO2s8US0xO2srKylpZihKW2tdPT09MjU1JiZKW2srMV09PT0yMTcpcmV0dXJuIEI9MCx7czp6LGU6aysyfTtyZXR1cm4gQj1NYXRoLm1heCh6KzIsUS0xKSxudWxsfSxWPSgpPT57d2hpbGUoWjxRKXtsZXQgVT1HKFopO2lmKFU+PTApe2xldCBrPU4oWixVKTtpZihrIT1udWxsJiZrPjApe2xldCBIPVUrNCxDPUgraztpZihRPEMpYnJlYWs7JChKLnN1YmFycmF5KEgsQykpLFo9Qztjb250aW51ZX19ZWxzZSBpZihRLVo8PUspYnJlYWs7bGV0IHo9TChaKTtpZigheilicmVhazskKEouc3ViYXJyYXkoei5zLHouZSkpLFo9ei5lfWlmKFo+MCl7aWYoWjxRKUouY29weVdpdGhpbigwLFosUSk7US09WixCPUI+Wj9CLVo6MCxaPTB9fTtyZXR1cm57cHVzaChVKXtpZihVLmxlbmd0aD09PTApcmV0dXJuO3EoVSksVigpfX19ZnVuY3Rpb24gRDQoJCl7bGV0IEo9VChuZXcgU2V0KSxRPUQoKFopPT57cmV0dXJuIEouY3VycmVudC5hZGQoWiksKCk9PntKLmN1cnJlbnQuZGVsZXRlKFopfX0sW10pO3JldHVybiBiKCgpPT57aWYoISQpcmV0dXJuO2xldCBaPW5ldyBBYm9ydENvbnRyb2xsZXIsSz0hMSxZPW51bGwscT1uZXcgVVJMKCQpO3Euc2VhcmNoUGFyYW1zLnNldCgicmF3IiwiMSIpO2xldCBHPXEudG9TdHJpbmcoKSxOPSgpPT57aWYoS3x8Wi5zaWduYWwuYWJvcnRlZHx8WSlyZXR1cm47WT1zZXRUaW1lb3V0KCgpPT57WT1udWxsLEwoKX0sMTAwMCl9LEI9KFYpPT57aWYoSi5jdXJyZW50LnNpemU9PT0wKXJldHVybjtsZXQgVT1VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtWXSx7dHlwZToiaW1hZ2UvanBlZyJ9KSk7Zm9yKGxldCB6IG9mIEouY3VycmVudCl6KFUpfSxMPWFzeW5jKCk9Pnt0cnl7bGV0IFU9KGF3YWl0IGZldGNoKEcse3NpZ25hbDpaLnNpZ25hbH0pKS5ib2R5Py5nZXRSZWFkZXIoKTtpZighVSl7TigpO3JldHVybn1sZXQgej1QNChCKTt3aGlsZSghMCl7bGV0e2RvbmU6ayx2YWx1ZTpIfT1hd2FpdCBVLnJlYWQoKTtpZihrKWJyZWFrO2lmKEgmJkgubGVuZ3RoKXoucHVzaChIKX19Y2F0Y2h7fWZpbmFsbHl7TigpfX07cmV0dXJuIEwoKSwoKT0+e2lmKEs9ITAsWSljbGVhclRpbWVvdXQoWSk7Wi5hYm9ydCgpfX0sWyRdKSx7c3Vic2NyaWJlRnJhbWU6USxmcmFtZTpudWxsfX1mdW5jdGlvbiB3NCgpe2xldFskXT1BKG8wKTtyZXR1cm57c3VwcG9ydGVkOiR9fWZ1bmN0aW9uIGM1KCQsSil7cmV0dXJuICQ9PT0iZmlyc3QtZnJhbWUtdGltZW91dCImJko9PT0iY29ubmVjdGVkIj8iY29kZWMiOiJ0cmFuc3BvcnQifXZhciBUND0iYWxsIjtjbGFzcyBuMiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIldlYlJUQyBzaWduYWxpbmcgc3RheWVkIGJ1c3kgZm9yIHRvbyBsb25nLiBSZWxvYWQgdG8gdHJ5IGFnYWluLiIpO3RoaXMubmFtZT0iV2ViUnRjU2lnbmFsaW5nQnVzeUVycm9yIn19Y2xhc3MgcjUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJXZWJSVEMgc2lnbmFsaW5nIHRpbWVkIG91dC4iKTt0aGlzLm5hbWU9IldlYlJ0Y1NpZ25hbGluZ1RpbWVvdXRFcnJvciJ9fWZ1bmN0aW9uIG81KCQpe3JldHVybiAkLnJlYXNvbj8/bmV3IERPTUV4Y2VwdGlvbigiVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZCIsIkFib3J0RXJyb3IiKX1mdW5jdGlvbiBkUSgkLEope2lmKEo/LmFib3J0ZWQpcmV0dXJuIFByb21pc2UucmVqZWN0KG81KEopKTtyZXR1cm4gbmV3IFByb21pc2UoKFEsWik9PntsZXQgSz1zZXRUaW1lb3V0KFksJCk7ZnVuY3Rpb24gWSgpe0o/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixxKSxRKCl9ZnVuY3Rpb24gcSgpe2NsZWFyVGltZW91dChLKSxaKEo/bzUoSik6bmV3IERPTUV4Y2VwdGlvbigiVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZCIsIkFib3J0RXJyb3IiKSl9Sj8uYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHEse29uY2U6ITB9KX0pfWFzeW5jIGZ1bmN0aW9uIEk0KHt1cmw6JCxzZXNzaW9uSWQ6SixrZWVwYWxpdmU6UT0hMSxzZW5kQmVhY29uOlosZmV0Y2hJbXBsOks9ZmV0Y2h9KXtsZXQgWT1KU09OLnN0cmluZ2lmeSh7c2Vzc2lvbklkOkp9KSxxPVo/Pyh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmdHlwZW9mIG5hdmlnYXRvci5zZW5kQmVhY29uPT09ImZ1bmN0aW9uIj9uYXZpZ2F0b3Iuc2VuZEJlYWNvbi5iaW5kKG5hdmlnYXRvcik6dm9pZCAwKTtpZihRJiZxKXRyeXtpZihxKCQsbmV3IEJsb2IoW1ldLHt0eXBlOiJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgifSkpKXJldHVybn1jYXRjaHt9YXdhaXQgSygkLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpZLGtlZXBhbGl2ZTpRfSkudGhlbigoKT0+e3JldHVybn0sKCk9PntyZXR1cm59KX1hc3luYyBmdW5jdGlvbiBFNCh7dXJsOiQsYm9keTpKLHNpZ25hbDpRLHJlcXVlc3RUaW1lb3V0TXM6WixidXN5UmV0cnlJbnRlcnZhbE1zOkssYnVzeVJldHJ5Q291bnQ6WSxmZXRjaEltcGw6cT1mZXRjaH0pe2ZvcihsZXQgRz0wO0c8PVk7RysrKXtpZihRPy5hYm9ydGVkKXRocm93IG81KFEpO2xldCBOPW5ldyBBYm9ydENvbnRyb2xsZXIsQj0hMSxMPSgpPT5OLmFib3J0KFE/bzUoUSk6dm9pZCAwKTtRPy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsTCx7b25jZTohMH0pO2xldCBWPXNldFRpbWVvdXQoKCk9PntCPSEwLE4uYWJvcnQoKX0sWiksVTt0cnl7VT1hd2FpdCBxKCQse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxzaWduYWw6Ti5zaWduYWwsYm9keTpKfSl9Y2F0Y2goeil7aWYoQiYmIVE/LmFib3J0ZWQpdGhyb3cgbmV3IHI1O3Rocm93IHp9ZmluYWxseXtjbGVhclRpbWVvdXQoViksUT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLEwpfWlmKFUuc3RhdHVzIT09NDA5KXJldHVybiBVO2lmKGF3YWl0IFUuYm9keT8uY2FuY2VsKCksRz09PVkpdGhyb3cgbmV3IG4yO2F3YWl0IGRRKEssUSl9dGhyb3cgbmV3IG4yfXZhciBjUT1be3VybHM6WyJzdHVuOnN0dW4ubC5nb29nbGUuY29tOjE5MzAyIl19LHt1cmxzOlsic3R1bjpzdHVuMS5sLmdvb2dsZS5jb206MTkzMDIiXX1dLG9RPTMwMDAsclE9MjAwMDAsaVE9NDAwMCxhUT01MDAsblE9MzAsc1E9NTAwLHRRPTUwMDA7ZnVuY3Rpb24geTQoKXtpZih0eXBlb2YgY3J5cHRvLnJhbmRvbVVVSUQ9PT0iZnVuY3Rpb24iKXJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpO2xldCAkPWNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMTYpKTskWzZdPSRbNl0mMTV8NjQsJFs4XT0kWzhdJjYzfDEyODtsZXQgSj1BcnJheS5mcm9tKCQsKFEpPT5RLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpO3JldHVybmAke0ouc2xpY2UoMCw4KX0tJHtKLnNsaWNlKDgsMTIpfS0ke0ouc2xpY2UoMTIsMTYpfS0ke0ouc2xpY2UoMTYsMjApfS0ke0ouc2xpY2UoMjApfWB9ZnVuY3Rpb24gYjQoe29mZmVyVXJsOiQsY2xvc2VVcmw6SixlbmFibGVkOlEsY29kZWM6Wj0iaDI2NCIsaWNlU2VydmVyczpLfSl7bGV0W1kscV09QShudWxsKSxbRyxOXT1BKG51bGwpLFtCLExdPUEobnVsbCksW1YsVV09QSgwKSx6PVQodm9pZCAwKSxrPVQoITEpLEg9VCgwKSxDPUQoKCk9PntpZihrLmN1cnJlbnQ9ITAsSC5jdXJyZW50PTAsei5jdXJyZW50IT09dm9pZCAwKXdpbmRvdy5jbGVhclRpbWVvdXQoei5jdXJyZW50KSx6LmN1cnJlbnQ9dm9pZCAwO04obnVsbCksTChudWxsKX0sW10pO3JldHVybiBiKCgpPT57SC5jdXJyZW50PTB9LFtRLCQsSixaLEtdKSxiKCgpPT57aWYoIVF8fCEkKXJldHVybjtpZihOKG51bGwpLHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbj4idSJ8fHR5cGVvZiBSVENSdHBSZWNlaXZlcj4idSIpe3EobnVsbCksTCgiV2ViUlRDIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLiIpLE4oe3Nlc3Npb25JZDp5NCgpLGtpbmQ6InBlcm1hbmVudCJ9KTtyZXR1cm59bGV0IEY9ITEsTz1udWxsLEksdz1udWxsLFM9ITEsaj1uZXcgQWJvcnRDb250cm9sbGVyLCQxPXk0KCksbT1LPy5sZW5ndGg/SzpjUTtpZihxKG51bGwpLE4obnVsbCksTChudWxsKSxrLmN1cnJlbnQ9ITEsei5jdXJyZW50IT09dm9pZCAwKXdpbmRvdy5jbGVhclRpbWVvdXQoei5jdXJyZW50KSx6LmN1cnJlbnQ9dm9pZCAwO2xldCBjPSh4PSExKT0+e2lmKHcpcmV0dXJuIHc7cmV0dXJuIHc9STQoe3VybDpKLHNlc3Npb25JZDokMSxrZWVwYWxpdmU6eH0pLHd9LG49KCk9PnZvaWQgYyghMCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIixuKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIixuKTtsZXQgbz0oKT0+e3EobnVsbCksTz8uY2xvc2UoKX0scj0oeCk9PntpZihGfHxTKXJldHVybjtTPSEwLEwoeCksTih7c2Vzc2lvbklkOiQxLGtpbmQ6InBlcm1hbmVudCJ9KSxvKCksYygpfSxRMT0oKT0+e2lmKEZ8fFMpcmV0dXJuO1M9ITAsbygpLGMoKS5maW5hbGx5KCgpPT57aWYoIUYpTih7c2Vzc2lvbklkOiQxLGtpbmQ6ImNvZGVjIixjb2RlYzpafSl9KX0sTjE9KHgpPT57aWYoRnx8UylyZXR1cm47Uz0hMCxOKG51bGwpO2xldCBhPUguY3VycmVudCsrLEsxPU1hdGgubWluKHNRKjIqKk1hdGgubWluKGEsNCksdFEpO0woYCR7eH0gUmV0cnlpbmcuLi5gKSxvKCksYygpLmZpbmFsbHkoKCk9PntpZihGKXJldHVybjtJPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57aWYoIUYpVSgoTDEpPT5MMSsxKX0sSzEpfSl9LGQ9KHgpPT5uZXcgUHJvbWlzZSgoYSk9PntpZih4LmljZUdhdGhlcmluZ1N0YXRlPT09ImNvbXBsZXRlIil7YSgpO3JldHVybn1sZXQgSzEsTDE9ITEsSjE9KCk9PntpZihMMSlyZXR1cm47aWYoTDE9ITAseC5yZW1vdmVFdmVudExpc3RlbmVyKCJpY2VnYXRoZXJpbmdzdGF0ZWNoYW5nZSIsWTEpLEsxIT09dm9pZCAwKXdpbmRvdy5jbGVhclRpbWVvdXQoSzEpO2EoKX0sWTE9KCk9PntpZih4LmljZUdhdGhlcmluZ1N0YXRlPT09ImNvbXBsZXRlIilKMSgpfTt4LmFkZEV2ZW50TGlzdGVuZXIoImljZWdhdGhlcmluZ3N0YXRlY2hhbmdlIixZMSksSzE9d2luZG93LnNldFRpbWVvdXQoSjEsb1EpfSk7cmV0dXJuKGFzeW5jKCk9Pnt0cnl7Tz1uZXcgUlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6bSxpY2VUcmFuc3BvcnRQb2xpY3k6VDR9KTtsZXQgeD1PLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIse2RpcmVjdGlvbjoicmVjdm9ubHkifSksYT1SVENSdHBSZWNlaXZlci5nZXRDYXBhYmlsaXRpZXMoInZpZGVvIiksSzE9Wj09PSJoMjY0Ij8idmlkZW8vSDI2NCI6Wj09PSJ2cDkiPyJ2aWRlby9WUDkiOiJ2aWRlby9WUDgiO2lmKGE/LmNvZGVjcy5sZW5ndGgmJiJzZXRDb2RlY1ByZWZlcmVuY2VzImluIHgpe2xldCB5PUsxLnRvTG93ZXJDYXNlKCk7eC5zZXRDb2RlY1ByZWZlcmVuY2VzKFsuLi5hLmNvZGVjcy5maWx0ZXIoKGcpPT5nLm1pbWVUeXBlLnRvTG93ZXJDYXNlKCk9PT15KSwuLi5hLmNvZGVjcy5maWx0ZXIoKGcpPT5nLm1pbWVUeXBlLnRvTG93ZXJDYXNlKCkhPT15KV0pfU8ub250cmFjaz0oeSk9PntpZihGKXJldHVybjtpZihrLmN1cnJlbnQ9ITEseS50cmFjay5vbmVuZGVkPSgpPT5OMSgiV2ViUlRDIHZpZGVvIHRyYWNrIGVuZGVkLiIpLHEoeS5zdHJlYW1zWzBdPz9uZXcgTWVkaWFTdHJlYW0oW3kudHJhY2tdKSksei5jdXJyZW50IT09dm9pZCAwKXdpbmRvdy5jbGVhclRpbWVvdXQoei5jdXJyZW50KTt6LmN1cnJlbnQ9d2luZG93LnNldFRpbWVvdXQoKCk9PntpZih6LmN1cnJlbnQ9dm9pZCAwLEZ8fGsuY3VycmVudClyZXR1cm47bGV0IGc9Tz8uY29ubmVjdGlvblN0YXRlPz8iY2xvc2VkIjtpZihjNSgiZmlyc3QtZnJhbWUtdGltZW91dCIsZyk9PT0iY29kZWMiKVExKCk7ZWxzZSBOMSgiV2ViUlRDIGRpZCBub3QgZXN0YWJsaXNoIGEgdmlkZW8gcGF0aC4iKX0saVEpfSxPLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlPSgpPT57aWYoRnx8IU98fE8uY29ubmVjdGlvblN0YXRlIT09ImZhaWxlZCIpcmV0dXJuO2lmKGM1KCJjb25uZWN0aW9uLWZhaWxlZCIsTy5jb25uZWN0aW9uU3RhdGUpPT09InRyYW5zcG9ydCIpTjEoIldlYlJUQyBjb25uZWN0aW9uIGZhaWxlZC4iKX07bGV0IEwxPWF3YWl0IE8uY3JlYXRlT2ZmZXIoKTthd2FpdCBPLnNldExvY2FsRGVzY3JpcHRpb24oTDEpLGF3YWl0IGQoTyk7bGV0IEoxPU8ubG9jYWxEZXNjcmlwdGlvbjtpZighSjEpdGhyb3cgRXJyb3IoIldlYlJUQyBvZmZlciB3YXMgbm90IGNyZWF0ZWQiKTtsZXQgWTE9YXdhaXQgRTQoe3VybDokLHNpZ25hbDpqLnNpZ25hbCxyZXF1ZXN0VGltZW91dE1zOnJRLGJ1c3lSZXRyeUludGVydmFsTXM6YVEsYnVzeVJldHJ5Q291bnQ6blEsYm9keTpKU09OLnN0cmluZ2lmeSh7dHlwZTpKMS50eXBlLHNkcDpKMS5zZHAsc2Vzc2lvbklkOiQxLGNvZGVjOlosaWNlU2VydmVyczptfSl9KTtpZighWTEub2spe2F3YWl0IFkxLmJvZHk/LmNhbmNlbCgpLHIoYFdlYlJUQyBvZmZlciBmYWlsZWQ6IEhUVFAgJHtZMS5zdGF0dXN9YCk7cmV0dXJufWxldCBDMT1hd2FpdCBZMS5qc29uKCk7aWYoRil7YXdhaXQgYyghMCk7cmV0dXJufXRyeXthd2FpdCBPLnNldFJlbW90ZURlc2NyaXB0aW9uKEMxKX1jYXRjaHtyKCJXZWJSVEMgcmV0dXJuZWQgYW4gaW52YWxpZCBzZXNzaW9uIGRlc2NyaXB0aW9uLiIpfX1jYXRjaCh4KXtpZihGfHxqLnNpZ25hbC5hYm9ydGVkKXJldHVybjtpZih4IGluc3RhbmNlb2YgbjIpe3IoeC5tZXNzYWdlKTtyZXR1cm59bGV0IGE9eCBpbnN0YW5jZW9mIHI1PyJXZWJSVEMgc2lnbmFsaW5nIHRpbWVkIG91dC4iOiJXZWJSVEMgc2lnbmFsaW5nIGZhaWxlZC4iO2lmKGM1KCJzaWduYWxpbmctZmFpbGVkIixPPy5jb25uZWN0aW9uU3RhdGU/PyJjbG9zZWQiKT09PSJ0cmFuc3BvcnQiKU4xKGEpfX0pKCksKCk9PntpZihGPSEwLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsbiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsbiksai5hYm9ydCgpLEkhPT12b2lkIDApd2luZG93LmNsZWFyVGltZW91dChJKTtpZih6LmN1cnJlbnQhPT12b2lkIDApd2luZG93LmNsZWFyVGltZW91dCh6LmN1cnJlbnQpLHouY3VycmVudD12b2lkIDA7YyghMCkscShudWxsKSxPPy5jbG9zZSgpfX0sW1EsJCxKLFosSyxWXSkse3N0cmVhbTpZLGZhaWx1cmU6RyxlcnJvcjpCLG1hcmtGcmFtZURlY29kZWQ6Q319ZnVuY3Rpb24gaTUoJCxKLFEsWixLPSJsZWZ0Iil7bGV0IFk9RCgoVSx6KT0+Sz09PSJsZWZ0Ij9VLXo6ei1VLFtLXSkscT1EKChVKT0+TWF0aC5tYXgoUSxNYXRoLm1pbihaLFUpKSxbUSxaXSksW0csTl09QSgoKT0+e2lmKHR5cGVvZiB3aW5kb3c+InUiKXJldHVybiBKO2xldCBVPXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgkKSx6PVUhPW51bGw/TnVtYmVyKFUpOk5hTjtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHopP3Eoeik6Sn0pLEI9dHlwZW9mIHdpbmRvdzwidSI/TWF0aC5taW4oWix3aW5kb3cuaW5uZXJXaWR0aC0zMik6WixMPU1hdGgubWF4KFEsTWF0aC5taW4oQixHKSksVj1EKChVKT0+e1UucHJldmVudERlZmF1bHQoKTtsZXQgej1VLmNsaWVudFgsaz1MLEg9VS5jdXJyZW50VGFyZ2V0O0guc2V0UG9pbnRlckNhcHR1cmUoVS5wb2ludGVySWQpO2xldCBDPShPKT0+e2xldCBJPXEoaytZKHosTy5jbGllbnRYKSk7TihJKX0sRj0oTyk9PntILnJlbGVhc2VQb2ludGVyQ2FwdHVyZShPLnBvaW50ZXJJZCksSC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsQyksSC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEYpLEgucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsRik7dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgkLFN0cmluZyhxKGsrWSh6LE8uY2xpZW50WCkpKSl9Y2F0Y2h7fX07SC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsQyksSC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEYpLEguYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsRil9LFtxLFksTCwkXSk7cmV0dXJue3dpZHRoOkwsb25Qb2ludGVyRG93bjpWfX12YXIgZVE9ODAwMDtmdW5jdGlvbiAkWigkKXtyZXR1cm4iZmlsZTovLyIrJC5zcGxpdCgiLyIpLm1hcChlbmNvZGVVUklDb21wb25lbnQpLmpvaW4oIi8iKX1mdW5jdGlvbiBKWigkKXtyZXR1cm4gJCE9PSJub25lIn1mdW5jdGlvbiBTNCh7dG9hc3Q6JCxvblJldmVhbDpKLG9uRGlzbWlzczpRLG9uUGF1c2U6WixvblJlc3VtZTpLfSl7bGV0W1kscV09QSghMSksRz1UKG51bGwpLE49VChudWxsKSxCPSgpPT57aWYoTi5jdXJyZW50KWNsZWFyVGltZW91dChOLmN1cnJlbnQpO04uY3VycmVudD1udWxsfTtiKCgpPT4oKT0+QigpLFtdKTtsZXQgTD0oVSk9PntpZighJC5wYXRoKXtVLnByZXZlbnREZWZhdWx0KCk7cmV0dXJufUIoKSxaKCksTi5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntOLmN1cnJlbnQ9bnVsbCxxKCExKSxLKCl9LGVRKSxVLmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIiwkWigkLnBhdGgpKSxVLmRhdGFUcmFuc2Zlci5zZXREYXRhKGw1LCQucGF0aCksVS5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZD0iY29weSI7bGV0IHo9Ry5jdXJyZW50O2lmKHopVS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKHosei5vZmZzZXRXaWR0aC8yLHoub2Zmc2V0SGVpZ2h0LzIpO3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+cSghMCkpfSxWPShVKT0+e2lmKEIoKSxxKCExKSxKWihVLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0KSlRKCk7ZWxzZSBLKCl9O3JldHVybiBYKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJzY3JlZW5zaG90LXRvYXN0IixjbGFzc05hbWU6InctW21pbigzMjBweCxjYWxjKDEwMHZ3LTMycHgpKV0iLG9uTW91c2VFbnRlcjpaLG9uTW91c2VMZWF2ZTpLLGNoaWxkcmVuOlskLnRodW1iJiZYKCJpbWciLHtyZWY6RywiZGF0YS10ZXN0aWQiOiJkcmFnLWltYWdlIixzcmM6JC50aHVtYixhbHQ6IiIsImFyaWEtaGlkZGVuIjohMCxkcmFnZ2FibGU6ITEsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOi05OTk5LGxlZnQ6MCx3aWR0aDo4MCxoZWlnaHQ6ODAsYm9yZGVyUmFkaXVzOjEyLG9iamVjdEZpdDoiY292ZXIiLHBvaW50ZXJFdmVudHM6Im5vbmUifX0pLCQuc3RhdHVzPT09ImVycm9yIj9YKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHB4LTMuNSBweS0yLjUgYmctcGFuZWwgYm9yZGVyIGJvcmRlci13aGl0ZS8xMiByb3VuZGVkLXhsIHRleHQtd2hpdGUvOTAgdGV4dC1bMTJweF0gc2hhZG93LVswXzhweF8yNHB4X3JnYmEoMCwwLDAsMC40NSldIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToic2l6ZS0xLjUgcm91bmRlZC1mdWxsIHNocmluay0wIGJnLVsjZjg3MTcxXSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJzZWxlY3QtdGV4dCIsY2hpbGRyZW46JC5tZXNzYWdlPz8iU2NyZWVuc2hvdCBmYWlsZWQifSldfSk6WCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOkosZGlzYWJsZWQ6JC5zdGF0dXMhPT0ic2F2ZWQiLGRyYWdnYWJsZTokLnN0YXR1cz09PSJzYXZlZCIsb25EcmFnU3RhcnQ6TCxvbkRyYWdFbmQ6ViwiYXJpYS1sYWJlbCI6Ik9wZW4gc2NyZWVuc2hvdCBpbiBGaW5kZXIiLHRpdGxlOiJDbGljayB0byByZXZlYWwgaW4gRmluZGVyIMK3IGRyYWcgdG8gY29weSB0aGUgZmlsZSIsY2xhc3NOYW1lOmBncm91cCBmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIgZ2FwLTMgcGwtMiBwci0zLjUgcHktMiBiZy1wYW5lbCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHJvdW5kZWQteGwgc2hhZG93LVswXzhweF8yNHB4X3JnYmEoMCwwLDAsMC40NSldIHRleHQtbGVmdCBjdXJzb3ItcG9pbnRlciBlbmFibGVkOmhvdmVyOmJnLVsjMmEyYTJjXSBkaXNhYmxlZDpjdXJzb3ItZGVmYXVsdCBbdHJhbnNpdGlvbjpiYWNrZ3JvdW5kXzAuMTVzX2Vhc2VdICR7WT8iaW52aXNpYmxlIjoiIn1gLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6InNpemUtOSByb3VuZGVkLW1kIG92ZXJmbG93LWhpZGRlbiBiZy13aGl0ZS8xMCBzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByaW5nLTEgcmluZy13aGl0ZS8xMCBwb2ludGVyLWV2ZW50cy1ub25lIixjaGlsZHJlbjokLnRodW1iP1goImltZyIse3NyYzokLnRodW1iLGFsdDoiIixjbGFzc05hbWU6InNpemUtZnVsbCBvYmplY3QtY292ZXIiLGRyYWdnYWJsZTohMX0pOlgoInNwYW4iLHtjbGFzc05hbWU6ImJsb2NrIHNpemUtNCByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXdoaXRlLzMwIGJvcmRlci10LXdoaXRlIGFuaW1hdGUtW2dyaWQtc3Bpbl8wLjhzX2xpbmVhcl9pbmZpbml0ZV0ifSl9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgbGVhZGluZy10aWdodCBwb2ludGVyLWV2ZW50cy1ub25lIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTNweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIixjaGlsZHJlbjokLnN0YXR1cz09PSJzYXZpbmciPyJTYXZpbmcgU2NyZWVuc2hvdOKApiI6IlNjcmVlbnNob3QgU2F2ZWQifSksJC5zdGF0dXM9PT0ic2F2ZWQiJiZYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzYwIixjaGlsZHJlbjoiT3BlbiBpbiBGaW5kZXIifSldfSksJC5zdGF0dXM9PT0ic2F2ZWQiJiZYKGIyLHtjbGFzc05hbWU6Im1sLWF1dG8gdGV4dC13aGl0ZS84MCBwb2ludGVyLWV2ZW50cy1ub25lIixzaXplOjE2LHN0cm9rZVdpZHRoOjIuMjV9KV19KV19KX12YXIgeDQ9MzUwMCxqND00MDAwO2Z1bmN0aW9uIFFaKCl7cmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9bOi5dL2csIi0iKS5zbGljZSgwLDIzKX1mdW5jdGlvbiB2NCgkKXtsZXQgSj1UKG51bGwpLFE9VChudWxsKSxaPVQobnVsbCksSz1UKG51bGwpLFk9VChudWxsKSxxPUQoKCk9PntpZihaLmN1cnJlbnQpY2xlYXJUaW1lb3V0KFouY3VycmVudCk7Wi5jdXJyZW50PW51bGwsSy5jdXJyZW50PW51bGx9LFtdKSxHPUQoKGspPT57bGV0IEg9az8/US5jdXJyZW50Pz92b2lkIDA7aWYocSgpLFkuY3VycmVudD1udWxsLGMyLmRpc21pc3MoSCksSD09PXZvaWQgMHx8US5jdXJyZW50PT09U3RyaW5nKEgpKUouY3VycmVudD1udWxsLFEuY3VycmVudD1udWxsfSxbcV0pLE49RCgoKT0+e2xldCBrPUouY3VycmVudDtpZihrPy5wYXRoKUUxKGBvcGVuIC1SICR7TTEoay5wYXRoKX1gKX0sW10pLEI9RCgoayk9PntxKCk7bGV0IEg9TWF0aC5tYXgoMCxrKSxDPVEuY3VycmVudDtZLmN1cnJlbnQ9SCxLLmN1cnJlbnQ9RGF0ZS5ub3coKStILFouY3VycmVudD1zZXRUaW1lb3V0KCgpPT5HKEM/P3ZvaWQgMCksSCl9LFtxLEddKSxMPUQoKCk9PntpZighWi5jdXJyZW50fHxLLmN1cnJlbnQ9PW51bGwpcmV0dXJuO1kuY3VycmVudD1NYXRoLm1heCgwLEsuY3VycmVudC1EYXRlLm5vdygpKSxxKCl9LFtxXSksVj1EKCgpPT57bGV0IGs9WS5jdXJyZW50O2lmKGs9PW51bGwpcmV0dXJuO0Ioayl9LFtCXSksVT1EKChrLEg9MS8wKT0+e2lmKEouY3VycmVudD1rLFEuY3VycmVudD1rLmlkLGMyLmN1c3RvbSgoQyk9PlgoUzQse3RvYXN0Omssb25SZXZlYWw6TixvbkRpc21pc3M6KCk9PkcoQyksb25QYXVzZTpMLG9uUmVzdW1lOlZ9KSx7aWQ6ay5pZCxkdXJhdGlvbjoxLzB9KSxOdW1iZXIuaXNGaW5pdGUoSCkpQihIKTtlbHNlIHEoKSxZLmN1cnJlbnQ9bnVsbH0sW3EsRyxMLFYsTixCXSk7cmV0dXJue2NhcHR1cmU6RChhc3luYygpPT57aWYoISQpcmV0dXJuO2xldCBrPWNyeXB0by5yYW5kb21VVUlEKCk7VSh7aWQ6ayxzdGF0dXM6InNhdmluZyIscGhhc2U6ImluIn0pO2xldCBDPWBGPSIke2AkSE9NRS9EZXNrdG9wL3NlcnZlLXNpbS1zY3JlZW5zaG90LSR7UVooKX0ucG5nYH0iOyB4Y3J1biBzaW1jdGwgaW8gJHtNMSgkKX0gc2NyZWVuc2hvdCAiJEYiICYmIHByaW50ZiAnJXMnICIkRiJgLEY7dHJ5e2xldCBJPWF3YWl0IEUxKEMpO2lmKEY9SS5zdGRvdXQudHJpbSgpLEkuZXhpdENvZGUhPT0wfHwhRil7VSh7aWQ6ayxzdGF0dXM6ImVycm9yIixwaGFzZToiaW4iLG1lc3NhZ2U6SS5zdGRlcnIudHJpbSgpfHwiU2NyZWVuc2hvdCBmYWlsZWQifSxqNCk7cmV0dXJufX1jYXRjaChJKXtVKHtpZDprLHN0YXR1czoiZXJyb3IiLHBoYXNlOiJpbiIsbWVzc2FnZTpJIGluc3RhbmNlb2YgRXJyb3I/SS5tZXNzYWdlOiJTY3JlZW5zaG90IGZhaWxlZCJ9LGo0KTtyZXR1cm59VSh7aWQ6ayxzdGF0dXM6InNhdmVkIixwaGFzZToiaW4iLHBhdGg6Rn0seDQpO2xldCBPPWAvdG1wL3NlcnZlLXNpbS1zY3JlZW5zaG90LXRodW1iLSR7a30ucG5nYDt0cnl7bGV0IHc9KGF3YWl0IEUxKGBzaXBzIC1aIDMyMCAke00xKEYpfSAtLW91dCAke00xKE8pfSA+L2Rldi9udWxsIDI+JjEgJiYgYmFzZTY0IC1pICR7TTEoTyl9OyBybSAtZiAke00xKE8pfWApKS5zdGRvdXQucmVwbGFjZSgvXHMrL2csIiIpO2lmKHcpe2xldCBTPUouY3VycmVudDtpZihTPy5pZD09PWspVSh7Li4uUyx0aHVtYjpgZGF0YTppbWFnZS9wbmc7YmFzZTY0LCR7d31gfSx4NCl9fWNhdGNoe319LFskLFVdKSxyZXZlYWw6TixkaXNtaXNzOkd9fWZ1bmN0aW9uIGg0KHtkZWZhdWx0V2lkdGg6JCx2aWV3cG9ydFdpZHRoOkosdmlld3BvcnRIZWlnaHQ6USxhc3BlY3RSYXRpbzpaLG9uU3RhcnQ6S30pe2xldCBZPVI1KCksW3EsR109QSghMSksW04sQl09QSghMSksW0wsVl09QSghMSksVT1UKG51bGwpLHo9VChbXSksaz1UKG51bGwpLEg9VChudWxsKSxDPVQobnVsbCksRj1UKG51bGwpLE89RCgoKT0+e2lmKHR5cGVvZiB3aW5kb3c+InUiKXJldHVybiAkO2xldCBfPU5hTjt0cnl7bGV0IHA9d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHAzKTtfPXAhPW51bGw/TnVtYmVyKHApOk5hTn1jYXRjaHt9cmV0dXJuIF82KCQsSixRLFosXyl9LFtaLCQsUSxKXSksST1UMSgoKT0+TygpLFtPXSksW3csU109QShJKSxqPVQoSSksJDE9VCgkKSxtPXUzKCQsSixRLFopLGM9TWF0aC5taW4oSzYsbSksbj13Pz8kLG89bjAobiwkLEosUSxaKSxyPUQoKF8pPT57bGV0IHA9ZjUoXyk7ai5jdXJyZW50PXAsUyhwKX0sW10pLFExPUQoKF8pPT57aWYodHlwZW9mIHdpbmRvdz4idSJ8fCQ8PTApcmV0dXJuO2xldCBwPW4wKF8sJCxKLFEsWik7dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShwMyxTdHJpbmcocC8kKSl9Y2F0Y2h7fX0sW1osJCxRLEpdKSxOMT1EKChfKT0+e2lmKEMuY3VycmVudCE9bnVsbCljbGVhclRpbWVvdXQoQy5jdXJyZW50KTtDLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e0MuY3VycmVudD1udWxsLFExKF8pfSxXNil9LFtRMV0pO2IoKCk9PntpZihxfHxOKXJldHVybjtsZXQgXz1qLmN1cnJlbnQ7aWYoXz09bnVsbClyZXR1cm47bGV0IHA9bjAoXywkLEosUSxaKTtpZihwIT09XylyKHApfSxbWiwkLE4scSxRLEoscl0pLGIoKCk9PntpZigkMS5jdXJyZW50PT09JClyZXR1cm47JDEuY3VycmVudD0kLHIoTygpKX0sWyQsTyxyXSksYigoKT0+e2lmKCFxJiYhTilyZXR1cm47bGV0IF89ZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IscD1kb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QsdT1kb2N1bWVudC5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q7cmV0dXJuIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yPSJud3NlLXJlc2l6ZSIsZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0PSJub25lIixkb2N1bWVudC5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q9Im5vbmUiLCgpPT57ZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3I9Xyxkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3Q9cCxkb2N1bWVudC5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q9dX19LFtxLE5dKSxiKCgpPT57aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuO2xldCBfPSgpPT57bGV0IHU9ai5jdXJyZW50O2lmKHU9PW51bGwpcmV0dXJuO2lmKEMuY3VycmVudCE9bnVsbCljbGVhclRpbWVvdXQoQy5jdXJyZW50KSxDLmN1cnJlbnQ9bnVsbDtRMSh1KX0scD0oKT0+e2lmKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJoaWRkZW4iKV8oKX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsXyksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIscCksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLF8pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHApfX0sW1ExXSk7bGV0IGQ9RCgoXyk9PntpZihfPm0pcmV0dXJuIG0rbDMoXy1tLG0pO2lmKF88YylyZXR1cm4gYy1sMyhjLV8sbSk7cmV0dXJuIF99LFttLGNdKSx4PUQoKCk9PntpZihILmN1cnJlbnQpSC5jdXJyZW50KCksSC5jdXJyZW50PW51bGw7QighMSl9LFtdKSxhPUQoKF8pPT57bGV0IHA9cGVyZm9ybWFuY2Uubm93KCksdT16LmN1cnJlbnQ7dS5wdXNoKHt0OnAseDpffSk7d2hpbGUodS5sZW5ndGg+MSYmcC11WzBdLnQ+QTYpdS5zaGlmdCgpfSxbXSksSzE9RCgoXyk9PntsZXQgcD1kKF8pO2lmKGsuY3VycmVudCE9bnVsbCljYW5jZWxBbmltYXRpb25GcmFtZShrLmN1cnJlbnQpO2suY3VycmVudD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntrLmN1cnJlbnQ9bnVsbCxyKHApLGEocCl9KX0sW2QsYSxyXSksTDE9RCgoXyxwLHUpPT57eCgpO2xldCB2PWouY3VycmVudD8/JDtVLmN1cnJlbnQ9e3BvaW50ZXJJZDpfLHN0YXJ0WDpwLHN0YXJ0WTp1LHN0YXJ0V2lkdGg6dn0sei5jdXJyZW50PVt7dDpwZXJmb3JtYW5jZS5ub3coKSx4OnZ9XSxLKCksRyghMCl9LFt4LCQsS10pLEoxPUQoKCk9PntsZXQgXz1VLmN1cnJlbnQ7aWYoVS5jdXJyZW50PW51bGwsay5jdXJyZW50IT1udWxsKWNhbmNlbEFuaW1hdGlvbkZyYW1lKGsuY3VycmVudCksay5jdXJyZW50PW51bGw7aWYoXyYmXy5wb2ludGVySWQ+PTApe2xldCBBMT1GLmN1cnJlbnQ7aWYoQTE/Lmhhc1BvaW50ZXJDYXB0dXJlKF8ucG9pbnRlcklkKSlBMS5yZWxlYXNlUG9pbnRlckNhcHR1cmUoXy5wb2ludGVySWQpfUcoITEpO2xldCBwPWouY3VycmVudD8/JCx1PXc2KHouY3VycmVudCk7ei5jdXJyZW50PVtdO2xldCB2PW4wKHArdSpPNiwkLEosUSxaKSxHMT1mNShQNih2LFskXSxGNikpLHoxPU1hdGguYWJzKHAtRzEpPDAuNSYmTWF0aC5hYnModSk8ODtpZihZfHx6MSl7cihHMSksTjEoRzEpO3JldHVybn1CKCEwKSxILmN1cnJlbnQ9RDYoe2Zyb206cCx0bzpHMSx2ZWxvY2l0eTp1LHN0aWZmbmVzczprNixkYW1waW5nOk02LG9uVXBkYXRlOnIsb25Db21wbGV0ZTooKT0+e0guY3VycmVudD1udWxsLEIoITEpLE4xKEcxKX19KX0sW1osJCxZLE4xLFEsSixyXSk7YigoKT0+e3JldHVybigpPT57aWYoeCgpLGsuY3VycmVudCE9bnVsbCljYW5jZWxBbmltYXRpb25GcmFtZShrLmN1cnJlbnQpO2lmKEMuY3VycmVudCE9bnVsbCl7aWYoY2xlYXJUaW1lb3V0KEMuY3VycmVudCksai5jdXJyZW50IT1udWxsKVExKGouY3VycmVudCl9fX0sW3gsUTFdKSxiKCgpPT57aWYoIXEpcmV0dXJuO2xldCBfPSgpPT5KMSgpLHA9KCk9PntpZihkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIilKMSgpfSx1PSh2KT0+e2xldCBHMT1VLmN1cnJlbnQ7aWYoIUcxfHxHMS5wb2ludGVySWQhPT12LnBvaW50ZXJJZClyZXR1cm47di5wcmV2ZW50RGVmYXVsdCgpLEsxKFI0KEcxLHYuY2xpZW50WCx2LmNsaWVudFksWikpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLF8pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdSx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsXywhMCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLF8sITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHApLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLF8pLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdSwhMCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsXywhMCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLF8sITApLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHApfX0sW1osSjEscSxLMV0pO2xldCBZMT1EKChfKT0+e2xldCBwPVUuY3VycmVudDtpZighcHx8cC5wb2ludGVySWQhPT1fLnBvaW50ZXJJZClyZXR1cm47Xy5wcmV2ZW50RGVmYXVsdCgpLF8uc3RvcFByb3BhZ2F0aW9uKCksSjEoKX0sW0oxXSksQzE9RCgoXyk9PntpZihfLmJ1dHRvbiE9PTApcmV0dXJuO18ucHJldmVudERlZmF1bHQoKSxfLnN0b3BQcm9wYWdhdGlvbigpLF8uY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShfLnBvaW50ZXJJZCksTDEoXy5wb2ludGVySWQsXy5jbGllbnRYLF8uY2xpZW50WSl9LFtMMV0pLHk9RCgoXyk9PntsZXQgcD1VLmN1cnJlbnQ7aWYoIXB8fHAucG9pbnRlcklkIT09Xy5wb2ludGVySWQpcmV0dXJuO18ucHJldmVudERlZmF1bHQoKSxLMShSNChwLF8uY2xpZW50WCxfLmNsaWVudFksWikpfSxbWixLMV0pLGc9RCgoXyk9PntsZXQgcD1fLmtleT09PSJBcnJvd1JpZ2h0Inx8Xy5rZXk9PT0iQXJyb3dEb3duIj8xOl8ua2V5PT09IkFycm93TGVmdCJ8fF8ua2V5PT09IkFycm93VXAiPy0xOjA7aWYocD09PTApcmV0dXJuO18ucHJldmVudERlZmF1bHQoKSx4KCk7bGV0IHU9Xy5zaGlmdEtleT84MDoyNCx2PWY1KG4wKG8rcCp1LCQsSixRLFopKTtyKHYpLE4xKHYpfSxbWix4LG8sJCxOMSxRLEoscl0pO3JldHVybntoYW5kbGVSZWY6Rix3aWR0aDpuLGNvbW1pdHRlZFdpZHRoOm8sbWluV2lkdGg6YyxtYXhXaWR0aDptLGlzUmVzaXppbmc6cSxpc0luZXJ0aWE6TixoYW5kbGVIb3ZlcmVkOkwsaGFuZGxlQWN0aXZlOkx8fHF8fE4sc2V0SGFuZGxlSG92ZXJlZDpWLG9uUG9pbnRlckRvd246QzEsb25Qb2ludGVyTW92ZTp5LG9uUG9pbnRlckVuZDpZMSxvbktleURvd246Z319ZnVuY3Rpb24gUjQoJCxKLFEsWil7bGV0IEs9Si0kLnN0YXJ0WCxZPShRLSQuc3RhcnRZKSpaO3JldHVybiAkLnN0YXJ0V2lkdGgrKE1hdGguYWJzKEspPj1NYXRoLmFicyhZKT9LOlkpfWZ1bmN0aW9uIGc0KCl7bGV0ICQ9VChuZXcgTWFwKSxKPVQobmV3IE1hcCksUT1EKChHKT0+e2xldCBOPUouY3VycmVudC5nZXQoRyk7aWYoTiljbGVhclRpbWVvdXQoTik7Si5jdXJyZW50LmRlbGV0ZShHKX0sW10pLFo9RCgoRyxOPTEvMCk9PntjMi5jdXN0b20oKCk9PlgoajYse3RvYXN0Okd9KSx7aWQ6Ry5pZCxkdXJhdGlvbjpOfSl9LFtdKSxLPUQoKEcsTik9PntsZXQgQj1jcnlwdG8ucmFuZG9tVVVJRCgpLEw9e2lkOkIsbmFtZTpHLGtpbmQ6TixzdGF0dXM6InVwbG9hZGluZyIscHJvZ3Jlc3M6MH07cmV0dXJuICQuY3VycmVudC5zZXQoQixMKSxaKEwpLEJ9LFtaXSksWT1EKChHLE4pPT57bGV0IEI9JC5jdXJyZW50LmdldChHKTtpZighQilyZXR1cm47UShHKTtsZXQgTD17Li4uQiwuLi5OfTtpZigkLmN1cnJlbnQuc2V0KEcsTCksWihMLE4uc3RhdHVzPT09InN1Y2Nlc3MifHxOLnN0YXR1cz09PSJlcnJvciI/MzAwMDoxLzApLE4uc3RhdHVzPT09InN1Y2Nlc3MifHxOLnN0YXR1cz09PSJlcnJvciIpe2xldCBWPXNldFRpbWVvdXQoKCk9PnskLmN1cnJlbnQuZGVsZXRlKEcpLEouY3VycmVudC5kZWxldGUoRyl9LDMwMDApO0ouY3VycmVudC5zZXQoRyxWKX19LFtRLFpdKSxxPUQoKEcsTik9PntsZXQgQj0kLmN1cnJlbnQuZ2V0KEcpO2lmKCFCKXJldHVybjtsZXQgTD17Li4uQixwcm9ncmVzczpOfTskLmN1cnJlbnQuc2V0KEcsTCksWihMKX0sW1pdKTtyZXR1cm57YWRkOkssdXBkYXRlOlksc2V0UHJvZ3Jlc3M6cX19ZnVuY3Rpb24gZjQoJCxKKXtsZXRbUSxaXT1BKFtdKSxbSyxZXT1BKG51bGwpLFtxLEddPUEoITEpLE49RChhc3luYygpPT57aWYoISQpcmV0dXJuO0coITApLFkobnVsbCk7dHJ5e2xldCBCPWF3YWl0IGZldGNoKCQse2NhY2hlOiJuby1zdG9yZSJ9KSxMPWF3YWl0IEIuanNvbigpO2lmKCFCLm9rfHxMLmVycm9yKXRocm93IEVycm9yKEwuZXJyb3J8fCJGYWlsZWQgdG8gbGlzdCBXZWJLaXQgdGFyZ2V0cyIpO2xldCBWPXR5cGVvZiB3aW5kb3c+InUiP251bGw6d2luZG93LmxvY2F0aW9uLFU9TC50YXJnZXRzPz9bXTtaKFY/VS5tYXAoKHopPT5GNCh6LFYpKTpVKX1jYXRjaChCKXtZKEIgaW5zdGFuY2VvZiBFcnJvcj9CLm1lc3NhZ2U6IkZhaWxlZCB0byBzdGFydCBXZWJLaXQgRGV2VG9vbHMiKX1maW5hbGx5e0coITEpfX0sWyRdKTtyZXR1cm4gYigoKT0+e2lmKCFKKXJldHVybjtOKCk7bGV0IEI9c2V0SW50ZXJ2YWwoKCk9PnZvaWQgTigpLDI1MDApO3JldHVybigpPT5jbGVhckludGVydmFsKEIpfSxbSixOXSkse3RhcmdldHM6USxlcnJvcjpLLGxvYWRpbmc6cSxyZWZyZXNoOk59fXZhciBaWj02MCxYWj0xMDAwO2Z1bmN0aW9uIG00KCQsSixRLFo9Wlope2xldFtLLFldPUEobnVsbCksW3EsR109QSgwKSxbTixCXT1BKFopLFtMLFZdPUEoMCk7YigoKT0+e2lmKCFKfHwhJClyZXR1cm47bGV0IEY9ITEsTz0kLmluY2x1ZGVzKCI/Iik/IiYiOiI/IixJPWFzeW5jKCk9Pnt0cnl7bGV0IGo9YXdhaXQoYXdhaXQgZmV0Y2goYCR7JH0ke099bGltaXQ9JHtOfSZvZmZzZXQ9MGAse2NhY2hlOiJuby1zdG9yZSJ9KSkuanNvbigpO2lmKEYpcmV0dXJuO2lmKFkoai5kZXZpY2VzPz9bXSksdHlwZW9mIGoudG90YWw9PT0ibnVtYmVyIilHKGoudG90YWwpfWNhdGNoe2lmKCFGKVkoW10pfX07SSgpO2xldCB3PXNldEludGVydmFsKEksUT83NTA6MzAwMCk7cmV0dXJuKCk9PntGPSEwLGNsZWFySW50ZXJ2YWwodyl9fSxbJCxKLEwsUSxOXSk7bGV0IFU9RCgoKT0+VigoRik9PkYrMSksW10pLHo9RCgoKT0+QigoRik9PkYrWiksW1pdKSxrPUQoKCk9PkIoWFopLFtdKSxIPUQoKCk9PkIoWiksW1pdKSxDPXE+KEs/Lmxlbmd0aD8/MCk7cmV0dXJue2RldmljZXM6Syx0b3RhbDpxLHJlZnJlc2g6VSxsb2FkTW9yZTp6LGxvYWRBbGw6ayxyZXNldFBhZ2U6SCxoYXNNb3JlOkN9fXZhciBwND17bWpwZWdGcHM6NjAsbWpwZWdRdWFsaXR5OjAuNyxtYXhEaW1lbnNpb246MCxoMjY0Qml0cmF0ZTo2MDAwMDAwLGgyNjRGcHM6NjB9LEtaPXt0cmFuc3BvcnQ6Imh0dHAiLGh0dHBDb2RlYzoiYXV0byIsd2ViUnRjQ29kZWM6ImgyNjQiLC4uLnA0fTtmdW5jdGlvbiBZWigkKXtyZXR1cm4gdHlwZW9mICQ9PT0ibnVtYmVyIiYmTnVtYmVyLmlzRmluaXRlKCQpPyQ6bnVsbH1mdW5jdGlvbiB1NCgkLEosUSxaKXtsZXQgSz1ZWigkKTtyZXR1cm4gSz09bnVsbD9KOk1hdGgubWluKFosTWF0aC5tYXgoUSxLKSl9ZnVuY3Rpb24gYTUoJCxKLFEsWil7cmV0dXJuIE1hdGgucm91bmQodTQoJCxKLFEsWikpfWZ1bmN0aW9uIHFaKCQpe2lmKCFBcnJheS5pc0FycmF5KCQpfHwkLmxlbmd0aD4xNilyZXR1cm4gbnVsbDtsZXQgSj1bXTtmb3IobGV0IFEgb2YgJCl7aWYoIVF8fHR5cGVvZiBRIT09Im9iamVjdCIpcmV0dXJuIG51bGw7bGV0IFo9US51cmxzO2lmKCFBcnJheS5pc0FycmF5KFopfHxaLmxlbmd0aD09PTB8fFoubGVuZ3RoPjE2fHwhWi5ldmVyeSgocSk9PnR5cGVvZiBxPT09InN0cmluZyImJnEubGVuZ3RoPD0yMDQ4JiYvXihzdHVufHN0dW5zfHR1cm58dHVybnMpOi9pLnRlc3QocSkpKXJldHVybiBudWxsO2xldHt1c2VybmFtZTpLLGNyZWRlbnRpYWw6WX09UTtpZihLIT09dm9pZCAwJiZ0eXBlb2YgSyE9PSJzdHJpbmciKXJldHVybiBudWxsO2lmKFkhPT12b2lkIDAmJnR5cGVvZiBZIT09InN0cmluZyIpcmV0dXJuIG51bGw7Si5wdXNoKHt1cmxzOlosLi4udHlwZW9mIEs9PT0ic3RyaW5nIj97dXNlcm5hbWU6S306e30sLi4udHlwZW9mIFk9PT0ic3RyaW5nIj97Y3JlZGVudGlhbDpZfTp7fX0pfXJldHVybiBKfWZ1bmN0aW9uIFg4KCQ9e30sSj1LWil7bGV0IFo9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCQsImljZVNlcnZlcnMiKT9xWigkLmljZVNlcnZlcnMpOkouaWNlU2VydmVycyxLPVo9PT1udWxsP0ouaWNlU2VydmVyczpaJiZaLmxlbmd0aD4wP1o6dm9pZCAwO3JldHVybnt0cmFuc3BvcnQ6JC50cmFuc3BvcnQ9PT0iaHR0cCJ8fCQudHJhbnNwb3J0PT09IndlYnJ0YyI/JC50cmFuc3BvcnQ6Si50cmFuc3BvcnQsaHR0cENvZGVjOiQuaHR0cENvZGVjPT09ImF1dG8ifHwkLmh0dHBDb2RlYz09PSJtanBlZyJ8fCQuaHR0cENvZGVjPT09ImgyNjQiPyQuaHR0cENvZGVjOkouaHR0cENvZGVjLHdlYlJ0Y0NvZGVjOiQud2ViUnRjQ29kZWM9PT0idnA4Inx8JC53ZWJSdGNDb2RlYz09PSJ2cDkifHwkLndlYlJ0Y0NvZGVjPT09ImgyNjQiPyQud2ViUnRjQ29kZWM6Si53ZWJSdGNDb2RlYywuLi5LP3tpY2VTZXJ2ZXJzOkt9Ont9LC4uLnMyKCQsSil9fWZ1bmN0aW9uIHMyKCQ9e30sSj1wNCl7cmV0dXJue21qcGVnRnBzOmE1KCQubWpwZWdGcHMsSi5tanBlZ0ZwcywxLDEyMCksbWpwZWdRdWFsaXR5OnU0KCQubWpwZWdRdWFsaXR5LEoubWpwZWdRdWFsaXR5LDAuMDUsMSksbWF4RGltZW5zaW9uOmE1KCQubWF4RGltZW5zaW9uLEoubWF4RGltZW5zaW9uLDAsNDA5NiksaDI2NEJpdHJhdGU6YTUoJC5oMjY0Qml0cmF0ZSxKLmgyNjRCaXRyYXRlLDFlNSw1MDAwMDAwMCksaDI2NEZwczphNSgkLmgyNjRGcHMsSi5oMjY0RnBzLDEsMTIwKX19ZnVuY3Rpb24gdDIoJCl7cmV0dXJue21qcGVnRnBzOiQubWpwZWdGcHMsbWpwZWdRdWFsaXR5OiQubWpwZWdRdWFsaXR5LG1heERpbWVuc2lvbjokLm1heERpbWVuc2lvbixoMjY0Qml0cmF0ZTokLmgyNjRCaXRyYXRlLGgyNjRGcHM6JC5oMjY0RnBzfX1mdW5jdGlvbiBsNCgkKXtpZigkPy50cmFuc3BvcnQ9PT0id2VicnRjIilyZXR1cm4gWDgoe3RyYW5zcG9ydDoid2VicnRjIix3ZWJSdGNDb2RlYzokLmNvZGVjLGljZVNlcnZlcnM6JC5pY2VTZXJ2ZXJzfSk7cmV0dXJuIFg4KHt0cmFuc3BvcnQ6Imh0dHAiLGh0dHBDb2RlYzokPy5jb2RlYz8/ImF1dG8ifSl9ZnVuY3Rpb24gSzgoJCxKKXtyZXR1cm4gWDgoey4uLiQsLi4uSn0sJCl9ZnVuY3Rpb24gZTIoJCxKKXtsZXQgUT10MigkKSxaPXMyKHsuLi5RLC4uLkp9LFEpO2lmKFoubWpwZWdGcHM9PT1RLm1qcGVnRnBzJiZaLm1qcGVnUXVhbGl0eT09PVEubWpwZWdRdWFsaXR5JiZaLm1heERpbWVuc2lvbj09PVEubWF4RGltZW5zaW9uJiZaLmgyNjRCaXRyYXRlPT09US5oMjY0Qml0cmF0ZSYmWi5oMjY0RnBzPT09US5oMjY0RnBzKXJldHVybiAkO3JldHVybnsuLi4kLC4uLlp9fXZhciBjND0ic2VydmUtc2ltOmNvZGVjIixHWj0zMDAwO2Z1bmN0aW9uIGQ0KCQpe2xldCBKPWw0KCQpO2lmKEoudHJhbnNwb3J0IT09Imh0dHAifHxKLmh0dHBDb2RlYyE9PSJhdXRvIilyZXR1cm4gSjt0cnl7bGV0IFE9d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGM0KTtpZihRPT09ImF1dG8ifHxRPT09Im1qcGVnInx8UT09PSJoMjY0IilyZXR1cm4gSzgoSix7aHR0cENvZGVjOlF9KX1jYXRjaHt9cmV0dXJuIEp9ZnVuY3Rpb24gbzQoe2RldmljZTokLGVuZHBvaW50OkosaW5pdGlhbFNldHRpbmdzOlF9KXtsZXRbWixLXT1BKCgpPT5kNChRKSksW1kscV09QSghMSksRz1UKFopLE49VCghMSksQj1UKDApLEw9VChudWxsKSxWPVQobnVsbCk7YigoKT0+eysrQi5jdXJyZW50O2xldCBrPWQ0KFEpO2lmKEwuY3VycmVudD8uYWJvcnQoKSxWLmN1cnJlbnQ/LmFib3J0KCksTC5jdXJyZW50PW51bGwsVi5jdXJyZW50PW51bGwsRy5jdXJyZW50PWssTi5jdXJyZW50PSExLEsoaykscSghMSksIUopcmV0dXJuO2xldCBIPSExLEM9ITEsRj1hc3luYygpPT57aWYoSHx8Ti5jdXJyZW50fHxMLmN1cnJlbnQpcmV0dXJuO2xldCB3PSsrQi5jdXJyZW50LFM9bmV3IEFib3J0Q29udHJvbGxlcjtMLmN1cnJlbnQ9Uzt0cnl7bGV0IGo9YXdhaXQgZmV0Y2goSix7Y2FjaGU6Im5vLXN0b3JlIixzaWduYWw6Uy5zaWduYWx9KTtpZighai5vayl0aHJvdyBFcnJvcihgU3RyZWFtIHNldHRpbmdzIHJlcXVlc3QgZmFpbGVkICgke2ouc3RhdHVzfSlgKTtsZXQgJDE9czIoYXdhaXQgai5qc29uKCksdDIoRy5jdXJyZW50KSk7aWYoIVMuc2lnbmFsLmFib3J0ZWQmJkIuY3VycmVudD09PXcpe2xldCBtPUcuY3VycmVudCxjPWUyKG0sJDEpO2lmKGMhPT1tKUcuY3VycmVudD1jLEsoYyl9Qz0hMX1jYXRjaChqKXtpZighUy5zaWduYWwuYWJvcnRlZCYmIUMpQz0hMCxjb25zb2xlLndhcm4oIkZhaWxlZCB0byBsb2FkIHN0cmVhbSBzZXR0aW5ncyIsail9ZmluYWxseXtpZihMLmN1cnJlbnQ9PT1TKUwuY3VycmVudD1udWxsfX07RigpO2xldCBPPSgpPT57aWYodHlwZW9mIGRvY3VtZW50PiJ1Inx8ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIT09ImhpZGRlbiIpRigpfSxJPXNldEludGVydmFsKE8sR1opO2lmKHR5cGVvZiB3aW5kb3c8InUiKXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsTyk7aWYodHlwZW9mIGRvY3VtZW50PCJ1Iilkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixPKTtyZXR1cm4oKT0+e2lmKEg9ITAsY2xlYXJJbnRlcnZhbChJKSx0eXBlb2Ygd2luZG93PCJ1Iil3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLE8pO2lmKHR5cGVvZiBkb2N1bWVudDwidSIpZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsTyk7TC5jdXJyZW50Py5hYm9ydCgpLFYuY3VycmVudD8uYWJvcnQoKSxMLmN1cnJlbnQ9bnVsbCxWLmN1cnJlbnQ9bnVsbH19LFskLEosUV0pO2xldCBVPUQoKGspPT57aWYoay5odHRwQ29kZWMhPT12b2lkIDApdHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShjNCxrLmh0dHBDb2RlYyl9Y2F0Y2h7fWxldCBIPUs4KEcuY3VycmVudCxrKTtHLmN1cnJlbnQ9SCxLKEgpfSxbXSksej1EKChrKT0+e2lmKCFKfHxOLmN1cnJlbnR8fE9iamVjdC5rZXlzKGspLmxlbmd0aD09PTApcmV0dXJuO2xldCBIPUcuY3VycmVudCxDPWUyKEgsayk7Ry5jdXJyZW50PUMsSyhDKSxMLmN1cnJlbnQ/LmFib3J0KCksTC5jdXJyZW50PW51bGw7bGV0IEY9KytCLmN1cnJlbnQsTz1uZXcgQWJvcnRDb250cm9sbGVyO1YuY3VycmVudD1PLE4uY3VycmVudD0hMCxxKCEwKSxmZXRjaChKLHttZXRob2Q6IlBBVENIIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoayksc2lnbmFsOk8uc2lnbmFsfSkudGhlbihhc3luYyhJKT0+e2lmKCFJLm9rKXRocm93IEVycm9yKGBTdHJlYW0gc2V0dGluZ3MgdXBkYXRlIGZhaWxlZCAoJHtJLnN0YXR1c30pYCk7bGV0IHc9czIoYXdhaXQgSS5qc29uKCksdDIoQykpO2lmKCFPLnNpZ25hbC5hYm9ydGVkJiZCLmN1cnJlbnQ9PT1GKXtsZXQgUz1lMihHLmN1cnJlbnQsdyk7Ry5jdXJyZW50PVMsSyhTKX19KS5jYXRjaCgoSSk9PntpZihPLnNpZ25hbC5hYm9ydGVkKXJldHVybjtpZihjb25zb2xlLndhcm4oIkZhaWxlZCB0byB1cGRhdGUgc3RyZWFtIHNldHRpbmdzIixJKSxCLmN1cnJlbnQ9PT1GKXtsZXQgdz1lMihHLmN1cnJlbnQsdDIoSCkpO0cuY3VycmVudD13LEsodyl9fSkuZmluYWxseSgoKT0+e2lmKFYuY3VycmVudD09PU8pVi5jdXJyZW50PW51bGw7aWYoIU8uc2lnbmFsLmFib3J0ZWQmJkIuY3VycmVudD09PUYpTi5jdXJyZW50PSExLHEoITEpfSl9LFtKXSk7cmV0dXJue3NldHRpbmdzOlosdXBkYXRlUGxheWJhY2s6VSx1cGRhdGVFbmNvZGVyOnoscGVuZGluZzpZLGVuY29kZXJTZXR0aW5nc0F2YWlsYWJsZTohIUp9fXZhciBZOD17c3RyZWFtZWQ6ITEsZmVsbEJhY2s6ITF9O2Z1bmN0aW9uIHI0KCQsSil7c3dpdGNoKEope2Nhc2UiZGVjb2RlZC1mcmFtZSI6cmV0dXJuICQuc3RyZWFtZWQ/JDp7Li4uJCxzdHJlYW1lZDohMH07Y2FzZSJ0aW1lb3V0IjpyZXR1cm4gJC5zdHJlYW1lZHx8JC5mZWxsQmFjaz8kOnsuLi4kLGZlbGxCYWNrOiEwfTtjYXNlImVycm9yIjpyZXR1cm4gJC5mZWxsQmFjaz8kOnsuLi4kLGZlbGxCYWNrOiEwfTtjYXNlInJlc2V0IjpyZXR1cm4gWTh9fXZhciBpND00MDAwO3ZhciBWWj17S2V5QTo0LEtleUI6NSxLZXlDOjYsS2V5RDo3LEtleUU6OCxLZXlGOjksS2V5RzoxMCxLZXlIOjExLEtleUk6MTIsS2V5SjoxMyxLZXlLOjE0LEtleUw6MTUsS2V5TToxNixLZXlOOjE3LEtleU86MTgsS2V5UDoxOSxLZXlROjIwLEtleVI6MjEsS2V5UzoyMixLZXlUOjIzLEtleVU6MjQsS2V5VjoyNSxLZXlXOjI2LEtleVg6MjcsS2V5WToyOCxLZXlaOjI5LERpZ2l0MTozMCxEaWdpdDI6MzEsRGlnaXQzOjMyLERpZ2l0NDozMyxEaWdpdDU6MzQsRGlnaXQ2OjM1LERpZ2l0NzozNixEaWdpdDg6MzcsRGlnaXQ5OjM4LERpZ2l0MDozOSxFbnRlcjo0MCxFc2NhcGU6NDEsQmFja3NwYWNlOjQyLFRhYjo0MyxTcGFjZTo0NCxNaW51czo0NSxFcXVhbDo0NixCcmFja2V0TGVmdDo0NyxCcmFja2V0UmlnaHQ6NDgsQmFja3NsYXNoOjQ5LFNlbWljb2xvbjo1MSxRdW90ZTo1MixCYWNrcXVvdGU6NTMsQ29tbWE6NTQsUGVyaW9kOjU1LFNsYXNoOjU2LENhcHNMb2NrOjU3LEYxOjU4LEYyOjU5LEYzOjYwLEY0OjYxLEY1OjYyLEY2OjYzLEY3OjY0LEY4OjY1LEY5OjY2LEYxMDo2NyxGMTE6NjgsRjEyOjY5LFByaW50U2NyZWVuOjcwLFNjcm9sbExvY2s6NzEsUGF1c2U6NzIsSW5zZXJ0OjczLEhvbWU6NzQsUGFnZVVwOjc1LERlbGV0ZTo3NixFbmQ6NzcsUGFnZURvd246NzgsQXJyb3dSaWdodDo3OSxBcnJvd0xlZnQ6ODAsQXJyb3dEb3duOjgxLEFycm93VXA6ODIsTnVtTG9jazo4MyxOdW1wYWREaXZpZGU6ODQsTnVtcGFkTXVsdGlwbHk6ODUsTnVtcGFkU3VidHJhY3Q6ODYsTnVtcGFkQWRkOjg3LE51bXBhZEVudGVyOjg4LE51bXBhZDE6ODksTnVtcGFkMjo5MCxOdW1wYWQzOjkxLE51bXBhZDQ6OTIsTnVtcGFkNTo5MyxOdW1wYWQ2Ojk0LE51bXBhZDc6OTUsTnVtcGFkODo5NixOdW1wYWQ5Ojk3LE51bXBhZDA6OTgsTnVtcGFkRGVjaW1hbDo5OSxDb250cm9sTGVmdDoyMjQsU2hpZnRMZWZ0OjIyNSxBbHRMZWZ0OjIyNixNZXRhTGVmdDoyMjcsQ29udHJvbFJpZ2h0OjIyOCxTaGlmdFJpZ2h0OjIyOSxBbHRSaWdodDoyMzAsTWV0YVJpZ2h0OjIzMX07ZnVuY3Rpb24gYTQoJCl7cmV0dXJuIFZaWyRdPz9udWxsfXZhciBxOD0zMjAsbjQ9NzYwLEc4PTMwMDtmdW5jdGlvbiBWOCgkLEope2lmKCEkKXJldHVybiBudWxsO2lmKCEkLmRldmljZSlyZXR1cm4gJDtpZighJC5wcm94eUhlbHBlcnMpcmV0dXJuICQ7bGV0IFo9YCR7JC5iYXNlUGF0aD09PSIvIj8iIjooJC5iYXNlUGF0aD8/IiIpLnJlcGxhY2UoL1wvKyQvLCIiKX0vaGVscGVyLyR7ZW5jb2RlVVJJQ29tcG9uZW50KCQuZGV2aWNlKX1gLEs9YCR7Si5wcm90b2NvbH0vLyR7Si5ob3N0fWAsWT1KLnByb3RvY29sPT09Imh0dHBzOiI/IndzczoiOiJ3czoiO3JldHVybnsuLi4kLHVybDpgJHtLfSR7Wn1gLHN0cmVhbVVybDpgJHtLfSR7Wn0vc3RyZWFtLm1qcGVnYCx3c1VybDpgJHtZfS8vJHtKLmhvc3R9JHtafS93c2B9fWZ1bmN0aW9uIHM0KCQsSil7bGV0IFE9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KEopKSxaPW5ldyBVaW50OEFycmF5KDErUS5sZW5ndGgpO3JldHVybiBaWzBdPSQsWi5zZXQoUSwxKSxafWZ1bmN0aW9uIEJaKCQsSixRPTMyKXtsZXQgWj1bLi4uJCxKXTtyZXR1cm4gWi5sZW5ndGg+UT9aLnNsaWNlKFoubGVuZ3RoLVEpOlp9ZnVuY3Rpb24gQjgoJCxKLFE9RGF0ZS5ub3coKSxaPTE1MDApe2xldCBLPUouZmlsdGVyKChZKT0+US1ZLmNyZWF0ZWRBdDw9Wik7aWYoISR8fCQucmVhZHlTdGF0ZSE9PTEpcmV0dXJuIEs7Zm9yKGxldCBZIG9mIEspJC5zZW5kKHM0KFkudGFnLFkucGF5bG9hZCkuYnVmZmVyKTtyZXR1cm5bXX1mdW5jdGlvbiB0NCgkLEosUSxaLEs9RGF0ZS5ub3coKSl7bGV0IFk9QjgoJCxKLEspO2lmKCQ/LnJlYWR5U3RhdGU9PT0xKXJldHVybiAkLnNlbmQoczQoUSxaKS5idWZmZXIpLFk7cmV0dXJuIEJaKFkse3RhZzpRLHBheWxvYWQ6WixjcmVhdGVkQXQ6S30pfXZhciBOWj17aDI2NDpbImgyNjQiLCJ2cDgiLCJ2cDkiXSx2cDk6WyJ2cDkiLCJ2cDgiXSx2cDg6WyJ2cDgiXX07ZnVuY3Rpb24gTFooJCxKKXtsZXQgUT1OWlskXSxaPVEuaW5kZXhPZihKKTtpZihaPT09LTEpcmV0dXJuIFFbMF0/P251bGw7cmV0dXJuIFFbWisxXT8/bnVsbH1mdW5jdGlvbiBlNCgkLEosUSl7aWYoUS5raW5kPT09InBlcm1hbmVudCIpcmV0dXJue3R5cGU6InN3aXRjaC10by1odHRwIn07aWYoUS5jb2RlYyE9PUopcmV0dXJuIG51bGw7bGV0IFo9TFooJCxKKTtyZXR1cm4gWiYmWiE9PUo/e3R5cGU6InJldHJ5LWNvZGVjIixjb2RlYzpafTp7dHlwZToic3dpdGNoLXRvLWh0dHAifX1mdW5jdGlvbiAkNygkKXtyZXR1cm4gJD9gJHskLmRldmljZX06JHskLnBpZH06JHskLnN0cmVhbVVybH06JHskLndzVXJsfToke0pTT04uc3RyaW5naWZ5KCQuc3RyZWFtU2V0dGluZ3M/P251bGwpfWA6IiJ9ZnVuY3Rpb24gelooKXtsZXRbJCxKXT1BKCgpPT5WOChsMih3aW5kb3cuX19TSU1fUFJFVklFV19fKSx3aW5kb3cubG9jYXRpb24pKSxbUSxaXT1BKCExKSxbSyxZXT1BKCgpPT57bGV0IHU9bDIod2luZG93Ll9fU0lNX1BSRVZJRVdfXyk7aWYodSlyZXR1cm4gdS5kZXZpY2U7cmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCJkZXZpY2UiKX0pLFtxLEddPUEoITEpLFtOLEJdPUEoITEpLFtMLFZdPUEoKCk9PntpZih0eXBlb2Ygd2luZG93PiJ1IilyZXR1cm4hMTtyZXR1cm4gd2luZG93LmlubmVyV2lkdGg+PUc4KzUyMH0pLHt3aWR0aDpVLG9uUG9pbnRlckRvd246en09aTUoInNlcnZlLXNpbTpkZXZpY2Utc2lkZWJhci13aWR0aCIsRzgsMjQwLDY0MCwicmlnaHQiKSxbayxIXT1BKG51bGwpLEM9d2luZG93Ll9fU0lNX1BSRVZJRVdfXyxGPUM/LmdyaWRBcGlFbmRwb2ludD8/ZjEoImdyaWQvYXBpIiksTz1DPy5ncmlkU3RhcnRFbmRwb2ludD8/ZjEoImdyaWQvYXBpL3N0YXJ0IiksST1DPy5ncmlkU2h1dGRvd25FbmRwb2ludD8/ZjEoImdyaWQvYXBpL3NodXRkb3duIiksW3csU109QSh7fSksW2osJDFdPUEoe30pLFttLGNdPUEoe30pLG49T2JqZWN0LnZhbHVlcyh3KS5zb21lKEJvb2xlYW4pfHxPYmplY3QudmFsdWVzKGopLnNvbWUoQm9vbGVhbikse2RldmljZXM6byx0b3RhbDpyLHJlZnJlc2g6UTEsbG9hZE1vcmU6TjEsbG9hZEFsbDpkLHJlc2V0UGFnZTp4LGhhc01vcmU6YX09bTQoRiwhMCxuKSxLMT0hIShLJiZvPy5maW5kKCh1KT0+dS5kZXZpY2U9PT1LKT8uaGVscGVyKSxMMT1EKCh1KT0+e1kodSk7dHJ5e2xldCB2PW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO3Yuc2VhcmNoUGFyYW1zLnNldCgiZGV2aWNlIix1KSx3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwiIix2LnRvU3RyaW5nKCkpfWNhdGNoe319LFtdKSxKMT1EKGFzeW5jKHUsdj0yMDAwMCk9PntsZXQgRzE9RGF0ZS5ub3coKSt2O3doaWxlKERhdGUubm93KCk8RzEpe3RyeXtpZigoKGF3YWl0KGF3YWl0IGZldGNoKEYse2NhY2hlOiJuby1zdG9yZSJ9KSkuanNvbigpKS5kZXZpY2VzPz9bXSkuc29tZSgoVzEpPT5XMS5kZXZpY2U9PT11JiZXMS5oZWxwZXIpKXJldHVybiEwfWNhdGNoe31hd2FpdCBuZXcgUHJvbWlzZSgoejEpPT5zZXRUaW1lb3V0KHoxLDQwMCkpfXJldHVybiExfSxbRl0pLFkxPUQoYXN5bmModSk9PntTKCh2KT0+KHsuLi52LFt1XTohMH0pKSxjKCh2KT0+KHsuLi52LFt1XTpudWxsfSkpO3RyeXtsZXQgdj1hd2FpdCBmZXRjaChPLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpKU09OLnN0cmluZ2lmeSh7dWRpZDp1fSl9KSxHMT1hd2FpdCB2Lmpzb24oKS5jYXRjaCgoKT0+KHt9KSk7aWYoIXYub2t8fCFHMS5vayl7YygoejEpPT4oey4uLnoxLFt1XTpHMS5lcnJvcj8/YEhUVFAgJHt2LnN0YXR1c31gfSkpO3JldHVybn1hd2FpdCBKMSh1KX1jYXRjaCh2KXtjKChHMSk9Pih7Li4uRzEsW3VdOnY/Lm1lc3NhZ2U/PyJSZXF1ZXN0IGZhaWxlZCJ9KSl9ZmluYWxseXtTKCh2KT0+KHsuLi52LFt1XTohMX0pKSxRMSgpfX0sW08sSjEsUTFdKSxDMT1EKGFzeW5jKHUpPT57JDEoKHYpPT4oey4uLnYsW3VdOiEwfSkpLGMoKHYpPT4oey4uLnYsW3VdOm51bGx9KSk7dHJ5e2xldCB2PWF3YWl0IGZldGNoKEkse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxib2R5OkpTT04uc3RyaW5naWZ5KHt1ZGlkOnV9KX0pLEcxPWF3YWl0IHYuanNvbigpLmNhdGNoKCgpPT4oe30pKTtpZighdi5va3x8IUcxLm9rKWMoKHoxKT0+KHsuLi56MSxbdV06RzEuZXJyb3I/P2BIVFRQICR7di5zdGF0dXN9YH0pKX1jYXRjaCh2KXtjKChHMSk9Pih7Li4uRzEsW3VdOnY/Lm1lc3NhZ2U/PyJSZXF1ZXN0IGZhaWxlZCJ9KSl9ZmluYWxseXskMSgodik9Pih7Li4udixbdV06ITF9KSksUTEoKX19LFtJLFExXSk7YigoKT0+e2lmKEspcmV0dXJuO2lmKCQ/LmRldmljZSl7WSgkLmRldmljZSk7cmV0dXJufWlmKCFvfHxvLmxlbmd0aD09PTApcmV0dXJuO2xldCB1PW8uZmluZCgodik9PnYuaGVscGVyKT8/by5maW5kKCh2KT0+di5zdGF0ZT09PSJCb290ZWQiKT8/b1swXTtpZih1KVkodS5kZXZpY2UpfSxbSywkPy5kZXZpY2Usb10pLGIoKCk9PntsZXQgdT1gJHtmMSgiYXBpL2V2ZW50cyIpfSR7Sz9gP2RldmljZT0ke2VuY29kZVVSSUNvbXBvbmVudChLKX1gOiIifWAsdj0oejEpPT57SigoQTEpPT57aWYoejE9VjgobDIoejEpLHdpbmRvdy5sb2NhdGlvbiksJDcoQTEpPT09JDcoejEpKXJldHVybiBBMTtpZih6MSl3aW5kb3cuX19TSU1fUFJFVklFV19fPXoxO2Vsc2UgaWYod2luZG93Ll9fU0lNX1BSRVZJRVdfXyl7bGV0e2Jhc2VQYXRoOlcxLGV4ZWNUb2tlbjppMX09d2luZG93Ll9fU0lNX1BSRVZJRVdfXzt3aW5kb3cuX19TSU1fUFJFVklFV19fPXtiYXNlUGF0aDpXMSxleGVjVG9rZW46aTF9fXJldHVybiB6MX0pfSxHMT15MCh1KTtyZXR1cm4gRzEub25tZXNzYWdlPSh6MSk9Pnt0cnl7dihsMihKU09OLnBhcnNlKHoxLmRhdGEpKSl9Y2F0Y2h7fX0sKCk9PkcxLmNsb3NlKCl9LFtLLEsxXSksYigoKT0+e2lmKCEkPy5sb2dzRW5kcG9pbnQpcmV0dXJuO2xldCB1PXkwKCQubG9nc0VuZHBvaW50KSx2PW5ldyBNYXAsRzE9WyIjOGJlOWZkIiwiIzUwZmE3YiIsIiNmZmI4NmMiLCIjZmY3OWM2IiwiI2JkOTNmOSIsIiNmMWZhOGMiLCIjNjI3MmE0IiwiI2ZmNTU1NSIsIiM2OWZmOTQiLCIjZDZhY2ZmIiwiI2ZmZmZhNSIsIiNhNGZmZmYiLCIjZmY2ZTZlIiwiI2NhYTlmYSIsIiM1YWY3OGUiXTtmdW5jdGlvbiB6MShpMSl7bGV0IE8xPXYuZ2V0KGkxKTtpZighTzEpe2xldCBqMT0wO2ZvcihsZXQgXzE9MDtfMTxpMS5sZW5ndGg7XzErKylqMT0oajE8PDUpLWoxK2kxLmNoYXJDb2RlQXQoXzEpfDA7TzE9RzFbTWF0aC5hYnMoajEpJUcxLmxlbmd0aF0sdi5zZXQoaTEsTzEpfXJldHVybiBPMX1sZXQgQTE9IiIsVzE9ITE7cmV0dXJuIHUub25tZXNzYWdlPShpMSk9Pnt0cnl7bGV0IE8xPUpTT04ucGFyc2UoaTEuZGF0YSksajE9TzEucHJvY2Vzc0ltYWdlUGF0aD8uc3BsaXQoIi8iKS5wb3AoKT8/TzEuc2VuZGVySW1hZ2VQYXRoPy5zcGxpdCgiLyIpLnBvcCgpPz8iIixfMT1PMS5zdWJzeXN0ZW0/PyIiLGwxPU8xLmNhdGVnb3J5Pz8iIixVMT1PMS5ldmVudE1lc3NhZ2U/PyIiO2lmKCFVMSlyZXR1cm47aWYoajEhPT1BMSl7aWYoVzEpY29uc29sZS5ncm91cEVuZCgpO2xldCBoMT16MShqMSk7Y29uc29sZS5ncm91cENvbGxhcHNlZChgJWMke2oxfSR7XzE/YCAlYyR7XzF9JHtsMT8iOiIrbDE6IiJ9YDoiIn1gLGBjb2xvcjoke2gxfTtmb250LXdlaWdodDpib2xkYCwuLi5fMT9bImNvbG9yOiM4ODg7Zm9udC13ZWlnaHQ6bm9ybWFsIl06W10pLFcxPSEwLEExPWoxfWxldCBJMT0oTzEubWVzc2FnZVR5cGU/PyIiKS50b0xvd2VyQ2FzZSgpLGQxPV8xJiZqMT09PUExP2AlYyR7bDF8fF8xfSVjIGA6IiIsdDE9ZDE/WyJjb2xvcjojODg4O2ZvbnQtc3R5bGU6aXRhbGljIiwiY29sb3I6aW5oZXJpdCJdOltdO2lmKEkxPT09ImZhdWx0Inx8STE9PT0iZXJyb3IiKWNvbnNvbGUubG9nKGAke2QxfSVjJHtVMX1gLC4uLnQxLCJjb2xvcjojZmY1NTU1Iik7ZWxzZSBpZihJMT09PSJkZWJ1ZyIpY29uc29sZS5sb2coYCR7ZDF9JWMke1UxfWAsLi4udDEsImNvbG9yOiM2MjcyYTQiKTtlbHNlIGNvbnNvbGUubG9nKGAke2QxfSVjJHtVMX1gLC4uLnQxLCJjb2xvcjppbmhlcml0Iil9Y2F0Y2h7fX0sKCk9PntpZihXMSljb25zb2xlLmdyb3VwRW5kKCk7dS5jbG9zZSgpfX0sWyQ/LmxvZ3NFbmRwb2ludF0pO2xldCB5PUs/PyQ/LmRldmljZT8/bnVsbCxnPW8/LmZpbmQoKHUpPT51LmRldmljZT09PXkpPz9udWxsLF89ISEkJiYkLmRldmljZT09PXkscDtpZihfJiYkKXA9WChVWix7Y29uZmlnOiQsZGV2aWNlTmFtZTpnPy5uYW1lPz9udWxsLGRldmljZVJ1bnRpbWU6Zz8ucnVudGltZT8/bnVsbCxjaHJvbWU6Zz8uY2hyb21lPz9udWxsLGF4T3ZlcmxheUVuYWJsZWQ6cSxzZXRBeE92ZXJsYXlFbmFibGVkOkcsZGV2dG9vbHNPcGVuOk4sc2V0RGV2dG9vbHNPcGVuOkIsZ3JpZE9wZW46TCxzZXRHcmlkT3BlbjpWLGdyaWRQYW5lbFdpZHRoOlUsc2VsZWN0ZWREZXZ0b29sc1RhcmdldElkOmssc2V0U2VsZWN0ZWREZXZ0b29sc1RhcmdldElkOkgsc3RyZWFtaW5nOlEsc2V0U3RyZWFtaW5nOlp9KTtlbHNle2xldCB1PUw/VSszNjoyNDtwPVgoImRpdiIse2NsYXNzTmFtZToiaC1zY3JlZW4gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTMgYmctcGFnZSBmb250LXN5c3RlbSBib3gtYm9yZGVyIFt0cmFuc2l0aW9uOnBhZGRpbmdfMC4yNXNfZWFzZV0iLHN0eWxlOntwYWRkaW5nTGVmdDp1LHBhZGRpbmdSaWdodDoyNH0sY2hpbGRyZW46Zz9YKHM5LHtuYW1lOmcubmFtZSxydW50aW1lOmcucnVudGltZSxjaHJvbWU6Zy5jaHJvbWU/P251bGwscGxhY2Vob2xkZXJBc3NldDpnLnBsYWNlaG9sZGVyQXNzZXQ/P251bGwsYnVzeTohIWcuaGVscGVyfHwhIXdbZy5kZXZpY2VdLGJ1c3lMYWJlbDpnLmhlbHBlcj8iQ29ubmVjdGluZ+KApiI6IlN0YXJ0aW5n4oCmIixlcnJvcjptW2cuZGV2aWNlXT8/bnVsbCxvblN0YXJ0OigpPT5ZMShnLmRldmljZSl9KTpYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0zIHRleHQtY2VudGVyIixjaGlsZHJlbjpbWCgiaDEiLHtjbGFzc05hbWU6InRleHQtWzE4cHhdIG0tMCB0ZXh0LXdoaXRlLzkwIixjaGlsZHJlbjoiTm8gc2ltdWxhdG9ycyBhdmFpbGFibGUifSksWCgicCIse2NsYXNzTmFtZToidGV4dC13aGl0ZS81NSB0ZXh0LVsxNHB4XSBtYXgtdy0xMjAiLGNoaWxkcmVuOlsiQ3JlYXRlIGEgc2ltdWxhdG9yIGluIFhjb2RlLCBvciBzdGFydCBvbmUgd2l0aCIsIiAiLFgoImNvZGUiLHtjbGFzc05hbWU6ImJnLVsjMjIyXSBweC0xLjUgcHktMC41IHJvdW5kZWQgdGV4dC1bMTNweF0iLGNoaWxkcmVuOiJidW54IEBleHBvL3NlcnZlLXNpbSAtLWRldGFjaCJ9KSwiLiJdfSldfSl9KX1yZXR1cm4gWChaMSx7Y2hpbGRyZW46W3AsWCh4Nix7fSksWChaNix7b3BlbjpMLG9uQ2xvc2U6KCk9PlYoITEpLHdpZHRoOlUsc2lkZToibGVmdCIsZGV2aWNlczpvLHRvdGFsOnIsaGFzTW9yZTphLG9uTG9hZE1vcmU6TjEsb25Mb2FkQWxsOmQsb25SZXNldFBhZ2U6eCxzZWxlY3RlZFVkaWQ6eSxvblNlbGVjdDpMMSxzdGFydGluZzp3LHNodXR0aW5nRG93bjpqLG9uU2h1dGRvd246QzF9KSxYKHY1LHtwYW5lbFdpZHRoOlUsdmlzaWJsZTpMLG9uUG9pbnRlckRvd246eixhcmlhTGFiZWw6IlJlc2l6ZSBzaW11bGF0b3JzIHNpZGViYXIiLHNpZGU6ImxlZnQifSksWChjOSx7b3BlbjpMLG9uQ2xpY2s6KCk9PlYoITApfSldfSl9ZnVuY3Rpb24gVVooe2NvbmZpZzokLGRldmljZU5hbWU6SixkZXZpY2VSdW50aW1lOlEsY2hyb21lOlosYXhPdmVybGF5RW5hYmxlZDpLLHNldEF4T3ZlcmxheUVuYWJsZWQ6WSxkZXZ0b29sc09wZW46cSxzZXREZXZ0b29sc09wZW46RyxncmlkT3BlbjpOLHNldEdyaWRPcGVuOkIsZ3JpZFBhbmVsV2lkdGg6TCxzZWxlY3RlZERldnRvb2xzVGFyZ2V0SWQ6VixzZXRTZWxlY3RlZERldnRvb2xzVGFyZ2V0SWQ6VSxzdHJlYW1pbmc6eixzZXRTdHJlYW1pbmc6a30pe2IoKCk9Pntkb2N1bWVudC50aXRsZT1KP2BTaW11bGF0b3IgLSAke0p9YDoiU2ltdWxhdG9yIFByZXZpZXcifSxbSl0pO2xldCBIPUkwKEopLEM9ZjQoJC5kZXZ0b29sc0VuZHBvaW50Pz9mMSgiZGV2dG9vbHMiKSxxKTtiKCgpPT57aWYoIXEpcmV0dXJuO2lmKFYmJkMudGFyZ2V0cy5zb21lKChoKT0+aC5pZD09PVYpKXJldHVybjtVKEMudGFyZ2V0cy5sZW5ndGg9PT0xP0MudGFyZ2V0c1swXS5pZDpudWxsKX0sW3EsQy50YXJnZXRzLFYsVV0pLGIoKCk9PntVKG51bGwpfSxbJC5kZXZpY2UsVV0pO2xldCBGPXc0KCksTz1vNCh7ZGV2aWNlOiQuZGV2aWNlLGVuZHBvaW50OiQuc3RyZWFtU2V0dGluZ3NFbmRwb2ludCxpbml0aWFsU2V0dGluZ3M6JC5zdHJlYW1TZXR0aW5nc30pLEk9Ty5zZXR0aW5ncyx3PU8udXBkYXRlUGxheWJhY2ssUz1JLnRyYW5zcG9ydD09PSJ3ZWJydGMiLGo9VChudWxsKSwkMT1TLFttLGNdPUEobnVsbCksbj1JLndlYlJ0Y0NvZGVjLG89bT8/bixyPWI0KHtvZmZlclVybDpTMygkKSxjbG9zZVVybDpoOSgkKSxlbmFibGVkOiQxLGNvZGVjOm8saWNlU2VydmVyczpJLmljZVNlcnZlcnN9KSxbUTEsTjFdPWQwKHI0LFk4KSxbZF09QSgoKT0+bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5nZXQoImNvZGVjIik9PT0ibWpwZWciKSx4PUkuaHR0cENvZGVjPT09Im1qcGVnIixhPSEkMSYmIXgmJkYuc3VwcG9ydGVkJiYhUTEuZmVsbEJhY2smJiFkLEsxPUQ0KGF8fCQxP251bGw6UjkoJCkpO2IoKCk9PntrKCExKSxOMSgicmVzZXQiKSxjKG51bGwpfSxbJC5zdHJlYW1VcmwsayxJLnRyYW5zcG9ydCxJLmh0dHBDb2RlYyxJLndlYlJ0Y0NvZGVjXSksYigoKT0+e2lmKCFTfHwhci5mYWlsdXJlKXJldHVybjtpZihqLmN1cnJlbnQ9PT1yLmZhaWx1cmUuc2Vzc2lvbklkKXJldHVybjtqLmN1cnJlbnQ9ci5mYWlsdXJlLnNlc3Npb25JZDtsZXQgaD1lNChuLG8sci5mYWlsdXJlKTtpZighaClyZXR1cm47aWYoaC50eXBlPT09InN3aXRjaC10by1odHRwIil7dyh7dHJhbnNwb3J0OiJodHRwIn0pO3JldHVybn1jKGguY29kZWMpfSxbbixvLHcsUyxyLmZhaWx1cmVdKSxiKCgpPT57aWYoIWEpcmV0dXJuO2xldCBoPXNldFRpbWVvdXQoKCk9Pk4xKCJ0aW1lb3V0IiksaTQpO3JldHVybigpPT5jbGVhclRpbWVvdXQoaCl9LFthLCQuc3RyZWFtVXJsXSk7bGV0W0wxLEoxXT1BKG51bGwpLFtZMSxDMV09QShudWxsKSx5PVkxLGc9TDE/P3k/P3EyKEgsSiksXz1rNShILGcpLHA9RzIoSCxnKSx1PUY1KGcpLHY9WDIoZyksRzE9dj92LndpZHRoL3YuaGVpZ2h0OjEsejE9ZjAoZyksQTE9ISFaJiYhejEsVzE9QTE/Wi5mcmFtZS53aWR0aC9aLnNjcmVlbi53aWR0aDoxLGkxPXAqVzEsTzE9QTE/Wi5mcmFtZS53aWR0aC9aLmZyYW1lLmhlaWdodDpHMSxqMT1BMT9gJHtaLmZyYW1lLndpZHRofSAvICR7Wi5mcmFtZS5oZWlnaHR9YDp1LF8xPVQobnVsbCksbDE9VChbXSk7YigoKT0+e2xldCBoPSExLGU9bnVsbCxXPW51bGw7bDEuY3VycmVudD1bXTtsZXQgTT0oKT0+e2lmKGh8fGUpcmV0dXJuO2U9c2V0VGltZW91dCgoKT0+e2U9bnVsbCxFKCl9LDEwMDApfSxFPSgpPT57bGV0IFI9bmV3IFdlYlNvY2tldCgkLndzVXJsKTtSLmJpbmFyeVR5cGU9ImFycmF5YnVmZmVyIixXPVIsXzEuY3VycmVudD1SLFIub25vcGVuPSgpPT57bDEuY3VycmVudD1COChSLGwxLmN1cnJlbnQpfSxSLm9ubWVzc2FnZT0odCk9PntpZighKHQuZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm47bGV0IHExPW5ldyBVaW50OEFycmF5KHQuZGF0YSk7aWYocTEubGVuZ3RoPDF8fHExWzBdIT09MTMwKXJldHVybjt0cnl7bGV0IEgxPUpTT04ucGFyc2UobmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHExLnN1YmFycmF5KDEpKSk7aWYoSDEud2lkdGg8PTB8fEgxLmhlaWdodDw9MClyZXR1cm47QzEoKFAxKT0+UDEmJlAxLndpZHRoPT09SDEud2lkdGgmJlAxLmhlaWdodD09PUgxLmhlaWdodCYmUDEub3JpZW50YXRpb249PT1IMS5vcmllbnRhdGlvbj9QMTpIMSl9Y2F0Y2h7fX0sUi5vbmNsb3NlPSgpPT57aWYoXzEuY3VycmVudD09PVIpXzEuY3VycmVudD1udWxsO00oKX0sUi5vbmVycm9yPSgpPT57Ui5jbG9zZSgpfX07cmV0dXJuIEUoKSwoKT0+e2lmKGg9ITAsZSljbGVhclRpbWVvdXQoZSk7aWYoXzEuY3VycmVudD09PVcpXzEuY3VycmVudD1udWxsO1c/LmNsb3NlKCl9fSxbJC53c1VybF0pO2xldCBVMT1EKChoLGUpPT57bDEuY3VycmVudD10NChfMS5jdXJyZW50LGwxLmN1cnJlbnQsaCxlKX0sW10pLEkxPUQoKGgpPT5VMSgzLGgpLFtVMV0pLGQxPUQoKGgpPT5VMSg1LGgpLFtVMV0pLHQxPUQoKGgpPT5VMSg0LHtidXR0b246aH0pLFtVMV0pLGgxPUQoKHtwaGFzZTpoLGJ1dHRvbjplfSk9PntpZihlLnVzYWdlUGFnZT09bnVsbHx8ZS51c2FnZT09bnVsbClyZXR1cm47VTEoNCx7YnV0dG9uOmUubmFtZSxwYWdlOmUudXNhZ2VQYWdlLHVzYWdlOmUudXNhZ2UscGhhc2U6aH0pfSxbVTFdKSxhMT1EKChoKT0+VTEoMTAse2RlbHRhOmh9KSxbVTFdKSwkMD1EKChoKT0+VTEoMTEsaCksW1UxXSksVjA9RCgoaCk9PntKMSgoZSk9PmUmJmUud2lkdGg9PT1oLndpZHRoJiZlLmhlaWdodD09PWguaGVpZ2h0JiZlLm9yaWVudGF0aW9uPT09aC5vcmllbnRhdGlvbj9lOmgpfSxbXSksczE9RCgoaCk9PntVMSg3LHtvcmllbnRhdGlvbjpofSl9LFtVMV0pLHYwPWcub3JpZW50YXRpb24/PyJwb3J0cmFpdCIsbTE9SCE9PSJ3YXRjaCImJkghPT0idmlzaW9uIixxMD1EKChoKT0+e2lmKCFtMSlyZXR1cm47bGV0IGU9KGg9PT0ibGVmdCI/RDI6SDMpW3YwXTtzMShlKX0sW20xLHYwLHMxXSk7YigoKT0+e0oxKG51bGwpLEMxKG51bGwpfSxbJC5zdHJlYW1VcmxdKSxiKCgpPT57bGV0IGg9eTtpZighaClyZXR1cm47SjEoKGUpPT5lJiZlLndpZHRoPT09aC53aWR0aCYmZS5oZWlnaHQ9PT1oLmhlaWdodCYmZS5vcmllbnRhdGlvbj09PWgub3JpZW50YXRpb24/ZTpudWxsKX0sW3kseT8ud2lkdGgseT8uaGVpZ2h0LHk/Lm9yaWVudGF0aW9uXSk7bGV0IEowPUQoKGgsZSk9PntVMSg2LHt0eXBlOmgsdXNhZ2U6ZX0pfSxbVTFdKSxbXzAsYzFdPUEobnVsbCksW24xLFAwXT1BKCgpPT57aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuITE7bGV0IGg9TnVtYmVyKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgic2VydmUtc2ltOnRvb2xzLXBhbmVsLXdpZHRoIikpLGU9TnVtYmVyLmlzRmluaXRlKGgpJiZoPjA/aDpxODtyZXR1cm4gd2luZG93LmlubmVyV2lkdGg+PWUrNDgwfSkse3dpZHRoOnYxLG9uUG9pbnRlckRvd246QzB9PWk1KCJzZXJ2ZS1zaW06dG9vbHMtcGFuZWwtd2lkdGgiLHE4LDI0MCw3MjApLHt3aWR0aDpCMCxvblBvaW50ZXJEb3duOkQxfT1pNSgic2VydmUtc2ltOmRldnRvb2xzLXBhbmVsLXdpZHRoIixuNCw0MjAsMTQwMCksW3kxLFEwXT1BKCgpPT50eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cuaW5uZXJXaWR0aDowKSxbRjAsTjBdPUEoKCk9PnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdy5pbm5lckhlaWdodDowKTtiKCgpPT57bGV0IGg9KCk9PntRMCh3aW5kb3cuaW5uZXJXaWR0aCksTjAod2luZG93LmlubmVySGVpZ2h0KX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGgpLCgpPT53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixoKX0sW10pLGIoKCk9PntsZXQgaD15MCgkLmFwcFN0YXRlRW5kcG9pbnQ/P2YxKCJhcHBzdGF0ZSIpKSxlPW51bGw7cmV0dXJuIGgub25tZXNzYWdlPShXKT0+e3RyeXtsZXQgTT1KU09OLnBhcnNlKFcuZGF0YSk7aWYoZSljbGVhclRpbWVvdXQoZSk7bGV0IEU9TT8uaXNSZWFjdE5hdGl2ZT8wOjYwMDtlPXNldFRpbWVvdXQoKCk9PmMxKE0pLEUpfWNhdGNoe319LCgpPT57aWYoZSljbGVhclRpbWVvdXQoZSk7aC5jbG9zZSgpfX0sWyQuYXBwU3RhdGVFbmRwb2ludF0pO2xldCBrMD1EKGFzeW5jKCk9PntKMCgiZG93biIsMjEpLGF3YWl0IG5ldyBQcm9taXNlKChlKT0+c2V0VGltZW91dChlLDMwKSksSjAoInVwIiwyMSl9LFtKMF0pLFgxPVQobnVsbCksW1AsbF09QSgwKSxbaSxrMV09QSgwKTtiKCgpPT57bGV0IGg9WDEuY3VycmVudDtpZighaHx8dHlwZW9mIFJlc2l6ZU9ic2VydmVyPiJ1IilyZXR1cm47bGV0IGU9bmV3IFJlc2l6ZU9ic2VydmVyKChXKT0+e2xldCBNPVdbMF0/LmNvbnRlbnRSZWN0O2woTT8ud2lkdGg/PzApLGsxKE0/LmhlaWdodD8/MCl9KTtyZXR1cm4gZS5vYnNlcnZlKGgpLCgpPT5lLmRpc2Nvbm5lY3QoKX0sW10pO2xldFtWMSxCMV09QSghMCksZzE9VCghMCk7ZzEuY3VycmVudD1WMTtsZXQgcDE9VChuZXcgU2V0KTtiKCgpPT57bGV0IGg9KGUpPT57bGV0IFc9ISFYMS5jdXJyZW50Py5jb250YWlucyhlLnRhcmdldCk7QjEoVyl9O3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsaCwhMCksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixoLCEwKX0sW10pLGIoKCk9PntpZihWMSlyZXR1cm47bGV0IGg9cDEuY3VycmVudDtpZihoLnNpemU9PT0wKXJldHVybjtmb3IobGV0IGUgb2YgaClVMSg2LHt0eXBlOiJ1cCIsdXNhZ2U6ZX0pO2guY2xlYXIoKX0sW1YxLFUxXSksYigoKT0+e2xldCBoPShNLEUpPT57aWYoIWcxLmN1cnJlbnQpcmV0dXJuO2lmKE0uY29kZT09PSJLZXlIIiYmTS5tZXRhS2V5JiZNLnNoaWZ0S2V5KXtpZihNLnByZXZlbnREZWZhdWx0KCksRT09PSJkb3duIiYmIU0ucmVwZWF0KVUxKDQse2J1dHRvbjoiaG9tZSJ9KTtyZXR1cm59aWYoKE0uY29kZT09PSJBcnJvd0xlZnQifHxNLmNvZGU9PT0iQXJyb3dSaWdodCIpJiZNLm1ldGFLZXkmJiFNLnNoaWZ0S2V5JiYhTS5hbHRLZXkmJiFNLmN0cmxLZXkpe2lmKE0ucHJldmVudERlZmF1bHQoKSxFPT09ImRvd24iJiYhTS5yZXBlYXQpcTAoTS5jb2RlPT09IkFycm93TGVmdCI/ImxlZnQiOiJyaWdodCIpO3JldHVybn1pZihNLmNvZGU9PT0iS2V5QSImJk0ubWV0YUtleSYmTS5zaGlmdEtleSl7aWYoTS5wcmV2ZW50RGVmYXVsdCgpLEU9PT0iZG93biImJiFNLnJlcGVhdClFMShgeGNydW4gc2ltY3RsIHVpICR7JC5kZXZpY2V9IGFwcGVhcmFuY2VgKS50aGVuKCh0KT0+e2xldCBxMT10LnN0ZG91dC50cmltKCk9PT0iZGFyayI/ImxpZ2h0IjoiZGFyayI7cmV0dXJuIEUxKGB4Y3J1biBzaW1jdGwgdWkgJHskLmRldmljZX0gYXBwZWFyYW5jZSAke3ExfWApfSkuY2F0Y2goKCk9Pnt9KTtyZXR1cm59aWYoTS5jb2RlPT09IktleUsiJiZNLm1ldGFLZXkmJiFNLnNoaWZ0S2V5JiYhTS5hbHRLZXkmJiFNLmN0cmxLZXkpe2lmKE0ucHJldmVudERlZmF1bHQoKSxFPT09ImRvd24iJiYhTS5yZXBlYXQpVTEoMTIse30pO3JldHVybn1sZXQgUj1hNChNLmNvZGUpO2lmKFI9PW51bGwpcmV0dXJuO2lmKE0ucHJldmVudERlZmF1bHQoKSxFPT09ImRvd24iKXAxLmN1cnJlbnQuYWRkKFIpO2Vsc2UgcDEuY3VycmVudC5kZWxldGUoUik7VTEoNix7dHlwZTpFLHVzYWdlOlJ9KX0sZT0oTSk9PmgoTSwiZG93biIpLFc9KE0pPT5oKE0sInVwIik7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixlKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLFcpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLGUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsVyl9fSxbVTEsJC5kZXZpY2UscTBdKTtsZXQgeDE9ZzQoKSxNMD12NCgkLmRldmljZSksWjA9XzQoe2V4ZWM6RTEsdWRpZDokLmRldmljZSxlbmFibGVkOnosb25VcGxvYWRTdGFydDp4MS5hZGQsb25VcGxvYWRQcm9ncmVzczp4MS5zZXRQcm9ncmVzcyxvblVwbG9hZEVuZDooaCxlLFcpPT54MS51cGRhdGUoaCx7c3RhdHVzOmU/InN1Y2Nlc3MiOiJlcnJvciIsbWVzc2FnZTpXfSksb25VbnN1cHBvcnRlZDooaCk9PntsZXQgZT14MS5hZGQoaC5uYW1lLCJtZWRpYSIpO3gxLnVwZGF0ZShlLHtzdGF0dXM6ImVycm9yIixtZXNzYWdlOmBVbnN1cHBvcnRlZDogJHtoLnR5cGV8fEYyKGgpfWB9KX0sb25Ib3N0UGF0aERyb3A6TTAuZGlzbWlzc30pLHcxPWg0KHtkZWZhdWx0V2lkdGg6aTEsdmlld3BvcnRXaWR0aDp5MSx2aWV3cG9ydEhlaWdodDpGMCxhc3BlY3RSYXRpbzpPMSxvblN0YXJ0OigpPT5CMSghMSl9KSxMMD0xMixEMD0yNCxTMD1QPjA/TWF0aC5taW4oUCx3MS53aWR0aCk6dzEud2lkdGgsTzA9KGgpPT57aWYoaDw9MClyZXR1cm4gMDtsZXQgZT15MS1MMC1oLE09eTEvMitTMC8yLShlLUQwKTtpZihNPD0wKXJldHVybiAwO2xldCBFPTIqTTtyZXR1cm4gRTw9aCtEMD9FOjB9LCQ1PU8wKHE/QjA6bjE/djE6MCksSjU9TzAoTj9MOjApO3JldHVybiBYKGw5LHtlbmRwb2ludDpLPyQ/LmF4RW5kcG9pbnQ6dm9pZCAwLGNoaWxkcmVuOlgoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC1zY3JlZW4gYmctcGFnZSBweS02IGdhcC0zIGZvbnQtc3lzdGVtIGJveC1ib3JkZXIiLHN0eWxlOntwYWRkaW5nTGVmdDoyNCtKNSxwYWRkaW5nUmlnaHQ6MjQrJDUsdHJhbnNpdGlvbjp3MS5pc1Jlc2l6aW5nfHx3MS5pc0luZXJ0aWE/Im5vbmUiOlk2fSxjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMyBtaW4tdy0wIixzdHlsZTp7d2lkdGg6dzEud2lkdGgsdHJhbnNpdGlvbjp3MS5pc1Jlc2l6aW5nfHx3MS5pc0luZXJ0aWE/ZjM6bTN9LGNoaWxkcmVuOltYKHIxLHtleGVjOkUxLG9uUm90YXRlOnMxLG9yaWVudGF0aW9uOmcub3JpZW50YXRpb24/P251bGwsZGV2aWNlVWRpZDokLmRldmljZSxkZXZpY2VOYW1lOkosZGV2aWNlUnVudGltZTpRLHN0cmVhbWluZzp6LCJhcmlhLWxhYmVsIjoiU2ltdWxhdG9yIHN0YXR1cyIsc3R5bGU6e2FsaWduU2VsZjoiY2VudGVyIix3aWR0aDoiYXV0byIsbWluV2lkdGg6MCxtYXhXaWR0aDoiMTAwJSIsZmxleFdyYXA6Im5vd3JhcCIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsZ2FwOjEwLHBhZGRpbmc6IjZweCAxMHB4Iixib3JkZXJSYWRpdXM6MTh9LGNoaWxkcmVuOltYKHIxLlRpdGxlLHtvbkNsaWNrOigpPT5CKChoKT0+IWgpLCJhcmlhLWxhYmVsIjoiVG9nZ2xlIHNpbXVsYXRvcnMgc2lkZWJhciIsImFyaWEtcHJlc3NlZCI6Tix0aXRsZToiU2ltdWxhdG9ycyIsaGlkZVN1YnRpdGxlOiEwLGhpZGVDaGV2cm9uOiEwLHN0eWxlOnttYXhXaWR0aDoibWluKDIzMHB4LCBjYWxjKDEwMHZ3IC0gMTcwcHgpKSJ9fSksWChSNix7c3RyZWFtaW5nOnp9KV19KSxYKCJkaXYiLHtyZWY6WDEsY2xhc3NOYW1lOiJyZWxhdGl2ZSBtYXgtaC1mdWxsIixzdHlsZTp7d2lkdGg6dzEud2lkdGgsYXNwZWN0UmF0aW86ajEsdHJhbnNpdGlvbjp3MS5pc1Jlc2l6aW5nfHx3MS5pc0luZXJ0aWE/ZjM6bTMsd2lsbENoYW5nZTp3MS5pc1Jlc2l6aW5nfHx3MS5pc0luZXJ0aWE/IndpZHRoIjp2b2lkIDB9LC4uLlowLmRyb3Bab25lUHJvcHMsY2hpbGRyZW46WygoKT0+e2xldCBoPVgoQzUse3VybDokLnVybCx3c1VybDokLndzVXJsLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixib3JkZXI6Im5vbmUiLHBvaW50ZXJFdmVudHM6dzEuaXNSZXNpemluZ3x8dzEuaXNJbmVydGlhPyJub25lIjp2b2lkIDB9LGltYWdlU3R5bGU6e2JvcmRlclJhZGl1czpBMT8wOl8sY29ybmVyU2hhcGU6QTE/dm9pZCAwOiJzdXBlcmVsbGlwc2UoMS4zKSIsLi4uQTE/e306e2JveFNoYWRvdzoiaW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSJ9fSxoaWRlQ29udHJvbHM6ITAsb25TdHJlYW1pbmdDaGFuZ2U6ayxvblN0cmVhbVRvdWNoOkkxLG9uU3RyZWFtTXVsdGlUb3VjaDpkMSxvblN0cmVhbUJ1dHRvbjp0MSxvblN0cmVhbURpZ2l0YWxDcm93bjphMSxvblN0cmVhbVNjcm9sbDokMCxzdHJlYW1Nb2RlOiQxPyJ3ZWJydGMiOmE/ImF2Y2MiOiJtanBlZyIsd2ViUnRjU3RyZWFtOnIuc3RyZWFtLG9uV2ViUnRjRnJhbWU6ci5tYXJrRnJhbWVEZWNvZGVkLHN0cmVhbUVycm9yOiQxP3IuZXJyb3I6bnVsbCxvbkF2Y2NFcnJvcjooKT0+TjEoImVycm9yIiksb25BdmNjRGVjb2RlZEZyYW1lOigpPT5OMSgiZGVjb2RlZC1mcmFtZSIpLHN1YnNjcmliZUZyYW1lOmE/dm9pZCAwOksxLnN1YnNjcmliZUZyYW1lLHN0cmVhbUZyYW1lOmE/dm9pZCAwOksxLmZyYW1lLHN0cmVhbUNvbmZpZzpnLGVuYWJsZURpZ2l0YWxDcm93bjpIPT09IndhdGNoIixvblNjcmVlbkNvbmZpZ0NoYW5nZTpWMH0pLGU9WChaMSx7Y2hpbGRyZW46W2gsSyYmWCh1OSx7fSldfSk7aWYoIUExKXJldHVybiBlO3JldHVybiBYKHg1LHtjaHJvbWU6WixpbnRlcmFjdGl2ZTohMCxvbkJ1dHRvbjpoMSxvbkNyb3duV2hlZWw6KFcsTSk9PntsZXQgRT13MihXLE0saXx8MSk7aWYoRSE9bnVsbClhMShFKX0sc2NyZWVuOmV9KX0pKCksWjAuaXNEcmFnT3ZlciYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIGJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLWFjY2VudCBiZy1bcmdiYSg5OSwxMDIsMjQxLDAuMTgpXSB0ZXh0LWFjY2VudCBwb2ludGVyLWV2ZW50cy1ub25lIHotMjAiLHN0eWxlOntib3JkZXJSYWRpdXM6QTE/dm9pZCAwOl99LGNoaWxkcmVuOltYKGYyLHtzaXplOjMyLHN0cm9rZVdpZHRoOjEuNX0pLFgoInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzEzcHhdIGZvbnQtbWVkaXVtIixjaGlsZHJlbjoiRHJvcCBtZWRpYSBvciAuaXBhIn0pXX0pLFgoSTYse3NpbXVsYXRvclJlc2l6ZTp3MSxkZXZpY2VUeXBlOkgsc3RyZWFtQ29uZmlnOmcsY29udGFpbmVyV2lkdGg6UHx8dzEud2lkdGgsY29udGFpbmVySGVpZ2h0Oml8fChPMT4wP3cxLndpZHRoL08xOjApfSksWCh2Nix7d2lkdGg6UHx8dzEud2lkdGgsaGVpZ2h0Oml8fChPMT4wP3cxLndpZHRoL08xOjApLHZpc2libGU6dzEuaXNSZXNpemluZ3x8dzEuaXNJbmVydGlhfSldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgbWF4LXctZnVsbCIsY2hpbGRyZW46W1gocjEse2V4ZWM6RTEsb25Sb3RhdGU6czEsb3JpZW50YXRpb246Zy5vcmllbnRhdGlvbj8/bnVsbCxkZXZpY2VVZGlkOiQuZGV2aWNlLGRldmljZU5hbWU6SixkZXZpY2VSdW50aW1lOlEsc3RyZWFtaW5nOnosImFyaWEtbGFiZWwiOiJTaW11bGF0b3IgYWN0aW9ucyIsc3R5bGU6e2FsaWduU2VsZjoiY2VudGVyIix3aWR0aDoiYXV0byIsbWluV2lkdGg6MCxtYXhXaWR0aDoiMTAwJSIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIscGFkZGluZzoiNnB4IDhweCIsYm9yZGVyUmFkaXVzOjE4fSxjaGlsZHJlbjpYKHIxLkFjdGlvbnMse2NoaWxkcmVuOltfMD8uaXNSZWFjdE5hdGl2ZSYmWChyMS5CdXR0b24seyJhcmlhLWxhYmVsIjoiUmVsb2FkIFJlYWN0IE5hdGl2ZSBidW5kbGUiLHRpdGxlOiJSZWxvYWQgKFIpIixvbkNsaWNrOigpPT52b2lkIGswKCksY2hpbGRyZW46WChpMCx7fSl9KSxYKHIxLkhvbWVCdXR0b24se3RpdGxlOiJIb21lIn0pLFgocjEuU2NyZWVuc2hvdEJ1dHRvbix7dGl0bGU6IlNjcmVlbnNob3QiLG9uQ2xpY2s6KGgpPT57aC5wcmV2ZW50RGVmYXVsdCgpLE0wLmNhcHR1cmUoKX19KSxYKHIxLlJvdGF0ZUJ1dHRvbix7dGl0bGU6IlJvdGF0ZSBkZXZpY2UifSldfSl9KSxYKHIxLHtleGVjOkUxLG9uUm90YXRlOnMxLG9yaWVudGF0aW9uOmcub3JpZW50YXRpb24/P251bGwsZGV2aWNlVWRpZDokLmRldmljZSxkZXZpY2VOYW1lOkosZGV2aWNlUnVudGltZTpRLHN0cmVhbWluZzp6LCJhcmlhLWxhYmVsIjoiQWNjZXNzaWJpbGl0eSBvdmVybGF5IixzdHlsZTp7d2lkdGg6ImF1dG8iLG1pbldpZHRoOjAsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIscGFkZGluZzo2LGJvcmRlclJhZGl1czoyMn0sY2hpbGRyZW46WChkOSx7b3ZlcmxheUVuYWJsZWQ6SyxzdHJlYW1pbmc6eixvblRvZ2dsZU92ZXJsYXk6KCk9PlkoKGgpPT4haCl9KX0pXX0pXX0pLFgoImRpdiIse2NsYXNzTmFtZTpgZml4ZWQgdG9wLTMgcmlnaHQtMyBmbGV4IGZsZXgtY29sIGdhcC0xIHAtMSBiZy1wYW5lbC1iZyBib3JkZXIgYm9yZGVyLXdoaXRlLzggcm91bmRlZC1bMTBweF0gYmFja2Ryb3AtYmx1ci1bMTJweF0gWy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMTJweCldIFt0cmFuc2l0aW9uOm9wYWNpdHlfMC4xOHNfZWFzZV0gei00MCAke24xfHxxPyJvcGFjaXR5LTAgcG9pbnRlci1ldmVudHMtbm9uZSI6Im9wYWNpdHktMTAwIHBvaW50ZXItZXZlbnRzLWF1dG8ifWAsY2hpbGRyZW46W1goImJ1dHRvbiIse29uQ2xpY2s6KCk9PntHKCExKSxQMCgoaCk9PiFoKX0sY2xhc3NOYW1lOiJ3LVszMHB4XSBoLVszMHB4XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSByb3VuZGVkLW1kIHRleHQtWyM4ZThlOTNdIGN1cnNvci1wb2ludGVyIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjoiT3BlbiB0b29scyBwYW5lbCIsImFyaWEtcHJlc3NlZCI6bjEsdGl0bGU6IlRvb2xzIixjaGlsZHJlbjpYKFIyLHtzaXplOjE4LHN0cm9rZVdpZHRoOjEuNzV9KX0pLFgoImJ1dHRvbiIse29uQ2xpY2s6KCk9PntQMCghMSksRygoaCk9PiFoKX0sY2xhc3NOYW1lOiJ3LVszMHB4XSBoLVszMHB4XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSByb3VuZGVkLW1kIHRleHQtWyM4ZThlOTNdIGN1cnNvci1wb2ludGVyIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjoiT3BlbiBXZWJLaXQgRGV2VG9vbHMiLCJhcmlhLXByZXNzZWQiOnEsdGl0bGU6IldlYktpdCBEZXZUb29scyIsY2hpbGRyZW46WChqMix7c2l6ZToxOCxzdHJva2VXaWR0aDoxLjc1fSl9KV19KSxYKEM0LHtvcGVuOm4xLG9uQ2xvc2U6KCk9PlAwKCExKSx1ZGlkOiQuZGV2aWNlLGRldmljZVJ1bnRpbWU6USxjdXJyZW50QXBwOl8wLGV2ZW50TG9nRXZlbnRzRW5kcG9pbnQ6JC5ldmVudExvZ0V2ZW50c0VuZHBvaW50LG1ldHJpY3NFbmRwb2ludDokLm1ldHJpY3NFbmRwb2ludCxheE92ZXJsYXlFbmFibGVkOkssb25Ub2dnbGVBeE92ZXJsYXk6KCk9PlkoKGgpPT4haCksc3RyZWFtU2V0dGluZ3M6SSxvblN0cmVhbVBsYXliYWNrU2V0dGluZ3NDaGFuZ2U6Ty51cGRhdGVQbGF5YmFjayxvblN0cmVhbUVuY29kZXJTZXR0aW5nc0NoYW5nZTpPLnVwZGF0ZUVuY29kZXIsYWN0aXZlQ29kZWM6JDE/YHdlYnJ0Yy8ke299YDphPyJoMjY0IjoibWpwZWciLGF2Y2NTdXBwb3J0ZWQ6Ri5zdXBwb3J0ZWQsc3RyZWFtU2V0dGluZ3NQZW5kaW5nOk8ucGVuZGluZ3x8IU8uZW5jb2RlclNldHRpbmdzQXZhaWxhYmxlLHdpZHRoOnYxfSksWCh2NSx7cGFuZWxXaWR0aDp2MSx2aXNpYmxlOm4xLG9uUG9pbnRlckRvd246QzAsYXJpYUxhYmVsOiJSZXNpemUgdG9vbHMgcGFuZWwifSksWChXNCx7b3BlbjpxLG9uQ2xvc2U6KCk9PkcoITEpLHVkaWQ6JC5kZXZpY2UsdGFyZ2V0czpDLnRhcmdldHMsc2VsZWN0ZWRUYXJnZXRJZDpWLG9uU2VsZWN0VGFyZ2V0OlUsbG9hZGluZzpDLmxvYWRpbmcsZXJyb3I6Qy5lcnJvcixvblJlZnJlc2g6KCk9PnZvaWQgQy5yZWZyZXNoKCksd2lkdGg6QjB9KSxYKHY1LHtwYW5lbFdpZHRoOkIwLHZpc2libGU6cSxvblBvaW50ZXJEb3duOkQxLGFyaWFMYWJlbDoiUmVzaXplIFdlYktpdCBEZXZUb29scyBwYW5lbCJ9KV19KX0pfXM4KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb290IikpLnJlbmRlcihYKHpaLHt9KSk7Cjwvc2NyaXB0Pgo8L2JvZHk+PC9odG1sPg==","base64").toString("utf-8");return u8}function M1(){return new Promise(($)=>{R0("xcrun",["simctl","list","devices","-j"],{encoding:"utf-8",timeout:3000},(Q,Z)=>{if(Q)return $([]);try{let J=JSON.parse(Z),Y=[];for(let[X,G]of Object.entries(J.devices)){if(!/SimRuntime\.(iOS|watchOS|visionOS|xrOS)-/i.test(X))continue;for(let H of G){if(H.isAvailable===!1)continue;Y.push({...H,runtime:X.replace(/^.*SimRuntime\./,"")})}}$(Y)}catch{$([])}})})}var F1=1610612736;function N1(){try{let $=Number(Q4("sysctl -n hw.memsize",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()),Q=Number(Q4("sysctl -n hw.pagesize",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()),Z=Q4("vm_stat",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}),J=(X)=>{let G=Z.match(X);return G?Number(G[1]):0},Y=J(/Pages free:\s+(\d+)/)+J(/Pages inactive:\s+(\d+)/)+J(/Pages speculative:\s+(\d+)/);return{totalBytes:Number.isFinite($)?$:0,availableBytes:Y*(Number.isFinite(Q)?Q:4096)}}catch{return{totalBytes:0,availableBytes:0}}}function _1(){try{let $=Q4("ps -axo rss=,args=",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:3000,maxBuffer:8388608}),Q={},Z=0,J=/\/Devices\/([0-9A-F-]{36})\//i;for(let Y of $.split(`
76
+ `),Q.resume(),!0}function $1($,Q,Z,J){if(!E$($,Q))return;let Y=new M$(J);Y.binaryType="arraybuffer";let X=!1,G=!1,H=[],V=Buffer.from(Z),W=()=>{if(G)return;G=!0;try{Y.close()}catch{}try{Q.end(l8(8,Buffer.alloc(0)))}catch{}try{Q.destroy()}catch{}},z=(M)=>{if(X&&Y.readyState===M$.OPEN){Y.send(M.opcode===1?M.payload.toString("utf8"):j$(M.payload));return}H.push({opcode:M.opcode,payload:Buffer.from(M.payload)})},B=()=>{try{while(V.length>0){let M=T$(V);if(!M)break;if(V=V.subarray(M.consumed),M.opcode===8){Z4(Q,8,M.payload),W();return}if(M.opcode===9){Z4(Q,10,M.payload);continue}if(M.opcode===1||M.opcode===2)z({opcode:M.opcode,payload:M.payload})}}catch{W()}};Y.onopen=()=>{X=!0;for(let M of H)Y.send(M.opcode===1?M.payload.toString("utf8"):j$(M.payload));H=[]},Y.onmessage=(M)=>{let N=M.data,j=typeof N==="string"?Buffer.from(N):Buffer.from(N);Z4(Q,typeof N==="string"?1:2,j)},Y.onerror=W,Y.onclose=W,Q.on("data",(M)=>{if(typeof M==="string")M=Buffer.from(M);V=Buffer.concat([V,M]),B()}),Q.on("error",W),Q.on("close",W),B()}async function Q1($,Q,Z){if(!P$(Z)){Q.writeHead(400,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify({error:"invalid_device"}));return}if($.method!=="GET"){Q.writeHead(405,{Allow:"GET","Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify({error:"method_not_allowed"}));return}try{let J=await L9(Z);Q.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify(J))}catch(J){Q.writeHead(500,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify({udid:Z,alive:!1,error:J instanceof Error?J.message:String(J)}))}}function Z1($,Q,Z,J,Y){if(!Z)return!1;let X=J.split("?")[0];if(X==="/camera/status")return Q1($,Q,Z),!0;if((X==="/webrtc/offer"||X==="/webrtc/close"||X==="/stream-settings")&&$.method==="OPTIONS")return e4(Q),!0;let G;try{G=H4(Z,Y)}catch{return!1}switch(X){case"/stream.mjpeg":return G.handleMjpeg($,Q),!0;case"/stream.avcc":return G.handleAvcc($,Q),!0;case"/stream-settings":return G.handleStreamSettings($,Q),!0;case"/config":return G.handleConfig($,Q),!0;case"/health":return G.handleHealth($,Q),!0;case"/webrtc/offer":return G.handleWebRTCOffer($,Q),!0;case"/webrtc/close":return G.handleWebRTCClose($,Q),!0;case"/ax":return G.handleAx($,Q),!0;case"/foreground":return G.handleForeground($,Q),!0;default:return!1}}async function J1($,Q,Z,J){if(await new Promise((X)=>R0("xcrun",["simctl","boot",$],()=>X())),!await new Promise((X)=>{R0("xcrun",["simctl","bootstatus",$,"-b"],{timeout:180000},(G)=>X(!G))})){if(!await new Promise((G)=>{R0("xcrun",["simctl","list","devices","-j"],(H,V)=>{if(H)return G(!1);try{let W=JSON.parse(V);G(Object.values(W.devices).flat().some((z)=>z.udid===$&&z.state==="Booted"))}catch{G(!1)}})}))return`Device ${$} failed to reach booted state`}return M9(H9($,Q,Z,"127.0.0.1",J)),null}function Y1($,Q){let Z=[],J=[],Y=Buffer.from(Q),X=!1,G=()=>{if(X)return;X=!0;for(let W of J)W()},H=()=>{G();try{$.end(l8(8,Buffer.alloc(0)))}catch{}try{$.destroy()}catch{}},V=()=>{for(;;){let W;try{W=T$(Y)}catch{H();return}if(!W)return;if(Y=Y.subarray(W.consumed),W.opcode===8)return H();if(W.opcode===9){Z4($,10,W.payload);continue}if(W.opcode===1||W.opcode===2)for(let z of Z)z(W.payload)}};if($.on("data",(W)=>{Y=Buffer.concat([Y,W]),V()}),$.on("close",G),$.on("error",G),Q.length)V();return{send(W){Z4($,2,W)},on(W,z){if(W==="message")Z.push(z);else J.push(z)},close:H}}function X1($,Q,Z,J,Y){if(!J)return!1;let X;try{X=H4(J,Y)}catch{return!1}if(!E$($,Q))return!0;return X.attachHidSocket(Y1(Q,Z)),!0}function h8($,Q,Z,J,Y,X=!1){let G=(Q===""?"":Q)+"/grid/api",H=typeof Y==="string"?Y:void 0,V=typeof Y==="object"?Y:x$(H);return{...$,basePath:Q,logsEndpoint:j0(Q,"/logs",$.device),appStateEndpoint:j0(Q,"/appstate",$.device),eventLogEndpoint:j0(Q,"/api/event-log",$.device),eventLogEventsEndpoint:j0(Q,"/api/event-log/events",$.device),metricsEndpoint:j0(Q,"/metrics",$.device),axEndpoint:j0(Q,"/ax",$.device),cameraStatusEndpoint:`${Q==="/"?"":Q}/helper/${encodeURIComponent($.device)}/camera/status`,devtoolsEndpoint:j0(Q,"/devtools",$.device),streamSettingsEndpoint:a2($.streamUrl),serveSimBin:Z,gridApiEndpoint:G,gridStartEndpoint:G+"/start",gridShutdownEndpoint:G+"/shutdown",gridMemoryEndpoint:G+"/memory",previewEndpoint:Q===""?"/":Q,execToken:J,...H?{codec:H}:{},...V?{streamSettings:V}:{},...X?{proxyHelpers:!0}:{}}}async function G1($){return new Promise((Q)=>{let Z=v2();Z.once("error",()=>Q(!1)),Z.once("listening",()=>Z.close(()=>Q(!0))),Z.listen($,"127.0.0.1")})}async function R$($){let Q=`http://127.0.0.1:${$}`;try{let Z=await fetch(`${Q}/json/version`);if(!Z.ok)return null;if((await Z.json()).Browser!=="Safari/inspect-webkit")return null;return{port:$,cdpUrl:Q,async listTargets(){return(await(await fetch(`${Q}/json/list`)).json()).filter((G)=>G.id.startsWith("sim:")).map((G)=>{let V=G.id.split(":")[1],W=G.description?.match(/\(([^)]+)\)/)?.[1];return{id:G.id,title:G.title||G.url||"Untitled",url:/^https?:/i.test(G.url)?G.url:"about:blank",type:G.type||"page",udid:V,bundleId:W}})}}}catch{return null}}async function K1(){if(A0)try{return await(await A0).listTargets(),A0}catch{A0=null}return A0=(async()=>{let{startCdpServer:$}=await Promise.resolve().then(() => (z$(),W$));for(let Q=T4;Q<T4+50;Q++){if(!await G1(Q)){let Z=await R$(Q);if(Z)return Z;continue}try{let Z=await $({host:"127.0.0.1",port:Q});return{port:Q,cdpUrl:`http://127.0.0.1:${Q}`,async listTargets(){return Z.getTargets().filter((J)=>J.source?.kind==="simulator").map((J)=>{let Y=J.url??"";return{id:J.targetId,title:J.title||J.appName||Y||"Untitled",url:/^https?:/i.test(Y)?Y:"about:blank",type:J.type||"page",appName:J.appName,bundleId:J.bundleId,udid:J.source?.id,inUseByOtherInspector:!!J.inUseByOtherInspector}})},highlightTarget:Z.highlightTarget?.bind(Z),releaseHighlight:Z.releaseHighlight?.bind(Z)}}catch(Z){if(Z?.code==="EADDRINUSE"){let J=await R$(Q);if(J)return J;continue}throw Z}}throw Error(`No available inspect-webkit port found in ${T4}-${T4+49}`)})().catch(($)=>{throw A0=null,$}),A0}function V1($){return Array.isArray($)?$[0]:$}function I$($){return V1($.headers["x-forwarded-proto"])?.split(",",1)[0]?.trim().toLowerCase()}function W1($){return I$($)==="https"?"wss":"ws"}function I4($){return I$($)==="https"?"https":"http"}function z1($,Q,Z,J){let Y=new URL(`${$}/inspector.html`,"http://serve-sim.local");return Y.searchParams.set(Q,`${Z}/page/${encodeURIComponent(J)}`),`${Y.pathname}${Y.search}`}var u8=null;function g8(){try{let $=process.argv;if($[1]&&C$($[1]))return $[1]}catch{}return"serve-sim"}function H1(){if(!u8)u8=Buffer.from("PCFkb2N0eXBlIGh0bWw+CjxodG1sPjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj4KPHRpdGxlPlNpbXVsYXRvciBQcmV2aWV3PC90aXRsZT4KPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFVQUVCQUFBQUVBSUFBNEJnQUFWZ0FBQUNBZ0FBQUJBQ0FBUEFvQUFJNEdBQUF3TUFBQUFRQWdBS0VQQUFES0VBQUFnSUFBQUFFQUlBQ2NPQUFBYXlBQUFBQUFBQUFCQUNBQS9wb0FBQWRaQUFDSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUFRb0FNQUJBQUFBQUVBQUFBUUFBQUFBT2JZeVZNQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUFvSkpSRUZVT0JHbFVzOXJFMEVVL21abWs5MU5paVd4MHRvcVZSRHhvQ0NtSUhnVVdpaWV2UFRrU2NHVENJSUhFUS8xRC9BaWluK0NKdzhxZUZERVMrMUZnZ0VWV3l5MDBDYllObW1iNXNkbXM3c3pmck90cGZjK2RuYmY3SHZ2ZTkvN1pvQWptamhjYndEMWJIZTNVRzA2N2tZdkVBR0RXMTB1T2x1ZWIzUWNoN1dKWS9YRE5RY0FkNVo2NTc1MW5PZk5VSlFTcmQxWUE0WlJUZFNFdnJhWlVvWUNwdXlZK1A3bU5XL0pBcVVBNXN1c2M4bC85R0ZGdUpNNk1QeHBZRmdvNUY1QzZqUFRScVRIMVEwL05UZmZUV05tSm5Fc3l0UGlyV0tyTGt2OVVHT2lZSEJqUkNLeDg2UkZUS0NmSWRqbkRZMjVob0FqWkduWXVYSjhIZGhJQVdvdDRTVmRPQ01zbUM0S1hQVU5hcDBFemI2QXNCeEp3WFVraGpnS3V1U2g0S2kyOExoREN0Q2pTSjFkNE1GRmdTZm5iUVV3VjR2d2FqbUJiMXNUd0ZFSzFSYjlEdU1xVFVsZktVRFE0Nnc5ZHJFZGFGYkFJVTlpY2xTZzZOdHNnNGdxanUwQXl3Mmd6WHpFTm5PZndmWTJ2YTVBMUdlRHlLVEtEeWlEVTVrRWl0MnRpRW9LVEExTHhLSEV5N0pCUWZ1b0hRYXc2b2NjcGRIUkZFeGd2YVh4ZlMyQ2w3RWtMU2hucHlBNnpNTHRhM2dwOS84YWtBSGxRa0lHOVRibmxScTFIWU9mVmY1WDdNcVI4bVJqcmRyV2tJSEE2QW1nekgySzArMTNRektPRjFZTnlqbnlaY2NmYXhxVkZRZDFKc2QyL2tGN2ZCcXJUWWxjRnZGQTBBZ3RZQW93UHYrbThhZjBzUEoxTVg5OS9oYzdFU05Lc2xEc3pnZVMreW9QM2ZCcUtsY2luM1FxTjBkLzExOFRZTy9NNkp5NXUzZ2g5c2RlUUdRdUcyTmNLNXk5QTVRai9UcEVVWTRNZlJWVnhnYzI3NzEvZkhiQk1qZ0FzQnVhT0gzNzQwa0Izek1KYnhITmRZRkJya0krYTNKZTBIczdPL1dYZ2YwRHR4bEh0SDg0aWhRSmZTYXpqUUFBQUFCSlJVNUVya0pnZ29sUVRrY05DaG9LQUFBQURVbElSRklBQUFBZ0FBQUFJQWdHQUFBQWMzcDY5QUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZBQUFBZ09nQUFIVXdBQURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBSGhsV0VsbVRVMEFLZ0FBQUFnQUJBRWFBQVVBQUFBQkFBQUFQZ0ViQUFVQUFBQUJBQUFBUmdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFUZ0FBQUFBQUFBQ1FBQUFBQVFBQUFKQUFBQUFCQUFPZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBQ0NnQXdBRUFBQUFBUUFBQUNBQUFBQUFmZ3ZhVWdBQUFBbHdTRmx6QUFBV0pRQUFGaVVCU1ZJazhBQUFBcHhwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNldGSmxjMjlzZFhScGIyNCtNVFEwUEM5MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0eE5EUThMM1JwWm1ZNldWSmxjMjlzZFhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGpJOEwzUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0eU5UWThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtNalUyUEM5bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNHhQQzlsZUdsbU9rTnZiRzl5VTNCaFkyVStDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhSaFBncnAvc2x4QUFBR2hrbEVRVlJZQ2UxV3pZOFVSUlIvVlYwOTNiUExmbVVYa0JESTdvVUVSU1ZySUFvbTNreU1GeEtQbmpRbXhJTlhUTlNMQ1RHR2kvNEZHaE1UalViQ3djQkJFMDFBQ0pKZEVrRUlBbUVGQVlGZGxtVm1kcVkvcXN2ZnIyYUc2VmtXcm5yd0pkWFZYZjNxdmQvN3JCTDVuLzVsRDZoSDZYZUgzNGtPN056LzdKKzE0TWtrTUJPdFhFVlpManJIaHJ3UVNUQUtMWkppWGs0eFk3MkZueTE4NXdxL2pFdXlMSjgzeXA1YlAvdjE2Wm05ZTdQVmRLMEs0T1ByQzd1T0xvOGN1RnhUTDlSRmF4ZEFxSVZDMXhiaE9yUEdPbDh0RkhQdURnV3BBZmRBcGJKRllZdzdVY21XOXQzWU5YNThKWWlIQU95ZnU3WHJjR1BpK3pNMVBXWmJWclJ5WW93U2E1MTBGVk1JTndhQjhrb0wvQ3RURzRDU1BPZTZFaFVGWXFSWXJOcDdyMTdmUFg2aXpBc245dWo0OFcrcXgycWpuL3kycE1lS0p2eE5qWEFwaDFzeENueHpjTDM3WHA1Ny9FNG9LeTMwV0t0WTgrbms1ei9GUFkwQ1lDVTZNanc5UFZjek8yemRDb3p6NURFQVIwQXNaUmZncjBlUGRkZU5UVWVXeGw0UERLSGh1eWZFMElabVI3cDJhaHJmRDBMUkIrQjJNdkpVM1dxbEVUenVnM0V5Q0k0M3BnSlpXMEdzb2F4TWREVnBCUzRQL2o1eTVvdUx1ZHhwQWJ6blF3aE5xS3dNYnNPVzFRRWtFa3dnNUZLQlpPNWh0bThjVURLOVJvbEdtaGY4U2VMa2hmS0JqODdFWDN6bnA0NlVURldWTERTZGhCMDNjREk2bVBCOG5VZWZCNUxNUlRrUUYwazc0UnJJNGlZc24yOWlEUW1KaFBiV2hqQ0pTbFRIQlc2RkN6UTBtVEFRQ3psRkM2T3JCVEd6cVlzZUNjQW15RHRhbWlvWlFORGYzNmJsdVhFbG13ZGhwNFZLcCtWR3M1Q2pONEVNTmFpN0FPaUZMZ2lzYWEwbFJQd3RLeC9ERllTTEdhVXAyWU9zOEd0ZGJQNGp4eVp1eU9DRkZ6Y3AyYmVWTzdyVUxwZ3RJNEdjdXRHU0t6V1J5TFQvdHozUUNRL1kwVGtrcXNCeXlGSWNUQ2FRZ2piZnlkcWYvdGtQQU5ZckQ4SUp3dTZKWWt2R2VkZmZiMXE1ZGs5SlhFRWY4TVo3cnZZR2NMQUpEY1RPTnlqS1V4MEJCQ09VWDZLSEFEZ3dPVEFWSFVZbVlqZkdqQzB6T29TYnA0WUQyWXhSRGZrTkpSZ1d2QWxLcFo0cHVZY21WRUY1SnVqTkJvM0kyME9aandVQUFheDM0eEJIV2daKzlucGZqNUJBaDdQOXZyWWxGcVZEcVJpRUJkYVJyMHhNVHFiTUs1TmF2anlYeTZHTERsN1JYbVpBZVNYcTgwREtFTUFEUGs2bzR4U1NVeUNtQjJrNXJTUTFtNW5VWUtHQjBCNkJpVWpBUkFBQnZEV0VaSHo3NlJCblFpYUhMcUFER0NQbWNRQmFLTGNjSUh6NUFFZ0NFQzBvWWd4cExFUEFwcmVFSEZoTTRQcE9FaEtFMTkxQlF3RGtSZW5BWTRIc1hxL2x5TytaV0NSMzNER2l3OXJmaXJNVkh1RHgyc3djV2k3aUNkZnpZS0psTmRUMjNXV3NoVlJib2c0S2YwUUJSQUcwRG51Y0NtVVFNVjJHVVRINlNwbjZRd0NFTklWaEFIaHBZVjVHSENqUUFvQkRnMWRJZ29WNklUZFJobkVGYnVsYTVMSDA1d09UVXBFRmZpOGdCMmtqbGNjQmFBRUFlbzNQVkFMZ1JhTU9hMkdMWklCcWVRT0JSYmRyVHY1YUxDU09BQWdhWXJpSDNiR1pXa2t6NnpGMW9SakVqaTI4VmtkcGpnQkEyWHk4OTNrQTVWY3d5d01vWi9Ob0FuVUQ3WlE1a0VCQmhud2d3SVdHa3IrWGxBd1BCakkrRk1yY2dwVmJPSDIyYlF4eFlBV3lXSWNndUI5UmtBMWpSazVmemFTQUM1bUFsUlZIWng4QVpWM0taQXRRaGdWQXBMaGJKYWhwRnFCR2ZjTTRDYkREd0pjREZXUTAwSjY4bE1rZmQranFRSzdNRjdKOW84akVtb3Evd0xCSXpsN0w1ZHgxSllNUitCR21XTEhaOTZnUFFOWklGM0ljRlJxSk4zT3BrRk9iUkVaeGZTZ0FpRVJ3cDY4bTh0MnZLZTk5MGtTWHltQnhCZVdtd0pQZzVEdDJvWkNoS0lkQ1ZFc2psM3JLRUJsVUZnV3d4TzI4RjlaNTlBR1F4dng1SmVza3dPRnhGeTcrOEdDS294U1hFNWhpa1ZIc2lHZ0JLSzBCOUFERVBkU0MyNXEzbG9IbkdSbXBRTmhQVVBwWUQzQ280UWRjWDBCbWpNUWFjcmZPbHdIQXBoNDF6aHljTVhsckZvZXBCMkVrUkNoaW5HWVJSZ3doVmFtYUt0eklob0phNzdaV3psRFlIVnpuL3dEdHNIMjJJSFRZc3pacXpZN09INXp0YVdSd1M3UTg5M002dm5YUFpSMnQyNFBhalhnRkFuNWYrN1FDeWV5SDd6cDQ1M0hNTlY2L3V2ODRrOWlNZUo0NHRuVVR5dWJSN1A1a2NPYXR6ejU0L1VLYm8vMmsvSWRvNnMxZlhpNUduL2tJaFRhTkM3NEtFU2hleTltU3k4UlRqd0o4dldObTF2T2J0YzhtU1dDeHp0MjY0V1RtQ1RuNzNsZnZQdjlEZVQvZlZ3WEFINk9UMjBlSFhqcXdVOFVidG9hVjZnVEtDeFZFMFQzU0FNYkVSQ3BJekZNUjMreE5KblFGY2ljMXJqay9ZRytmVjhmMm5mejJ4NW1sM3M3LzMvNURIdmdIYWtRU1dLMGpJVXdBQUFBQVNVVk9SSzVDWUlLSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQU1BQUFBREFJQmdBQUFGY0MrWWNBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUF3b0FNQUJBQUFBQUVBQUFBd0FBQUFBQW02MUswQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUMrdEpSRUZVYUFYdFdWMklIV2NaZnIvNVBidG5mMDIyS1UzU2xqYjlTUk1DcFdCU1c5QkFiU0V0MUp2Y0ZoUzhLSUpDUVJTdDRJVUI5Y0tmNG9XVW9ONUpJc1ZDSU1YRzJpYUlwaWxwU2tvYTA2aHBaZFBkVFRiWjdPNDVlMmJtekkvUDg4NlozZGt6czBrS3hSdnpuWjJaYjc2ZjkzdWY5L2Y3WmtWdWxWc1MrUCtXZ1BtMDhETVJJd2YzdWxPUFArY3NMSXpiMTJ6SExNNHZtcmtTSWRhWDMxRXAzb3MyZmNmTkdSck9yblhqYk1pYVMrVFFvZTdKbDEvdWxzamNWUFdtQUV4UC82bDV3SC8waVU5Q2IvZHNhTGEyWXVzMnNhMkJvQ3RPa29vRlVCTGp5bEJKV2NjelJzWFllUjNqSkVFYnIyN3Z3anl0NHpYMVBZbURJTzJJbFY2eVRIYld5YUkzbzdOLy8vUE1jMCsxYjRUaWhnQitkZW5xbmxQUjZJL2VYN0Flbm81RVdpR1lTa1JjVHlRTXJrL2VjZkwrbU9oUTFsck1iNEFXYUJzckIyMWpvR1BTVTE1My9zWEpYWjg3bk0rdXY2OUZVMGYvZE9yYTgyKzJSMzV4L0lyeGdrNHNvQzhHTXpqSjk0MkVJZVIzbmVJNE9mbVlLcmxPcWFObGZFZGNxS0tSdEw5MWNlZndyOWVhVHA1cXk4OC9tbnI2TDYyUlh4NmRFcThMNXNtTDFXTytkc0puM0ppRnNVUWQ4UUtyK2RLbW81ZjJyRVcrRnNEQkl3ZEhUeWZyZm54ODFyaUc5Z0lCWnJEWlQzT2xuM0o4TFcyc0hYV05HN2xqUDlueTB1R1JPaEMxQVA2MStRdFBubGx5dHdldFdBd1lVYy9zZnhMWFozalZya0VoTE1VU0czZDc1NzRkVDlVQjZMblo2cTdMMXZEdTZTVVJHd1JNamZreXdsaVk2VU0xakR5MUJlYm05UG9zVldIdEtQVXBOelhTUVhpaTh4bzZXVjlKS0NodmVEZWEvOURYSlJVQWU4SDN0Y2g5c0EwQUt2MitHVEU0M2psaHlkTjMyc0pmdWhZQXpDdDRXUk5rYWN6eHkwWmUrMDlNcUJVUUdTSlVJdDRENkVKZ1JyVlVLZ0MyN2QwMmNMWnJKbUxFYnF1UE94Skh4Sk05bXl4NWdER2VraWtSNjY4V3NyelJHQWFINWpwTFRrNkpUSGN5Y2NobXVUQzlHVE94WWNlT3hzenAwNnR5UXdXQWJOdmxHY2RxZVBRT1o3V0xLQUJ0TXJJRXFTQ0pxZ25oWGw1TzY0YkJ0b1RnZW1NY0lHQ1NhMkk5RHh5NXRLVnlBU0RmTmdPeS9URlBiZ1RBODI2emc0NDRJVTJJNmJKVXVuaE5RQ3pvV3RMS2pBSkllbU80SkNXNVV2QlN2Q3UrS2tpT05aYWxERE9sUkFHaUR0Yk43TldDRTl1bXp6bjIwSVorM1ZSOUlISjlrekJuTVh2Q3VZclNoVGx0SEJDWjhETVpSYk9IZHd1eGo3OE1SdDdHK0NXWWxLdkpndk95WlZ0bWYxNktKOTlVUndDUUFVQW1BZDlwM1dyaEsrdm04ekNhM1pibTBxSkpueFVUaXFMSU1DYlRnZFdKc1NhWi8rNTJTNzV4dndVMW0xSkM2MDNIbUVXRXBsY3ZoUExoUWlZK2paZ3I5a0tZOHI4TW9yZSs5b0VXQUhCNFFKNFQzR0JMeW40WmcvWXQ2L1A2QU9naEthV2dHZ0E5TUg5WFUrU0ZyYlkwS3dyczBjSUM0M0NheHpZNGNtSnFTUm8rUkFVcktFSWlOZERQUDJjU0lNYzUwRUFNdTFlaDZiNkptaW9oS0N1dXQyVHhxR2lBSFJtSVVKMGt5SXc2aWdXOEVyMWljdi9UaC9rc0JyRUVxWXQ5RE5IbUs2c0RvMXJtZytRSWtDYWtDblBSZ0xWNHFTbWhXaTRNeWVYNVJWOHRBQ1lPRFF1UVBqV3RhYjQzZzJ1VXBaa3pna1hSemh3eDMwbkZCV29MRXFVeGNHeXVnZFhMa3lFTE54dmo2QU1OZEd2WVZoL2dZcVh4Sk5MbjF4ekJVZ0hRaGczQmlaZWx3ZTBDSFVzWlp4VzBGSURlY2luU2J5bHZadWlyN1V6R0lOVjFycEVSN0ZnYjZHQlk3RzFNbFMwR3JnaUVPcURiUmdadVJTbk9CcGJ1Ym5WdFNxT3ZHUEswS2dQa0F5b0EyTXdFcGRHQVhHczlVd0Nrd2NWWG9nb0FLQkJJRWhJYWdlMC8vOGlRM0x1dUllTURDSTlvQSs5YXlqeFJ0cndvRFBBdWkxRW1NemhickljZi9mRmNMUFB3YUI4NWdWclNRcUVWOVY1VDhhZ0FJRWhLazR2RFFuVWxGNTRHYTFJSmE5aFhhbVFoai8xcVpxZ1BRZW9QalhKdUpsMHd4ZE1YaTVwUVhsVlR5Mjg1ZlI1aVJvQnlmRmprL29jOWVmSWVSMTQ2RWN2SkdaaVZabE5NeEJnUFROV2RueW9BcUNhZW9Bb256aldRUzR2Q0xqUkFnYWhRUUJ4L0t0RVVuWE90U1B5R0JZMVFER3d2VU9DbGtDS2JVS2VBMUpFaGFndDJTSi9aQkthL3M4dVRIeDRMNWV4c0lnMFhkUERIYURXRWFUTzR5cVVDZ0JxSUFEVU9RUnpxamFIbkJLSWs0MVE1UXl5QmNMazhaeG5WRG5taWxoYVpUV0Z3bWt6Sk1EdldLajBRWko1QTFPbEJtWG5rMlh0c09UTVp3RmNBem5iUVdsOXFBWlExb0NHdHh6eWpVMG9VWkI1M01rbVFCTUxtR0FoYUFSeVNBQXF2TGRaVklHVTB5bjB1Q0FMUUdvVkFoa1UyRDl0eUczYU9sMEdQOUhFRUZ3LzVxTDlVQU5DRUdBa014WWxMa3dzMWdhdXJBRWdpQjdDODN5Y0FiRHM0cG8xTlhnd2ZzT244MXkwRVE4bm4yaVJOMWJBQ1FEdWNlQnhSYkhvUk9RaGhsb3pTaFBwTEJVQUxJN2lWTGlTdlR6QkRFNG9BakptWlRtdmpscHNTR2NBRk1VVVl0d2lKUmVpd25WU2xtaSs0N0FsOTY5Tm9PSnV5eWdHd2hTYmxJekh3UUpYeGd3RG9Ncy9kRkFENmdNWmlTaEFFaW5CSzZlS2NyU2FVSWJQWldJVCt0YnhOQUIvc24yc2prV0d3bzJFUWkwUEVPWXVnMVN1cm8xSU9qc0tnMGptWSs2TWhQRHNRaGtteENOYUdFbXBMUlFNYWhYaUFLQUdnR1hFckhkS1pxV2Y4V1doTUVQNHkyRG9YWm1URkxrS3VJSkY1a0pwRERaQjVjcC9mOUVGR1dUSms2Nkt1N3lTS1loQlhzWHVXRENCbUZ5QU1HQSt0Z09iYXJGRkJCVURIOGJJTU1aeE1FM24reEdZTFJDaGhQWjlpWlRxeFJpaHd6NlNUd2FRSVlCNzdlWmNMZ2pKTkFiYUZmWkVsNjRZY0RZVUVlM1V4aGpCQVFCSGtwb2czQlVxOFk4T1dmRHdiSXlTTERBNWlKZENqckhSTTM2MEN3QVFoTE1Ud3B3QUtFQVFRUUFPTVFqUUJMa1F6b21uUkx5QlBaV294dE1UQlhBZVowRUk0V1Qvc3lOaWdrYitkRCtRQ21OcXl3Wk5kOS9weXRXWExwWGtnNWdJS0JCeUN4UUY4MEJxRWJiNzZiZ3NIUW9DR2FnMHVLRFJ6YXI2a1ZRQjBybDVNUnh6a01tb0FKd2h1ZVQzRVpmVUJTRTIzMmoycnBvQUpyQXRRdEt3WWpGUHBTZVlpSzd0eSs1Z0RqY1J5NEoydXpDNVp5S3dEOHU1RmtjbHJzWHp4UGx2dVd1L0p6SHdxN1pBT2oxMHZwRDB4Yk9USW1Vam1PcDZNREZCcjRBRW0xWEFsSG5FdVliWFZwUUlnbkh3N0NscHBFSElvUWcrbE8zT0Y1dUZBUXBRNHFCWDJtZzlCRzA1VjhJVzVWaXJETGlUWWRLU0RrSFQwZzY1OE9FTTdSRlJCT3o3d2FEaThkQzJWQThkRHVYZEM1SUhiSFprWXNtR2FxVnhaN01vYjcwY3kyN1prY01DVmJrQk5BeHdFbUlacHNIRHFPSUwwNmxJQk1IdnVYRENjSnJQd0lmMXd4Uno0eVpWVTlyOFZ5ak03T0J5eW9zZFNaTFJLNk4zR3k4ZFhZdm5aNFFVNVBZazlESTZlQ2NZMGZGY0djYVVBQ0RsQ2ZaeUVoQVNSOHR6N2J3ajAvRlFNczhIT05JZ29MM0dodVNHWUVXTVh6WmhMTUNjMjdHVDI4bHRuS3R1aENnQ003MXBSNTd6bE5ML0U1RVF1dVpsNzVVUWlyNTFxaTJmbFoyQVAzOFJEZkZMT1J6RCtjNHZzeXVpUXE3YlBEcGR4bGdVQXRHZzA2bFhSNVBIckdIelVBNGNaTm9MOFpSakRQS1A1aCtOUjU1YThhY0lQRDBHSCtleVZleDBBU1Jlbmo5bWo2Nyt1SVJOalNiaUJzQkxESnlMZFltS25DU21HRVdOUlhoeUVDUjlNTU9vUUZCY0dWcFVnL1RRdmFDd1ZqdU5GUjdWd0htQWg4eXNGd1FGengzMUVvMmo2MkVyN1NtMkZnNVUyYWIrei80Z2RkLzVoR2VRLzlZV2NHYmdVdEdIamNpQTlXeVZJS2ZKeUFJaE1rT2xpenMwK2kyeGZOOTUzWE5uWURNN092Zi9iSXlVV2w2czlIUysvYTZWOThlMzIyTlpuWnAzbUhWOUpFa1J6bWdBbGcwdlZpeWNsbmlCaEZlOHF1YjR4UERLeW5hZTY4cmh5blRUWG9wVmx0ank0TVl2dlNOLzc1dS8zZmZYRWFpN3p0MW9Oc091ai9ZKytZaGJPdnRqd3M5aEFDdityd2x4UU9QTzJPN1A0YnYvYzkzL3p3dWRmV1d0OU5kZTFPdEh1M2ZPMW8zdk51a2UrRjV2bVE0ejFtZ2Z3aEE5TGdIODM5YXk4bGtUbFB6U1lWeTU4cFgveFgwd1JBaVMzRUEzWSs5aWd5TWFSOWdkandYdjdmdmZ0eC9sRm1ubTd0dHdJQUNlWjhXMVBiQjdiK1lNdm0rRzdIeGQ3YUV0bTNQVytiemZDeU5qSXl0QmlQUmxFUk4zLzBHUVlrUGo1aEV3eUxQSXNrWC9VTW1uRHk1SzBtd1MrMjUxdG1QWS8zZkRDWHlmZjJQZjZzZGRmbjhUNmZiQlg0NmhmZWZXWThodHRhYkE1TVRIZ3JyL1B6NXh4QkhRWDUvcGVnQytQUkIzQzFKcytXVVdGWDdmWndUWjhGODBzcTV2RlMzTkpOSDgrUEhQbWNnZk4yRTJ0TFhIMDNTcTNKSEJMQWlVSi9CY1lHc1pyMjk1WnJRQUFBQUJKUlU1RXJrSmdnb2xRVGtjTkNob0tBQUFBRFVsSVJGSUFBQUNBQUFBQWdBZ0dBQUFBd3o1aHl3QUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQWdZMGhTVFFBQWVpWUFBSUNFQUFENkFBQUFnT2dBQUhVd0FBRHFZQUFBT3BnQUFCZHduTHBSUEFBQUFIaGxXRWxtVFUwQUtnQUFBQWdBQkFFYUFBVUFBQUFCQUFBQVBnRWJBQVVBQUFBQkFBQUFSZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVRnQUFBQUFBQUFDUUFBQUFBUUFBQUpBQUFBQUJBQU9nQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFJQ2dBd0FFQUFBQUFRQUFBSUFBQUFBQW1nTzgxZ0FBQUFsd1NGbHpBQUFXSlFBQUZpVUJTVklrOEFBQUFweHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9saFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajR4TkRROEwzUnBabVk2V1ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQakk4TDNScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdycC9zbHhBQUEwNWtsRVFWUjRBZTJkYVpBa3gzWGZzKytlYzYvWjJRT0xhNEVsUUFJbUtkQ0VMRktrUk5BMmd3ckxsTU1mek1PbUltelJKaDBNaDBnNS9FRmhpYklWVmppc2d3aUhlSVJOU3FBc0tpZ0xFbmpia0hpSUpnaVFPQWlBd3BKWVhBdnNpY1VlTTdPN2MvWDA0Zi92WldaMWRVLzNUTmRzTHdTU2t6TlZlYjE4NytWN0wxOW1WV1ZWTzdjWk5pV3dLWUZOQ1d4S1lGTUNteExZbE1DbUJEWWxzQ21CVFFsc1NtQlRBcHNTMkpUQXBnUTJKYkFwZ1I5OUNlUmVZbDE4cWZGenVjVFR1bHlJcytMOTJ4SjRwQnZqTk44STV5VWpvRFJqUTBqVDMzNTlCdjJMM3U5ZXpBeWhuNnRRUkRveDdsWnk0YWYydWZMUC9PcEhxN3R1dnJsYTNUbFJHUzFQbGk4MG02VjhvVnFvNXh1RlZqMlhiK1J5dVh6ZDVlcEY1eHIxdXVGYWdWVGQwd3VSWmF4Y3FYUmNqNWxRWGlyNStvV0ZCRVViWHJBUlgyeEd2S0xDWHVYMVpyRkZmYTdsV3ZWV3E1VnJ0SnFOU3FGUnFDODF4c2J5SzNQbnp0ZGFaeTRzdHc0K3RuVGt2LzdiSllIV2REUjBwRU0rWktJaHhEZ05NOVIwVk1oUWthYVFSZngwTEhhMi9JbnZmbmRQYzhldUEvbXg4UnR6b3lQWExkZGIxOVNhK1YzMWh0dldMT1NxdVVLdVhDeTYwbnpORlpvdWwyKzJYTDZKYkZ2K1VOcUdpc283WXFTVmxJVTBlUWdUMnhIU0RlV3JJMUtvS2hlbERtQW9pL0F4SGZNV2kzQWRtSWdqM1VibDFrWXNLV2tIWUxsOHE3bGx3alZtNTl4S3M5R3FpY0NTbUo1eHVlYXBWajczYkc1eDhlbld3c1hIQytkT1BYbjRuOTV5UW0yaXZSVm9yMFBvTGwrSUNobzJoWWdYeGRNSjl6K2ZlT0xHMHM3ZFA3ZGNxdno5UlZlOCtXSTl2MmNoN3dybk5ad3VhaXdzcU51TE9wYlJoRnFWcTg1SmFDYlVLTTBZZ3crcGtDZFkyaWU5dEZRUXFoSzRKQi9xWUdwc1RBckZBQlo5WTJEc0NEQ1IzcXJ5QUlkUlVFZEl3L29TblNXRmd2b3lPZW5jM0FVUGswTWlPdktvbHhqZ2htdmtjODJUdVdiOU1iZXkvSlhDMmJOZmV2WXQxeDVTRGVndnF5RkVSY0hHc0FJNDZaZko3Uk5QUHZucXd0NTk3NXR0bGYvSjJWWis2dmk4Yzg5ZmRPNnMzTzVjcmVVV05LUnFVb0xjcGgraDBreEJybmwwTE8vbVpodUpnSWZGWElKSDNJMVA1TDBCTE1qUEJFa01XeUI1U1dKeVM4R2RuMnU2cGcwRnp3SDBOS01aM1p5c3BLQnByVkRSb1RqZmJKN0pOMWYrb243cTZNZFAvSU1ERDZ1RjJZbGlrMm5TaHlFa2h0MWY4TUZzNDdmdnZudDYrcWRlLzRHWi9NaDdqOVh6Vzc5L3hybm41bHJ1N0ZMTExjcFhOcVJ3UmswTVVRR1VsVXM1TnpidURTRFdEejN1WXdERHB0TTJnRWFIQWF5bWd6SGs1Qmx5cmxET3ViSzhVNkhSbk0zWGx6NjIvRGYzM0g3cTNXOTVRVzJHN2cyR2FRRGdnc0g2SGM4OTkvcjY3ajIvZDdSZXV2WGg1NTE3L0Z6TG5WNXF1bHJ3bVdiOXF5VmdKUmhBNmNmU0FOSUNrUkhJY29yVm5LdU00eEZXN3MrZE92bkJJN2RkL1MxQkRkVUlvbXRKVTk5SU9pcS8rWWZQUC8vTytlbDluLzN1aGRLdFgzckt1WHRQTnR6eGhZWldRRnJKQ1hOZWtNTzB1bzB3KzlKdkl3L1piTGpseFlaYm1OSGxRck4wYTNQWHZzL3V1K2Y1ZDRwM0poS01ZQ2hpSElZQndJaG1MdGU2NDlUcFg1cWJuUDdrZldmeVUzOTF1T1VPemRiZGt0dzlSSWJDcmZEOFdBVzV3N3F1TzVjMGRkWnErU20zYmZxVCsrNDkvUjdKWUdoR2NLa0dnRjZ4eHNZbmp4NTkrK3pranR2dk81MnJmdk40MDUzUXFHZUszMVM4aEhDSm9kbVFON2pRZE10THVhcmJ1dVAyZlY4LytnNmg1SHJwa2ozQnBSZ0F1cVY5ODZNSEQ3MSthV3J2N1ErZXpZMTgrMlRUbmRGOHZ6bnFKWmtoaG1aTGE2aDVIVXU1RVRlOTkvWXJ2M2pvcDRYK2tqM0JSZzBBNVpzQi9QS0hQN3lyY1BVMXR4K2N6MC9kZjdMbHppeEwrWnZEZm9pcWI2UENDSmJuVzFwUGFUcllkODN0TzMvakk5T2hkc01TMzZnQlFCZjM0Mjc2NTcvNGdaTzU4aTMzSDJ1NTUrWDI0OGlQRnZKU2plR2Q4Rkxscng5ZnVzSHNhbG9UTkN2bFd5ci84QjBmOUwzWStGVEE0aTFyZ0RmMDNQcXRyMzN6TmZQVkxlL2hVdThaelZFMU9hUkxIZjFjQnVaMUVIUGI5WElGOEhOd1pRb2RPblU1UWlGRkExckRDSTE2MHhVdUZGeDFiTXQ3ZG4vNi85MzUvTHZlK0pEdzBvWE1GRFppQVBTQjBaK2ZldVVyMy91RWJ2SThmcmJsbGxkYXJpZ1c5RERra2tJMGdKeU1DZUZkcnRCTjUzSVpBTWJNZ3d6NmNxbXlhY3RDMDREV1dhV1IvTmJTZ1ZlL1YrWHYwOEY2QUlsbGt0cEdwZ0N6dE4rNDY2NGI1NHZqLy9nSHVqOTFTb3VUOUlqQzBpLzFpS1B6VXZHczFYN1lQUGVpZGJsbzFPVzJWblJidlZVY2U5c1YvLzBMTndiRlo3YmpyQjRBQW96KzF2UXRQL25XazduODl1ZG14WWl1OVhVSE02UHRDYjVIUUdDTUdrS01mVzY0Witnd1ZtQWJPcGtsTnlBN2NkUmJYMEsvQm15NkRwanVFU3pxZHZwb2ZudnU3N3ptclFJK3FNT21ac1VEVThwcUFEQ1YzNzU5ZTZVMU92bm1FM3FvYzBiMzloRW0vbWNZSVk0WUVGcDZHRWg3NFJEUFpnU2l3OGk5bkFhZ3hYdmlFU09kZ1RYVWkvZFlwcWRMalZwQlQwNjN2TmxOVFgzRW5UbXpyQ3J1RHd3Y3NrNEJ4dis3Zi9NM3Ixak9WMTV4OGp5UGNNT2RQb1E0aE1OR0k5TGhrR2JZQk9BM0JQZzRSOW5RRHVnTUUxOHZYRUV1TWdMNHRqNHBwcCt4cnh1Vkc0T2tvYjBNclVMNXBoM3YveTlYQksxSEd3dlp0YU1zSGdERTVtS21iNzdsd0tJcjdEeWpPYWhCWjlhbXNXNHR1aVlRYXpPTlBUWGowYWtXdTc2d3k2TkZlTnBzT0FnSitEbVl3dUxUeUEzajY5TVFMOU13T3ZLVWlwT3JKQ29JSWh3MUZtTmZzZjVaR0YxRGV5aWFsY0xPeXY2Zk9LQVdUNE54L1padGlDd0dRQ3REUHJwcjF3Mm5XN25pZWJsL2U4YWRpV1NiZUV6bG9vSWxFK1F5cVFYRmJ1MEptTllqNFo0aHlJNjZWSElWNkNxMlVnVzBxMVp5eG4rdFVPaVVXaGZTcm13SG5SUktYOTVWZ01JcjZzdWtudXp4S1B5Q0ZtOEZGVVl3UEp6UGlKY096SU5sbWxoWFBsOHNiSisrUVMzK3J3NkVCcXExMkZhMUQxa05BT1Q1OHVUay9ndTJneWU0c29odGd6R2NhaEM2cXJELzVNNkN1M1U2NzdielBMeFlzRjVZVDFMZFNTVUhwb2pBYVJjRmJ3bERwSkpZbWNJMkxCcTRkN1N4cEkyTUp5KzAzUDI2VmY2OW1icks5T3hmbzU4Nm13SjB5cmU1UzNHeVRsSUl6TE9NVCs0WEpBdDBVQTRjc2hnQVl1SW8xMTM1U3JaeExjbWFtOUdWRFV5eUI2Q0VCQ052bWk2Nlg3ZytwOUdpcldIQzMySTVvN3FleXVoWDNvVWVoaTBraVpCUEkwMm5RM1VrMnFzcWdzUTRRWjBrdW1pb3ZGRjJibXBYem0wZktiaUNIUFVEWjdXN1ZRWnZ1NElFamhoYldFTFdvQ200cFcxMWNzaFhxYWw4alcwMkhSaExGZ013cE5Oalk5VjZvN0JyUWV2TnBvZ1h4WE4zdndlbFRuYzVtSWV2MGhhd04xeVJjeFBhRnJVd0t5dEx5UUw4MGM1U3hZT1M2WUNMdkRMblIxeklQYVpqM05Fb1F5YmlwMGxjVjRDekZHaG9GNXA3MVZUQlBUVlhkN05hUUxObnNIc2RrTVlCbmpXREJLTzd3NUpQY2RxTmoxZmRSWWFtcVdTZ3JrQiswR0I4M2Z5V242azJjb1V0Yk9CRWNReFMyY0dHRHBUS0hUOVd3MWVONXR5MkNlZm10YkFzcTR3QVhtQ1k1a2d6VGNReXlyTWMzVHlDRTlmSkVmSEcrRkpvcEhGQUkvSXVkcDBjbTZ0S2J1TXk4bDJhNzFoQXMraWxJellOd0Uvb1l6ZS8vZkxXSENWSUp5T3Zlek1rTXRuUG9CNGdJczN0dmY2V2Fpdm5xalYxQk8zYkxVNGxOeG9RREVJWWsvTnFpa29UZDZZeUZwZldPUkJUa0FxVzdTcExWYTlPQ20vc3dPckszaVhEcElFbmlJZGQvb25rS0hmT3NCWlYwRzhXd3F3SnFNOGFiS29zdW1ycDJyOWJYWFNmby9uQTNSM1VBQktlSnZidXJlU0toWktNd09XNStiOEJoaE5rSk5RZUl5cHBaU3lkbStLanRkc0lWVjFDSWlSOGxKUjJvT3VYU2RiZGE0a21oWkpMckt5aEh3MnVCS0lCMkFoWFI0c3FMQlh6cmlSRGlMdUQ1UWN5cU01ekIwMmgwVDdLZkhsa3g1NkticzFrQ3BrTm9McDl2RndxdTFKWmJteDhWSlN6eXlsaE1EWkZLRVVKQXNYak1uazZaNk5mTVdYbUptbWxOQ2VMU0dZSS9sSXphTCtmRVNTSUw1RkdDai9LeGJBcFlyNk5VMDlaV2h1WDIwTjV0aHNZZ05BdTFWeUY2NGV5WG5BWkhja1Y2OXRIcEpVa2dDYnBVVkxhbGNoaUFJYXcxYXFXNWhkeitWa3QxTTdOTVBtc1M2T0xaR2NXbDRlQzZ4TkZZZEs4cUh6aUFVaExldDRZSXAwWWQrSVpMRWZiSGxMdVFObVJHUXh0QjFTYlJoelowUU8wcEd6NlI2Z3RhUkY0YmtXR3I0cy9BUlJ3RWVLTjZTQkxBTHl5Vk5KMk1WZFlybzFsMGFlUnlkb2dWeWdWQ3kyOThJUmllTXc1akdBM2s0UUlSYWM5Z0JtQ1RoaEkyd3RzVUVFREN6Ymczd2dabzhGSmpSWFp3azV4WGdxbWxBVXZDMmY2U2Qvc2hBZFFHWXJIVUpnT3Fjb1NtQ3AxSGFpWGpYSlo5V21YMzFsb3lXSUw2SjNiODhZb0hkdG9RQkJnTWVFb0RVNEV4QlJnK0JYVE9STVdhUXdoSWRaT21iUjdsQ2R6Y3F3elptblhXZFBHcEJTTG14UVYzN1FORVZHMTR5NEpTT3VHWFNQYTVuMEJZdUNrVWJCTkFVSVhMejJKRVFCWXJIKzBheU1mS0dVNHVDZUhPL0ZoWUJTWkxVYTdsQXZTZzUvWU9oU3lOcStSSSt0dklrK2ZhRW5ER0FQdWtYZjFkSGxzZWNxNDF4QTlBSGxUanNXQm5oQmpGaEYvd29VS1lobmdNVzMxcGlSU2xLYU1LdUszMHE0MmdLOFIwalJRTmhxT1U0QVpnc3FpQVdEUUtNMHJUZ2taSGUyajlraG5DU1lYa1pNTlJCUUROODlzQUxwVWlXL3ArazRNU01vNnBST3lRUUM4S01KZFJKU0xrdGxSeER1Q1M3cThwRU8rVGh0TlZOZVNHL0I1aUtsUy96RWdWQzZmd0d2RHJCMUZFRTgwNUF3T2FFdWtFRmt5WlF6dDF1dWtVamdFNlVkL1VENTVTT0htaVhYZ0FZeC9tcEdtQTByVGppTGxFa05RY3FCZ2hzUzk1VmJ6OGh1QTAzdmI2b1E5dzlCYjhHbGQ5R1NXRGxsQTBlcmhzb2I1Tmwzejc5TWJzOXYwTUthRVZGVHh5aTA1dDFmczE2b3RWeFpXREFOTE1BUEJMU01keWhGUlNMTUhjVjR2bU00cWdTeTVsUFFLME5ra2JvQkczdmlneklJdjc4eWxxOXJ0MnFsUTN5T0tlRXpEY0NnNkpobFZvRjhiN2ZDbXRLMEJoTU9QZmhWQVFQMVR5Zzc2UjE4eUJYQklKNFhzTTNyMkZucEp3V3RkWExLQ2gvRitJUW9QSldMNUpmWDZYOTFRY1A5aWY5NWRPNVp6dWkzdWR4SUZCTURueGhHR3g3b1dicHFZUWVsMDlHTFRmZk5relQycmQ4M0xyS28xNUZoWm14R0FzMXZ4U1I0czdXQkcxODV1SU9XVmoxYk5DTlFCU05tQnJKUzJTMXpEckV3d2JCYUJYQ0hRZjRadzFtRnN4Z1RPWnRackNQOE1ocWFaQW9KbmdCS3ZGZFJGQXdTdXBPNTkrTmFpKzhWcnNuYXZQd1Z1cG5FajVlVjYvZnJxaWFxNzg2a2w5K2pabXF2bzhXNWUwNkZORFF4QkJUc25pbWVjaVRWZlphTXgzUlh6TStrQ3c3REdTWGdBOTZhcmxPaVkwcVVaSDRlOFlHd1JLQkY0RDZBQ2dkUFdycWdDbnF3ZWdPY3hoa1JSMXBCNURiQlNhK1NxY0NpaU1CMWsySk11Z3VSZlh3Qnh2L1NLdkh2M0VKWGZUWEJVaXY3NWE2dnU4RnpOemVvckV5VjVGek1DN0Mwb0pKRVMrUzRFeU5Dc3VxdmNpbnVVeGFKT1BNSml1THNVYjRiZ2pjQ21BQnBCa0FNWmlrZVM1bEU3RWFwMC9aQVkwL3FncXlBeUd3QVlqSGVkYkpwZWhUSlZJQmhHLzNiTitlL2EzN1hwSWdVMnJPUTJ2VmIrcXFteSsvSXppMjVFNzlnWHVNMnFZWjZYWkUzbEVxNlhMejFJTXI1RDZoV2xGcEpFMzRKWW9UaG9MQjBGZzZNb2VlUUxPUjNSQU1JaXl2aERqdGdwWkZlUlZ0bDZnVXRsTTRMMUFIdlViOGdBN01iTk9rUlpLTkN4dWhaOVYybkJkN1hlYzM4eHdyN3hnbWpxRlNwNW5hSVl5T3ZPU2g1ZjcvL0ZnaCtKcTNrUnh5WjlyNEpPUmFqeE9pRkNvR1FDc1IxQ3BPc21IWjZ1M1FrTUl6NXFIT1ZCejV3VmNvdEdaWmpXUDcyb0hrQVA2K3ptREJ3anNOanhiamJqK2dEcjNLYk5FTlV3RjNmRERUcy9KaS9BWTlibEZlMllGWGVGNkFFa1hlOEZFRFhCY3BieUphRzhJNHF3QnJiR0tlQXlZUVQzRC81b0JOREdDUFNIL0ZBMGgya2RFaGlxWmYzNnVwOU1hZEl6R0E3VmdEeGp5TzRCZEsyTzRrMzVpdnN4RzYyYTYzZ3U5YXpER1puYkNEZ0x2eFg4ckJZb3VtT3RhUUFQd0lFUzJrcjMwby9jSTBFZjRycUZrbGdiNi9ySG9YM0VyNGFvVWxsL05XSzBQVDVkUTltdDM3YnlsVmQ5cERjNHpSUTNOT2JZUU1oc0FCZ1pLMWtJMmgyaEhrU05uOGhRekt6UnN3aWFSclVHZUJwc1ZSclBVK05hUzRwdlNlczhZbUpuSVdzQkpPM3grdEdabGhvR1RaNEltSkNsY1AwQWFrRjU1dzF1bE84TE1UNUxrdFZSMXdtaEErOUhrby9pQVBIMEk1OEFEUkJvWkF3UEFOc0ZrdGtBYUcvQ0VrSGlmblRwSU5mVkVkWUFyZGVkSE5DK0Y0NWVaYkVsYUhxZ3NtcG9zczNic01vQXNGVWVzT2g3ZmFZVWxPQXBwakVFYW9wOEtuVU9WYlRxR1lTbWpTa29ueEwrZFREekVjY0REOUFoRStHUEhpQnRCT3VSN2VBbDRPZ29HekN6WVFPZ0V6Q3UvdlFNQ042a0tSaGc5YjkrR0FTb0g4R0FIVnIrWTFSS1NLSzZtYXkxZ0Y4SWV1VjdaWGlPUU9hSm1sSlNYSGJtMXlFcUxCNDN1S0lIOEdWeDhXZFhBL0FvbnNCdHNnTmNCM21VVHhaSzBSQ1VIQ2lBSzhYNlFHMGlVR1lEWUFlQUxmQ2tZUmlIZHE5Z29nMk1wY1ZIVWN5SGFrT0N3Y1R5WHZoaW1ZMldBTmdMSHB4OC9kT1FLYWFEWEFYWVl4STFTTnFrRTE3YnZpOGdTSWVRajhWSk0yQTZNcjZSR1lMS3UwYytkL3VpQVVJb1VScUlBM0xRcGJJZTRTRG5EVFh5aURNYkFDdE5MZ1BOYWtXNGh3d01Nd28xdVFvbXh1bSt3RE13aE1oLzBJTndVdElPUHFlUnBhSXdsU2VFSTMxZ3JGNkpGVnRwcVVCckFZeVYrd0FZUUU1YThMaEE1T2thRDViMkJiNCtuUmJzR2lIU2p5UGRLNTViMGQ0STh0STBpcmVMSUdKeGFaZlJFSW9IOGd6RG5pamlYSU5zVW1YOFJqd1lmc2FRMlFCWUJISnBoN0tZYXZzeEMwL2V5cFZDYTdRTEIya0UzeGEraDQzMTFnNmdkTEJDNFRIRTZZclZQTEFHaUs0L3B3OHNtZkoxS3JBb2xDYTRmVnpSblVMaXNvNlNwSzZyUjl1V3hqWkhGZGwyN1dURVFnNjZDanlWcE44c2hMblk0S21tUDd6bllmcFprWWJySzdvY2xYUllHTElocENDTDRNNGt0OFMxb1VieUl4WWk4V1E5aVBpTlNzWlRhSnV4bFlGbk5nRHpBQkJVNTlHSlpOVXpVSTZSR0l4aW1oQlFPblhFRkFKREhiRVBpR3gxQUE4MStJR2tQaEEzV21vU3NtNUJUd2Naa1ZWdHh0ODVWbkM3dFBkdWwyNFFUU3U5UTY5b2JkRXhxcnVUVldtN0xFTmdYNTRwWFFpSTQzemRZUURDRDkyRVgzVUFRK0NDQTJQUWJRZWJlbmhaWmw2UHRQVmRjRGVqNDdSZTRlWTRxKzhSejRrdmRsUFg2Z1h0NVplUjZ1QktoUVVxQW1HYzJFMHJ1aDg3UTNxOUFHTnF2NUdRMlFEd0FIRUtzRUhaaHlvOGVZbUZlSFcyWFczQW9VR1NKdDhPRktNUWk5dkZxK1JVbGpKZnF4Y0xiOWhadGVPS0xTVzNiU1R2UnFSd3ZXbG1nWUZuaDNMRTRMUTRwTTBZU1ZQUkk1aGhDQmZvRUdEYVlIRHhOZzNBbWY3WjRLTHRmKzY4WHFSNVFkOUhQbkpleHFEMGpQWlV0bVE1ZWwzUVZZVEVOdlBRUHgwMDlBYnYrMHpKbWtFNDF0TEZXbTB6R3dESW9yQk1jbjJ3TTVkRlFVWVE1QmxsYWlOSm1TamtHRWZZN2hpNUFNTTFOdnNRd0U5QVlBbE81YmVQRnR6NzM3RERUZXBac3cwc0FUQkM1eVQwU05Oa0hCcFpXdTFpREU1Q3hPbHpnNTJUTmhHWm1NUVkrREw0TnIzck9LVVhYMTYrTytjdWlwZlg3cW5vS0xpN24xNXhqN3pRc084blYyU2hmcTNpNmVIdHpCQWl2bjVzUURnaDNnK29kM2xtQTZpbkZvRVE3Y2ViOFVPOWpyUnk4VlN4TENyRVdBT3VBNXRoc0Nwb1dDNGswcDZnRFdXZzl1YnQwcElFT2wvWE40dllkNjl0RXZaNFdQV0IyWFNiam5RNjQ5RUZ5djE2bVFDWmQ0bzUra2V3ZmlwR1p1WTVsY1pnMmJxNWI2dHpWMnd2dWpkZVYzVGZmcTdoN3Z6K2ludjBkRVA4Nnh2QmJPMkRwSkhWU2ZpNnB5UFZKc0hvSVZpSVpBeVpEUUQ4akNoYkNCTDNJV2k4cXhLNE9EOEJHK0U3MHFIUW91UVVDaU4rSWN5eFZJN1NEYmlNVG9BaGpWdXR6Uys1TXY2K1dKSzMwcFp6elZsYWdrVk1YWEdiZUNmRmRDNmRwbm1hcWtmWFZwQ3ZpL2xWc1ZDMTVBRnErckFEdjNreXFwMzh0OTFZY0RmdExyalBQcmJpN255OHBvOXU2QU5RdHJGRkFFTEFYek1pNnVLZXJNbTRtOFVlY0wyS01odUFkb1RwdlhxOUZDS1hOcW5QazZ3V1Jac01VMFZSZS8xRzljYWFqWFpWc1g2Z1RUTDZFVWlhK1NUVHhteWp4c29CYkpkSG1hU2JVOHNlUTFiaUdBTmVoYW1BbzNjSUZVa1VBZHQweEdHcUtlWGsyMlVHQ1RPZVVWRlVuVEVuMWFrWUJmS2ZoSkRXejZHNHV0NkZyQ25QRlBITzE1YmNYcjA5K3FtRFRUZXZLd1Y3YTBoekNEak1mTk00RW1TNmdwRStSa2UxUFM3OVdraXFmcTFrWmdQQW5hMW9KYnVpZDFEcmJOL3RFK0FWblRVRW95c3hDK1F4Q2pwRE91WWpyQWZTT2RWUlN3cldDcnZLRFVlb0lvcWhycFdYN1pIVU9ScUFmWjdGbEJLaEFobjRTQ21UV2lQWFZkWnU1V3RqdnMyU244QmFva0ZaTkFLcnR6S2xBakFSME5nTG9TUkRxT2tYUlhpNSt3MHYwemQvNUwwKzh0Q3liWkExVDJCRzRBMEIrRTRPL0JxRGR5bzNFakliQUQvcFVwVDc0bWRXbHZpbGpUNVVZWkpyM1VWdDlWMWVSdVU4bHZFRzRPdW85MGU3UjlRQWxNaXFuZkJTOC9VNjIyQUx1ZEFxeVhFZklJL3lkZU1IRHUxWmdDM1Z2WklTSk9EcGJKemc4SWxldllzTmV0V0pYWnVpZkIzMjFqWUV5d1I1V2FtUndHQUlTQ2pQMUNCRnZucWZjLy9vYk03ZDhjaVMzdm5UOXdTMExyQjlqaGlTb2ZGdHJLRk9yYWFNUmtWMXRjOGFNaHNBSG9BMUFQMjBKMng5S1VyWTBwTDlDUmF4Y1VRUFFHekNqM0hiQ3F3aXlNWFRNUnJXY3k5UXhFZzdjSGJLd25DdWlFR2I4OFVrUnRqa2tYQlVUQUpQNnhoQ1licklxbFlWeEFhSzAzV2h2YUsyYWxHV2g3R25nOENqUUhoWDJuc2RvUFZuV3ZVMUJYbFd6YXp1dHV2TDdwR1RkZmZ3ODNWWGxYWU5SOGM4RUdnS0c4WGN2K0RkOEt3aHN3RkFnSG1jUTd6M0RKRzFxT0FJQnpoSFZINnNOelJkdUtnelBCR1oyaUZQd0NqcTlnQUptQURzbzArQzVJc2JkREN2TkpkamhrRFI2Z0RXWGlFUTdGV1ZFRFJ1T2lEOHFQZEZxTldNejVSUFdac1dFMVRvcGVkTlhzcjRsQkZ3YitDdEJ5cnU0S2tWM1RDU0g1T1c5WUZZWFNZbWhEMEJuYU1CYk9CT3NNa25RVFJJZ3FrRzVVZmw5V3BEdDZ5YlNjSVhwQldmYm0rM1JhMEIyRHJkTk1WMEdTWEcrVFdXQVEwaDhoZ0VOMlpJK3lsQWVHUUEzQlRXVFdBSlZrS01ia1V3Z3dianN4ZHcwRU43eEhjQ1JWTFVHMTN4MG9adHArRFh1RFl2QUkrNkRGUUpMOGdjMEpkRURtd3J1SU5uR3JxcmlTblJIN1V3WTZLbFo0SUhUZlNkQlhyV2tMMUptQUxTQ3V4RkZOYUFpZE1FN0hKdys5UkdjaWhJQkV6ZUlQeloycXZFdXFnVGNLRUpnRDZ2Y2h5UmVVWXJ4YnY0L1FDMkNVUkxmLzRZZ2V3VUFvUGhDN0JyUmNiT1dnQmRkUjE0RXdXSi81Z1dnTEZnN2NTVkxOYjNoek9WSGlFUHJIaW5nV3ZFc2hhRnI5WmR6Yi9STk5DU2hnMFM0VVZnWDJJNXBnQmtrVFZrTmdEY2pIa0FVVE5lK2xBME5qbHhCTTVRSW0zcHF5bFVlVWEveHdOZ093QVRkR2FGakhDdlRtdnRCUWhlYWQrbUEzQUJvNWlITk9aZXpXMEtoRVVoUkV3WmJScURwRHhYL3B6dUw3VG9pVVhkaUFUb3kvMm9wUjllK1I3ZStpR1VZRzNqVjUwQmFocnduYlZuQzlmdDBLYy9wUHdHNnhxYkI0VE1ybW5idEJrQUtGSk9JM1BJYkFEY2JXSVJDT2NvYjgxZ1dnNndpbWlHQjRCL1d0ck5KTVdtTlFwTWFsSVdSU0ZMa1JVbm9xWStqQjRxd0FVd1NlV1pacmovRGcwZXNsQmxVd05JMFNBRkVaZEhITW9vdDBvU0E0WmU4Q2pTTnpjdWxZNVRqK2ZhVTdGcEwxQ0prME0wRkM1WnZhejBWVEY5aEdPclhxSGpnVkxST2lXYXVrY0FyS2Z1QjVCTkFRTnluUWJMYkFDc0FiaHVSWG53MHk5UVpZcXhoSWNpMldzZEVCVklBMlFISEIwRVAwcU5Cb0ZRQ0I1R1FsS2wxY0dQQ28yVVRoaUFEWGpjSnVWQ1pxT1gyS1BvYzE2N3RyT1JjZGxabE1yQlA2RlQrUlJpbERJRitrYk9ZcDFVUlJ0YjdZZTIzQ21zNklubDFrcmVuZExyYnkzMk9RSkRweFVDbU1VOFE4aXNUT0hJM0FiaHhrVmdvamhqcDhmSmV0Z3VSL2tjTUc1Vm9aN0lsN1E3RlkwcmdiVVdmZ3laZTVlMHpFRFVNaG9HTWZodFU3RFM4SXJBZ0xlUE5FU0pxVzZ3NERrejByMGFtRldsSzlvRUxLV1RMd2w0aENqMnRkTUFBUFExOFhJUFUyVmZDNzhrT3E0RklIYzNyYkVKRUZpUEdlcllnNVlMdXR3bGx5MWtOZ0RRRDdJR0FNNE1CTDdoVjBkVUVLeWIrdy9sUkhRSTlmcng0V0ZSWHZKOFhCQjJKU0FvVTdodlpDMVpNMEVqNHVmRkVKNGI2SFZaM1E3MlUwcmNuV3NOa2xOYmlNWmdVcjUrSXBKUFkwampzSEp6QXhIUzQ3UWVxcWpEQUFRYzRURUEvNTZnbm1Hb1BRYkFKV0hiZFpKV2UyazlPQUlqdXdIZEcwT1pEU0JlQnBvMWR2Yk45ekNjcWNLbzQwR2VvM3NSU0tFWmlCSmVtREtFSUJBLzNtbEY4TFZnWVEzQWF0OEhsWU5ER1F5QVl2WUUyb0NTOHYyWGg0UWJqMkdGdEFxNHlOTndvREF3b0xDMWVVMlMwQWprNHZ3ZmpjQ1RWeHZ4UTkrOXQ5SXRkR21ZQVkraURaWU9nbHBsYk1sSFltU3A1OGlzekkyMGFjZ0M3TXVVV09FYU1qRSs2VEF3NFNCaUFkbXU4d0J4TVVrNXdORUFiR1FyWS9Vb2kxNEdDZVI0RTVvR0tvczBFQmFMVEQ0MFllL2VLWVA3dDB0Q2hHdk52YWNoYVlGQ3RSa2s5QWFqMURDblVBUmFIU1UrQTYrZEJxQzIvdC9IU2pPMUlRUDZZNlBkTEZ0cDh2RkFqb0loeTZuSC9TRnExZzNaalVZR3dCeExSK0k4M1lzS1BNT1lEVExGTmhjcnRpbU1Lc3JBRTlLazFCOS9xREIyRHJkdkFqTEFBS3plQW11dHFjWVl5Q2tOZmw0TXNTc0FGZlBxTkI4MEFwOEp5WU1hUEdVV0JHTkJlWklVeDloWCtEUDRMeVZZbjRYQTQwbjd0MkF3TW1aN3BkMzRWUjgxc1FQTDExT1FvekVWNDhBSXZISzhhQjZBS1lDbmU4a2NIaGhKUjRtY0FyT1JlWlREWVFJMkk1SWJVdys5UUR3R3hHTHVHcmpZdXhoalZmUlVzZTJqQTVPbGZWdHdtd2VBU2NFMVJWaXN5cVhxVUJxOHZoM3dJRjA3cENHRXVrZndwZEdEUlFCcmwycHNVRG9SMnhFS0xMSkc0a3Z3eU1rdkFqRnd2VktuNGNtVWVUSDhFR2NiZ2FjVTI5UHVSVE1BMnhTS0ltQTJjdUQ1U2M2eDd5akRhOWRiTzgyU0tVRGFRdkYyZ014d2haRWd4SFRJVHdHcWtuVHdJQ3g4ZUliT1BmNjhSajJ4TFJRaEk1R1pnYW1lTjROeFQ5NEFCSXNCbUY4VnoxZ0V3clkyUGxZeUJLK0ltSU9sMkpkWVJwendIQXZURmh6TGlLMnhUcUZ2UkJIVWlneFc5ZW9Ib0dZRTZyVDNXTG9UcU1JVmpmNFpQWFZsM1NPdzVLRGZQT1VFRDIyUjEwWkM1aW1Bd2NWOUFDelRkNnczV2Fvand4R096bmNzQWdVVTU4TkVNZ0pHRUlqRWxFN3ZRRVFQdzd3Znk4MmxxeHh2Uk1EZ1dCeXlNeGNEQUs2dVBDK0lldUY2WWRuWmhBNXloU1JTdTVpeEN1VkNIVFd4SDBreUZIYlhoYVloRWgrcGdrNXZJZVNCRCtPUHJQcUN3WkpuQy92c2ZNTU1vS0I5Wk1ZS3lIUmd6eVpqWlUwOHF1U0tJV3ZJM0lScmE5dmdJUWFpTmZjaWF2b0t6TUl3eWVpaTZRaHQyMGNBQ0tJeVlTaU5BdGtLUmN4bGpvMTRDUVZjaGs4aTRaTEpEQ0dGMzE0T3RSRXY1WXVJL2VZUVFQcVBzS1QxNzBOSTRIZ0owRy9YSmxBcTg1U05iMkJKS0RZVms3UjY0aGg4VzZzS2RUd0Q4TUhqNHVFUHdmb3M1b3hOOVVuZi90VzJkZWNlTzdPaVBSWE84UkhZNVBFNkRkUThZb3JqZytLc0liTUI1SEw2VUtnWVpOUkJ1RitneXVwOVA0MWhNd0RhcVE3WkdSNEp4T1JvQXZJcVlBV1BJSUJuN2tabW9PRnpxZ2piVHduQlV3aVFPcERHS2FDbVcyZ3R5bFhHOXdIc0oxb1lWUndlVkltZzd1N1ljQ1dtWUVaSGtTRlRSSTNSRTQvdzdkTWhOcmhVbW53U29FeWR0VEE4c2NxVXIycEdQenl5RUJ6UlZuWmVWbm5zUk0xZ29XdC9hbzRoZ0NYMmhSZ3p5cXpNamJScGFIZUZ1WCtNd1BkRmFEcERaTXpxQXd3UitmUVU0QTFBaGFyd1lQNU1lK1p2T3VWN1NZbkFWSVpDZVprQ0k4QlYybVZTSUdnR0lCUmNCa2IveUZVQTE5TmVzSW9qY3dLSmdvZUlVVkNCcCtRck1VTGU1cUVlRGpGNmFIZzNya3JTL0dGcDFnZGFXNkZpSDVSTGhYU090T2lwVDdZNFZWUGpSelJLdXYzTGJ3eWR1OUJ3UDNoK3haVzFyNXdiWW1DM29LYko4eEFWQ0lYSkttY0xuUUF6WUpUZGFMUWxTUGNCVExkNDJYNkJLZ095aEluRmoxRGw2VWhVUGpEeGlMaW9SeWlTaFhrQ3ZBQUNRQmUyQUJRR0huK2E4QlhieUJhZWh0WUlLSWhkUytnRVFuWWZRQVJNZ0ZZbVBCQUthUk0rR2ZKVzdEMUdWYThNamZOQ2lkNDBZWmMyWHgxWjFKcytGeGVidHMydHFRNndUakY5Qzc5L3ZDdmlWa2JjRGgyNW1JbkdScHdjdnI4VGVyZGhtNzRBL21WdENUdXZoMENqZWhnVS82eGo4Q284OUFOMFpDVVAzVHBraFpZdFpEYUF1bFpaZXVQS0hsZWh1SDdCR09NVUR5VnRoS0pWQmQ2TEk1OG9IeUg2S3V1UVpHSXg2ejV6L1lxTm5uck5Rczl1aFFhalFCQUl3UzhDOVlVUWVRQXpBQTFoM1JTMmUrU01Fc05wZUNWTzFkbWZDVi93YW0rdVY0cmZNVmwwZS9UaFNyNXJlTzVpM1MxSUNSTXlodDA3Q25xQlF3OW16aGZjV2Yza0Mvc2Q2UU9OazM0bzB6blBlOXlDVWdJdVF6QStsRmFNcDRFMzBpT2lQejJaZCtjdk50dzNubHdPM3owVXAvQ3A5Z1lIdllDR21LYVNRVXZ2SHdicGhzb0Jvc3dHa05OZWE2TVA1Y2hGRDBJb3hRc0hhSm1uSXZMSlpTQjVzV3RYQVNZOTBLbFF3V1NoazFlUU5RK2VBQmd2TU9DUUozbmZ5dU9EQm04SE0wV1lWQlN6a1BRZUlBaFNlUzlNbjRjU1c3QzM2TjNCSzdVTFo3czIxeDA4dXVUKzh1Q2lPM3l1WVFiRlY4Y083Q3k1dDl3MDRnN3MwZXRtNHlWMzVIVGV6Y2hOODk2Qjc0ZG5LdmFEYm5XR2RBRzlGR1Y0Q1FlL0lUQzFwZWgyYW92M0gzMXJ3WjI5eU9objZ6MS93Y3d4Z2hSUzB0U1lBWmhFVTVVREpMTWFRSzZoSFpkYXJEQXdiZTdwUllOdUpxWklKdlNiTWtZcGJSUGxteEY0a0k2T0FhZUNPSEpSTmtRUnFrMEZJYmJPQTZzRXl1ZW82NU81K25xNkZsVXFsREhrNVM2WXk2T2d1ZGVPZ1VDUEJlS0loTHhIVzYrdTNaSFRieFkxM0NlL2ZkRjkrOWxsNGNwcmk3YW1BTUd5UmV2aFl3MzMvWk1YM1J1dUs3bTMvY1NvdS9uS2dqc3NJemloWHdCYldKWlFSQnorOE1aZStjb290Tk5RYkFmNHNVNnFSVm56L283SmtydE9QRHp3OUpMN3hoTkx1Z29JeWxkZjZDZXRPZkF3NUFtZWdwVTNtendGeXhpeUdvQkdZcjJoaFV2VDNCYW5IaUVwRlhjSUQ5Y0tveWlkQTdiYkM2b2dJT3RKMHJKRCtSZ0J5b2NjaG1EWHdJcTVFV0kzUXlRTmd3bjRXUXZZSXBGRzBKZllPTXdBUUtJcEFwNHF1dFRhcnJlR3I5cVpkM3YwR2J0SG5xdTV6OXcvNzA3UHQ3UUhyeHkyWS90Mm5pSFJsNUsvL25UVFBYVm13YjNqdFNQdTVWY1U5QjVpeVQxN3FtbUx0cHAwWUYxSitoT05RWFFUZFpIeUJzaFVoS0ozYlMyNEczZm4zYkhUZGZjbjl5OXFmMS9KakMrbmkzdTJoZHNESXNGYUsvRWVBeW5lYnRabUVkMHQ0aUk5Vzhoc0FGV05oUzBUcnFIWDdiUm5iZTJIa0ZoK2VhVm9iNjBnRDBabm5BSzhCNGdHc1pwcEZLcmVlZzlBVW1uekFrcWpReGE4MkpKdENoRXNYZ0hjMEZnSkJzRG94LzJiRWFvT0E4QVFHTlVUZW5tVVViOS9TdkI2YmZ2T2g1cnVPMGRVVzVwd3U2ZTgwZHJpVW5neGxpU29VN0Myb1BYV0hRODY5OU5uVys2MkEzcXo1K3E4ZStaTTNwMDgxM1FYRnYyMEFDOSs5Q2V0MjNuaDVPUFdFL0krKzlqOE9aMXp4ODgyM1I4Slo2RTY0YVprblBRcHI2bkpYaFZVR2paU25CaFM4bHYxMHVuRW1Hdk0xZlZDNUdxUU52RWVxY3dHTURzN3UrSm1tbzJGSlMySUZ2b2JIR0pDaVV0YWtaM2ZwaEhaOHU4dGVRK2d2S1NEOHBDbXJhWlhNZWZiVTJ3ZFIvQUlRQWVDeFF0d2NFbG84N3ZTZmhFb281TjExcE54ai92VVRsdEpzNklGRm91NW5Wdnk3a3J4cEduY1Bmak1rdnVMaHpUcTlVdm9yUHlaS3BaMStCRW5neEJCT3dKL0tKUyt3WDlEbmZtc0RPZUJwNXo3aFZkWE5DV1UzVjR0NEk3TjV0Mlo4eGdDM3dPZ244RFRFZkVxcGFQNEVWM203WmdvdUd2azhuZG94WC92b1VYM3B3OHU2aTRtbTBIenJpWWVDdlpTcTNnUVBIMmcvK2pYb3NBUG1lMGpSVGQvc1ZWZm1iSGZES1JHWEE0V3NoaUFJVjJhT2JuY3FqZHI1c0pOLy8xb0lTWnhvbzZmWDlDSEcyV2I2cE1wandvRWlTSkRyNHhiV3JRNzU2Y044b0RSYmRxWU1VaVFwZ2psaWUwVE1LRytvR3ZtbTY2YWtDRDlPa0EvY0dMWDFhUGFWclZWaTZ2dE9pRDgrUEVsZDk5ekJmZlk4YnFyNlkwYTNEQ2JMdm1EbG0wb2tTZXhxd1hvV0NsOFdNYjRWZ3ZickhGeXR1aysrdGVMN3FZOU5mZm1sNWZkeTNacExwL1NBbkV4NytiMFRZQkZmZExlREYrZFlhN254ekg1YVZ4KzRlZllHVTA3OXl5Nmg0K3VtS3N2cXQ2clcveEw0Mlk0aXJrdkVrTTdoVHlBbGd5YWpaVUxGMDVrZmpjb2l3RVkvZnFwN3k3cmQrcVdVQXlFK3dWVGtDcHh2eWNrb0JmbVdtNUsxbzRWZS9ldlJKQ2xhVmluS09SdW5QUWR4Uk44T3VCUm5nc2ZWdlFhTkJLdWM4K2QwdnlwZDZTdTJWcDFaYTNjY1o4WVhrM1RJNWR1MzNtODdoNDl1dXlPempUZDVNUzQ1bm90dExTWEtzL05GZ0dhUUVWTU4xV2tDS09ZT3Z1ODl3amV3RTFadG1VcnA3dDJUWGZ3eEtLOHk1SjcxYjZpdTM1WDBVM3J4N0RLOGdwNERBSmVneW5pMGFmMTFzK1JtdnVCM3Y3aHhsVkZmRURmNW5zV3NDbGpOS3JXWEh3Rk9WQkdFWk13TTdFVzVrc3p6enlZTmdCUEVNQTFRbVlEbUh2NjNxVTlqY1ljaktEa3ZrRjE4Q3FEZHFmMW84bDNINnk3ZjMxYlNVTFhyNDJkbzYzdmlhR3dFM2t2MUY0NDR3Q0FMdW13dnZNME5FK082NWRIZVhMMk8xK1ljOTg3V25QYnRpekp6UlpOcUEydDV2bWwwd1hWczA3Z0lRc2p2aXFyNFlaTzNaUXZRMER4T3BqeitiTmd2UFhrU0lYQXc3Tk1GNXhoNzk1UnJRTU9uNjVKbWN0dVFudTZkMjRiZHd2ekYwUmJENnIwNnJmZVhyY0hWdERodHdOSGRiUEozRHhLTnlQMGhwaHdrY2pIS3oxeVE3R2EyR2R1dElOdzd2Z0QzeFRtYkdGUUE0Q1dGOFhDd25LdXVYSTZyNWFpM2Q4SUJHME5kRUxnZjNqUGlrWkYzcjN5V3UzUGtjVmYxTXVsOGJjbkFtWmhDMEx2MlFkUEhnakp6U0NGMXR3N1B6bXJBZTkrNzB2bjNhTzZWTXRYeXZvZVQwRS8xZTZWeWJ6TDVSNGV3b1JxQ0h3Wkk3aWd6WVB4NVV2ckUxQ2VYT0FrRUNRWE82VWtzSHdJS3JhQk1hYWpBb1lnMThQY3Z5d2U1cVNXbVFzcWt3RUFqZUpIOWYza2FIQVdpejhiOWFvajd6blZPYzBIeGVtODBnV05zS3JXTWtWWGYrSDAvTHdlRzFsSVE0V2kzdEdnQmhCYmcxanovL0pSZUVTWW5ZODNJNWppaEFWOUdsWEE1M1JwOWNIUExMcjN2Nm5zM25pamJxUm9FY1pUMjdRWFNaclFYQm1UUTRJU2F1MUEybGJIaWwrWXJidmYvZnk4KzlQdnpMdWlsRi9rMnQxR05RcVJhelZtUTJ0Rk9IY3VFekVLNWlUdmJzSHZZUkE2dkZnK05HdjNCeDVvSnkra1UyaGh2TnFpVkhqdHp4YW5ZZEVuS2ZQNWwyYjZKMzNVME9DQUQveVpJVVM2TUpBRUEvWk1KV1ZLQ0lZSFJoaEF2clYwVENXOEc5TFJNZzNlSzcwUkEyZzF6NTk3TmpjMUxYd1lnQmRCTjNLRXFOcFFyTkVuTjMxR28rRFg3bHAwMTA0dHVldW44MjZiRm1SY3cxcVF4aU0wcTk5eXVheFgwT1VtVWlGTmlVVTFpNnNUK3ZIS3g0NnZDSGRUcTN4K2lWTUtsMlg0YTJjaFoyVHhoNUJEaUdrTUEvWnRWRklYR1RDNHNPcnVLQXNJUXVSSFp4c0FPdkJGOERSa0lLTEJPZ2lEYk11akRXTmNKYnpCaVVLQ0V2NEMzMG1aYjJ0Z0ttTlJ5UWV3YWhkbUQ2dU1aVG1RUGFCcHNUcGtNUUNRV3Y5V3poNTVzclQ5WlEzZGU5Ymo5dGpsMWNqVHhzRUtHeGZjbENBT24ybTZKL1MrR3dzaUhpMmFGeEYyNDFxR1VDcVYzUGhFeWMzTWRCcEFKd1hFTFVHYmF5KzRNVjBLMlNxZWVWVEd4bHhxcjFKSmdBWVo1QWdPa294ZGowR3BZTVFKU0VoMHVGOGFyZ29BNmdodURQNHBpWDRCLzQyM3dkRjRYcXlIQ1JaZ2FSSGhJejFmVHBVNDdHeGlMZUtKS3RZUGxWeXpjZkhja1NkRGVYK0Z4SWFwT0lzQjBNeVExNDdkOTFSbC84K2VMaFRLdTJzMjYvVG0wdHk0R3BtZ0JlTG5PRndXSDJyMGN5U3JZeHY3aGtJcERFQ1dNajZpS1dKSkUyVlhTSVJqNWNyWnZ5aG82TVE1bERtZkFrYWYwVTRhSlFtek5vUnJBbFpNeCtKZ0UwTUtkaklxZzU3YS9ZMHRSRDBnWld4M2U0QUVLa1dxazQ5VVJRUU9NVFY0bGtsNTBYS3VmdnI0RS9mcGJnVFN5TVo0VmdNd2pvNy8xVzgvZjhQcmZ2bnhRckdzbTVmcVZoZ0JnYmNrTW5FbmZUQlZtSklZRjF5LzhiS0dGdWhpR2NYVHpNZDgxY3QvMFhNOTloQ3dtdW5rSTUxSiswS1ZkYnJVaEJWUHlrUmxSZ0NLV0VhOHdXQTRZdHRBTEJwWmpHTjF6eGoycWVoZ3RDZWt3WENacXdzTVYyd3UvK0N2UC8zZlRnYklRVm9uU05lVGNBS29CSWc1WktUemk2MExwNzVSM0xIbFo3RkNMcTM2aHNDT1diWjFENlhveG9pdHZGVkp2WG90MVJzS0RJRzdkaXpRQ2dOdGN2UEtwN0VmOGVBS3F2QW9EUzlGb2RUeXBDMHZtR2dFSG5ENDU0Zy9UYjhubFRTL1BRRlNoWUtkckdvZEpRTlltVC8xallzWHVhNHlSd2FXZ1RIWm1pT0ZkcjBraUcyaGNlSFE1NzZhYnpSbVdISGJIU3ZWb0x6dUE4WFR5QVN1aEJlR2xLc1N2RWY4MDR5ZCtsT2REQ3RkMGovdE1YajRnQzJoNDJrYkQxMjgyWDBaR09zcTcrWi9HUGxoMDRCM0J0NU83VmtZTHpabWpqend4YStvSjRTNENQUzVBYzVaRFNBU2NTZS85QjhPTlJmUC9KK0tyci90STBaaUtycTVkTXlsVVRwUDJpekN5cjBScEEwQkZXSXU4UnhVbWhoS2Q1NjIxcDZGWE1EZFRhOFhENUdQYnRnZmlyd3Nlb3QyRGUzVGhWaGgrZXlYUC8vN0h6Z1VwSXF0WndwWkRRQVJRNFRyelpVTGozM3VVOW9nTXNmREMxYlM2NDRXTlVycHZ5T3RxblpsT3QydkFlVUthMVd2eHcrTjE0TzUxUHFoMDVEMHVhUytRazhzZDFRYmM4Y2UvTklkRWdQNjBOT1daQXBRY3JDUTFRREFpc3doMWpqeGhYL3pTSFB1eUIrYkY5RENiVzF0aEpacmFVd2doRGdLZlc2TjgxcTRma1RyOEl3N0ovVVllNDhTRjQ3OXIvLzlPLy95RWFXaVRvZ3poWTBhQUhPTldkM3ByL3pLeDNPMStlOVZkUysreU1KT0xBempvQmZEd0xNV0RzUm1VODJRZU81RmE1ZzB3TFZOanhCZmRwV2VLQmJtdi9lMU8zN2w0eEpUMUFXZVdSRFp3a1lNQUFvUXNtbGc1bnQzblZ3ODlNVmZMK1hyNXlyNm5BazNZRGJEOENYQVZNUVgwQTljS2ZlL3RYN3V4S05mL1BWSHYvN25YUHFaSGhSblZqNWNibFJiRU1QaXVBM1VmUGJPdDkrM2VPeWVENVhMamVVS24ybmZOQUtKWlhnQllVOXEwWGZneXJ5N2ZrOXo2ZnpoZXo3MEovLzU3ZmVxT05HQjBpK3FBZEE3Q0xJVzRCRms0L0FuMy9Ubnl5Y2YrbENsMGx5dWlsbnU1MitHUzVOQTFDajdGbDkrVGQ3ZHNMZTV2SGo4dXgvNkh4OTgwNTNJWElmSlhuRUV6VXh3R0ZxQ09FZGg1cUZQSE55eS83WmpsZTFYL0wxOHFUaWlyYU5hWldmbmpSOTlMdXNlOTVKZWk3NmNvYUpkUXJESFBnSzdlWGdaaUhGenFxb2JOc3Q2cVdSUVVaakVkT0xxYXMrMm9udkYvcHk3WmtvYnZwNzcxcTkrL04rOS9qTmlFN2VQOHMwREs4NHVaRFVpRE5NQTBGWis1dUU3RG8xT0hYaTR1dk82RzR2VnltNW1tZlJESWFPNnp1bkgxUUNpZ2JBdGJLdEcvYlY3dGIxdHYzUFRvL09QSEhuZ3ovNzlwLzdqMis2VzZGQStkLzB1V2Ztb1lSZ0dBQjRza01PTVlPNzdkNTJvblQ3MHRkRjlyMm1XeHladktGVUxlcm1KNVVaNDhyV092ZjZvRzRCMVB5MERYWXB3NjdzaXI3ZE5pcjk2Rnk0LzU2N2FYajlmbkgvbUQ3NzZzZmQvNkt1Zi9xM3ZTNEJSK2NTWjcvcXB6YXJBVmRDd0FyZ3dLSjR2NlA2Z0hhVXJmdTUzWHpWeDh6OTdWNjQ2L1pabXZyU05id3cxeEQ2dm1QTVJaS1lJTzlTQXl5aHVjL0tKMURFSllsWWJQUzVYWUxSTmFGZHVRMXVKRi9qcy9RWWxrZFpqbWxlUFRtWXZ1OSt5cGVET2E1ZXc3UWhTQlE4clViajJpTmk3Q2FQYUlUeWhwM3BiSjdWWlZQZjJ4MHYxYzduRlUzLzU5TDEvOXNlZi85Z0hIaFZlRk01K1A5dythUVphUDlLcUdqeHNzTnQ5Q1lDUG9ZNFI4Q3lYdmVDa0s5TnYvazh2bTd6aDUyOHJUbDc5dWx4cDdJWm1yaklsU0Y3ZmwyRFVtM0NRNXFQSC9DSUp2NnpWM2MyaDlCcTBRc1QrUkF4eVVXSkZLUndZQXAyd3g4dkVNWitPQWFDT0k1U1RpZWtrbGlSUThxUVVPNjl0NXhnREd6Z3hjRzFjc2w5ZVlUT0hkcU0zS3JtbE0vbkd3cUhsMlNQZmV1YkJMMzd0N2ovNHRTZUVIcVhIeFI0dW54R0JDSVlsQnV1RDhBMDFtRnlFc2RzUThBNlVqZTI4OVgyN1I2NTgvZjdTanV1dkswenN1aXBmSEwyaTVUQ0kwcVMwVU5FQ3NEUTJrUy9PenVCUndvTjlQVGptT1lBOEJQZ3ZQV0FBVWd5ZWlHM2hLSW90WnNraEtpZ3M1akVPMGhZcmpZR1FqdVZLMnErRGFmMnFUVHhpVXA4bjEzY09Xc1ZpcXprKzZocUxDL3BOajJaVFB5ZlpXczQzVjg3bjNQS1pYSFBoK09Mc3FTTnpKNTk2K3RTVDl6NTl6MTBmUFNVMCtoRVpVenFLeHdBWThTZytqdnFoS1Y4NGh5Uk1NSzBPeUlRRHhYUEkxczBiRUV0OEZ0SjFsZEc5cjZsV2QreXY1TWVueXFPVE8wcTFsVktwVlJ6UjFuNkpucGZmc1FFZWd4SDQrYzFMRENNYWhValpuOFFrUnFCc3ZJS05lUW9qb3pGTnN3Uk9hVzFHc1I4bktHb25xTDc0clgwdWN2aThTTnRZYkpSMG5URi80ZXpLeFhObmF1ZFBIMTQ2K2RTRHk5cElnM0xqUWc0MlVDeEtSdGxSNlpkTjhhSmg0WktGR0JHdEVVT0RBNlhISThxVE9KWkZ1RFJQNmJSQWYyZ0N5a3p6bmg2MXBPT0J3cVBTaVRHRVdFWWM0WlM4UENITjVPV2gwTVlhYVJHbkR3d2c1b0dPZWRLRTJNN25mdmpPM2NxUGlxVW5NUjBWSFdQcTB1M0lYNWJ3dHlYY2JycnBmRHBOcDd2emwwVVFseEZwdHlMVCtYUWFGcnJ6bDVFdGovcWxLdHlYS2wrWHFwQVhYY0dYeXZCbSswMEpiRXBnVXdLYkV0aVV3S1lFTmlXd0tZRk5DV3hLWUZNQ214TFlsTUNtQkg1MEpQRC9BYVVjdVE1N1EyS0lBQUFBQUVsRlRrU3VRbUNDaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBRUFDQVlBQUFCY2NxaG1BQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFlR1ZZU1daTlRRQXFBQUFBQ0FBRUFSb0FCUUFBQUFFQUFBQStBUnNBQlFBQUFBRUFBQUJHQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQk9BQUFBQUFBQUFKQUFBQUFCQUFBQWtBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUJBS0FEQUFRQUFBQUJBQUFCQUFBQUFBQzFaNkxvQUFBQUNYQklXWE1BQUJZbEFBQVdKUUZKVWlUd0FBQUJuV2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2w2d0hoc0FBRUFBU1VSQlZIZ0I3TDE3dEc5TFZ0ZTNmdnQ5bnZmOTZOdjMzbjdjaGdhYTdzWldCSU5nVkh3Z3daWVlEUWl0S01NWGYraUl3YUFSa1dIVWtXaFFFOGVBa0JBRDBhQXlJc0pBVVFNa21nd0lBU0tTRmtUZ2RqZmR0Mi9mUjkvWGVaLzl6UGZ6blRWcjFWcjd0OC9aZTUvOSs1MTltbC90dlZiTm1uUFdyRGxuVmMycXRYN3J0MzVkdDBnTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhjRGM4TUxrYmpkNGpiUzU4YzQ5MDFCSFUzRHNDNzY4STFsK3Bnenp0WmtBa2ZKUU9QMDZkbzhoZjhCN1BBOGVaNE8wWU9FNzk0Mmw2U21yOVNocklCOWs2eG8vTGJWZmRpdGJ5TGVDNzY0R0RKdkkwL0RRYzJoK0V2N3VXblhEckt5Y3M3elNJWTVMU2VkTW1hNHRMT0hOMFB3Z2UweWhuYXVza2JwSFB6d01IVGRScCtNUmxqcFlId2EwRjhORFBMVzlMdjJmaFQ2WEJPODJXeEpHM01CM1dsaE1HVHlkblIrODJjT0xneVpUMU1oL2pzN3pJVDhZRDR6N0ljdVp0SzlrbjVPTUR2cXpUNWkwOGpRZGNwdVROOGoyWnA1UHVTZVVicFZzN0VoNTNlb3VuODVqY09jR1hCSysrKzkzdjN2aThyLzdxY3crKzVkTXVuSC8wa1lzWDdyL3ZRbmRtNCtMeSt0bnp5MHZMNTFmWFY4NnVyNjJjMmR5YmJHeHVkZXRMeTh1cjNXUnBWWFZYOWlaN0t4SzYzSFZMUzhxWDl2WjJrVG5aNjVZbTNkN2VaSmRzZDg4NlpPT2l4eWdVQWtWSSsyZ2lwSkxRQjdDWWs5KzVpRm0yTEJXUzN6a25wUjBkeTlMMHpKbXUyMUxoeXJWU3I2bS9ONlZ1eXJvVnpUeXFTeHVHZGNwNnU4THJmejllT0dTNmpwajNsaVp5MzU3NGxBc1FYbzViMmhYUDd1N2U3dTVrMHUzSXBkdVN0TDIzMjIxMXV6dGI5OTNYM1Z5ZTdOMTQvZFh0NjV1YjI5ZjJkbmV1VEc1ZXU3SjM4OGFsM1V0dlhONTU1ZVZMTnovMGk1ZDMvc1hmdmZyR0J6OTRRMDF1RlZYb0UvcksvYVVjRmZNUVdHRndwTXpIc0luMzJpa254YjJtTi9xMnVpZE1QdTJnMHpSZ25OYS83bHYrMGtPZjl1dC95NU5uSG4vaW1kV3o1NTlaV2xsN1c3ZXkrcVFHM0dPN1M4c1BhT3hkRUh4R2xWWTdYU1F4YlRsV05kV1o3ZGQxM05Ud1FTaURHaUFIT2JEeFFpZGNXTUI0b0dlWmZCK1BrQzE5R2crVHBmSUl5TGFuNGJQTmxnZVlBSEQrZkFTQVM1ZDd2UWFUdExTVE9OcE1PSFByMGVpUStKcGo0a2pPbUdiZGtxZnc3OE1KZjJCUzM5ei9RTmowK3F2cWFQVTBiZG94UkpXOWJtdXYyN3V1L1BKa2IrYzFSWklYSjl0YnorMXViWDU0OStxVlovZGVmZjdaNnovK1E4KzkrdGUvOFJWeDN5enR5RU1PQ2tnNjZDaXNwaWQ4VCtWTWxuc3R0VG9ubk5HYmNoNTBQY2ZaYi82KzczdjZ6ZTk5MzN2WEgzencxKzR0cmIxUGsvd2QyOTNTbzN0cjNjcTJ1RGMxMmpZMWFHN3FZRVhrMkJadWgwTmR6N0VyZUhXajY5YldGUUFVQWE2emhpZ0pIYjB2bm5hVVFQTWdCRkJLV3NJZ3dOV3lBUE1VNUQ1YWc2ODBBY0NITHNOYjZpd3JzRjI0SUZzVnlCd0FVbzdvMkVSSzNuSFpiUlk1aHMzYytFSmxKam5KZFFXM01pb3NlcmFSY2dabElZdVltbHZvbEZNR2dOZGVpMzZEeFFOQko4dlFDTkhPd1ZONm9xazlLU05tSW1WMk43dnR5ZDd1UzVOdTl4ZjN0bS8rOU43cnIvN0UxaS8rcTU5NTRZLzlybytxaHZaSERnVGNMMHMxTVNGaGdRUDFVbVh3cHo3aGtuc2x0Ym9tbkJNL2Myelplc2M3SGp6M0o3NzNYL3lxQjU5Nnl4ZnZyWjM1amR0TEs1Kzlzeks1YjFPMXJtNnFSM1ZjMThDL29RbnZ5YS91Wk1KdmthdjdPQWFUWDBJcHJ5c0FiR2piZkZWRDRocmJaclFRTHowdWNwOEtEbnlic3N3Z0wxVXJHVnJTS3pKeGhkRFNCM0JEYi9ISXlRbVZNcUZ6ckdnNDMzY3hBc0FibC9xMnN6NzFTRmxPdUpWWGFRWEFCeFVIWEFwa0EzeWhKUzV6b1FkMVhBYW5ZK3d2YUNUd0hHMEFvQy9CWmZMRXI0VkNLeFVaT0V4dmdzS1NmRExod0pDdHZUZDBoZkZ2OW01ZS96LzJYdmpsSDM3dWEvNzluKzVlZmZXS0tHd0NxWjNtWmo0d1EvUjdJclYrT3MwS3QzcVdycXZYYkd6VmNQNzJuL3oyYjMvaWZWLyt1OSsvZk9HKzM3ZlpMWC91MXRwaytaSTJkSmUxV2pQeHIydGx2OUVjVFA2YktwTXphSnhMa2xkLzVUdGF4a1QyYWtZQU9IT1dZOUpkdnJLbkFDQUdORkVtVXA5VTFyK1BIcmtmZ3VlNEtaM1J5OUFHdHk4VXNja1Z4UUZaaFJVTjQvc2ZXUElPNEkzWHNmTGdsSFVuTWpoZ25SMzlwdGVSTm9VUU9neEx2Vzk2dm1BUHZxSGViUXN0SldVbS9RSFpzcUtSOE5wcjZqTnQyU1psMXNNSEdIVURxR1dLUWVCT2pabE1FN3hFUUZpTG9MQjNjMjluYVcvbkovZXV2dkhkbC8vNVAveisxNzc1ajM1YzNPd0lxRVgzMDB6bXJXb3RMSmJUbDRyNXAwK3hScVBVa1R3UEFuZXUrcHQvNXU5OHo5cysrei80Ylg5Zzc4ejUzNys1dXZUMDY1cjByMnFGdnF4SmYxV3IvRldONyt2S0NRQ1pFd2h1YXFDdzZtOHFaOVhuTHBPMys4cmRjenBsRDdLbFBYZCtxVHQzYnFtN2NtVzN1M1pWZHdsU3MwYlpld0tVTFN1ckV3V0E1VzVUVjhlWGJoTUE3Z1V6c1dWNWVkSzkvdHFPQTBEMkEvM1g2eThvL3BVVHppQXFCMWR6b3dwT2c0emRnWTVsWGZwNWg3QzUrOUhkYTFmKzU1cy8vcjkvNTB0LzRzcy9JZ25zQ0VnRWdEWUk1TkRKM0V5bjdXUWZuRGFsR24xU1AvS2M4T1NzK2x0Zi9aZi84c08vOVk5KzNkY3VuYi80eDIrc0xUM3hzalpvcjJqaXY4RjFyWTdMT3E1d2FQSmYwd3lQSFlBbXZXYTViaVBYRzFwTmV3YXowUmJQQ3Zzck5RQzBmaml0OEVFQjRORDZFZ1dVSWhEb013Y0NBcE5mYUlJQU93UUhBdTBLQ0FiYUxqNC91WHpwMjY1OTcvL3dIUy8vdGYvc2s4SVFDRElJdElGQTZMcU9BSitxTkcyc254WUZVemNtUEFmbDNPNVB2dVBESDMzLzJUZTk2UnR2cksyODYwVk4vSmMxOFYvWGl2K2FqamQwQUYvYTNOTU9ZRS9iZmsxNExlSDBTcVlVbnVYYjVZc0FjRHNQM1YzNkhRZUFzZm9FQVA0MDh6TVlPQkFRREhRczEwQ3cvYk43TDN6aUwzM3NpNS8rdmlLQ29jVTFWUWFCZHRpZHV0MEFFK3UwSlJ5WUIvcmx3VFhYOXAvNW51OTU4bis1Zk8wN1ZwNTQ2dSs5c0x2eXJwOS91ZXQrNmZXdSs3Q0N3TFA2T091WGRFUHJGeS90ZGgrNXZOTzlxQ1gvc3ZiNFc1cjhlRDZGa2kvU3dnTzM5QUNYZ1hySVlIZG5wOXZtMEkyaGJTMG1mTVRJc2FYN1Nwc2FiN3VUbFhkTjN2VFUzM3ZMVDEvN2prZi8yMy8wWnNrVTFmY0hXS3h5N09hUXkveVdUYytUZU5vVVNuM0kwM21aYjMvYnYvdWxMNzN2clcvOXI2K3NMTC85T1UzNlQ2b1RQcW5yZmVlQ1g3dTUyMTJtazdoZ1YwcGhMdHpoYWJFRHVFTUh6cmo2aWU4QUR0QjNvdVYvU2NleVJxVjNCSnJtUEZPeGNrN2piWFBuUXpzZis4alhQL2NsNy9qSHFwNlhCTzF1SUhjQW1SL1F5dnpRVEs3VGtuSyt0cE9mS0RwNVdENytyaGRmK2M4dnZQMlp2Ly9penZMYmYwR3Iva2UwNHJQcWYwaFIrTmxMZTkzSGRLZnZOZDNHWjZ1UGdCUjJXb3hiNlBHcDRRRTlpTmp0Yk85MFcrd0lOTFYzMkJIb1BoTzdnWjNKOHR1WDMvck0zMy82UjEvNWM3S1d1Y1V3Wk9lYXU0RWNscG1MZEhmVGFRa0E2UkJ5ZE9MQWNkMVgvc2svZWZHL2VmM0tmOWM5OHVCZitPV3IzZHF6V3ZtVk93Qjg2UEtldC9xdjZMTTh0dmtwaEhxTHRQREE3RHlneXdNRmdtMEhBdTA0U3lEWTBnTmkyNXZkR21QMUxUOTE1ZHZQZitEcjlhaVZyejR6QUdSUVFMVlRNVnhSN0c2bmRNUjQ4dS85c2IveE54NzdMWC82ejM3WHpmTm4zdjloUGVMNW5DYit4M1d6aitOalYvZTZWL1JaSGgvalVUR0Z6TktZdGJWSng3R3BtNHRiK3ZpczNEaWVaWk16azcya2o4dzJ6aXo1QWFlYk4wN05qdlRZOW1MTGttN1kzWkF0WEs3TksrbkxDcVU5alVDMVM5dDhlV0hwNHRxN3o3enZON3h2OHZEalAzTGovL3BCN1ZXOXFJM1Ztc2V3SGJjNUtOL3RBSkFPSUNjNm9nOHIvOTZmL3ZidmZPTFgvYUUvOU4zWE50YS82RmxOL284cnVqTHhueU1BNkRQNFM4eDhwUlRnd294UGl3QXdZd2ZmZ2ZpN0ZRQ3NzbVk5ejVDMFM5R2VMZ3VXejYrOGZlUFRQK2Z6Tjk3eW1UOTA5VWUrVnhjSlU0UEFIVmg5NTFWUFF3REl5ViszL2F6OHYrNFBmdTEzWDlsWSsveG45UWxydStwLzR0cXVQOWFiNThSUE55OENRSHJpOU9WM05RQVVkM2oxMXhPUy9Ia1RvaUN3ZEg3NXlkVzNmc2JuVFI1NjdKOXBKNkE5N09rS0FuY3pBRENIeDVOLzhudSs3dXN1L3JaditIUGZkZTNzK2hjK3ErOW01Y3IvVVczNVg3d1JIK25kamNsUEh5OENBRjQ0bmVrMEJBQTg0MHNDaDRBK0NFd1VCRGJlOFo3M2JMLzYyai9aK3JtZjFCTXFIdmRtcDBwVEJqZlh4S3A3TjFMTzRRd0FCS0tsQng1NFlPWEwvb3YvNm0vY1BMZnhtejZrbGYvNWNyMy9VVDE3LzVJKzArZmp2YXg0TjVSZXRMbnd3R0U4NEdjSDlISDBydTRGY0lOd216c0FGelorMDhOZi8xZi9ldmZnZzF6aU11L2FBN0YzWldqZmpRQ1FocllPSUFEcy9QVVAvdngvMmoxdy9pcytvbXYrVCtoei9lZDEzYy9OdnBkMXM0OW45TE1pM2xxa2hRZE9zd2QyTmZ1M2VRS1ZUd2gwYkNrSTdEMXc3aXVmK3Q1LysvWFNXNWpUOGZIZ3ZBTkF6bUh5REFCRXhPMi8rYTkrNW5lc1B2Ym9OM3hNVC9KOVFoUC9FNzdacDBkOEY1TmY3bG1rZTlFRDdBVDRacUtEZ0o0WDJORzRYbnIwMFc5NDB6LzZtUytWUFR3eDZKMnZjdVpDT3pkVW5FK2Fad0JvRFV5RGZRL2lqLy9OYjMzTHc1LzVybTk1YWF0YlkrSy9JRWV4L1g5Ums1K3Y1bWJGK2JoazBjckNBeWZuZ1YwZUhOSjY3OHNCM1JSVVBGaGJlL3U3dnVYaGIvN3ZueTZ0NUVLWWMrTGtHaitFcEhrR2dGU0grY3pCNU9lWWZONVhmZFZmdkw2Ky9KYm50ZnEvcU1sUEFIangrcTYvcHJ1WS9QTFFJdDI3SHRCSEF6dmVDWlFnb0V2YjNUUExiem43MjcveUw4cW9uQWM1K1hPNFp6NXp1K2NWQU5JZ2NnN2FaZkp2LzgxLy9jSDNUKzYvK0h1ZTA2dWNYdFp6L1JFQTlIMTdMZjFaU1h5bklxWHlldFBucDBUS2p2aFVNQ2I3NWxUYVFoQm9kZ0k3ZkJoNDhmenZmZFAzLyt6N0JiV1hBbk0zdzQvYnpzbHBhVnhPL3NtWC9aRS84c2hENzNqbk43NjgxVTFlMXFyUDhkSjF2YmxSWCtyaDFicW5LZms1RDNRcWVxRWZCdDJUU2JyYnY4V2UwK2JyWS9tMHNjVjlkU3doczZ1MHAxZEs3V2pFOE5YaUhRMGN2VXQ2c3ZyMHAvMzVCNy9pNi83UFYvLyt0MnI1ODZKWXJLZ2ZEVktlYVpwSEFHam5DWk0vQThET2wvM1p2L0MxVzJkWDMvbkNTL0d0dnBlMFBYcFpuL1VyQnB5NnlVVlA4QjRJbmova0V3bHRWazZkamxMcFVLbTFCWHV3NVY1T0RERHNJT2REZGwxcW44cStXZEV1WUdsbjJZK1E3MmlzTDExWWZlZlpQL3pudmxZQjRMK1V5c3hGdWlaTkFaNTU4azI0R2JkQ3YrVEI1TWZRcFQvNHpYL2w2VS83cmIvOWI3MXdZM0tlWi95NTZmZWNQdko3UTkvb2d5a3JuSnBjM2JHdTd3R3M2MVZhL2k2QXZnOXdLdlU4ak85a3k2cWVteit6c2VTYlV6dy9mMnI4ZkJqOVJ6ejB3MW5ad3VwNlU2dUh2c1ovS3UycHUwZGVOaUtINC9PVk0rYytjMlhqM1BkZi8vRWYxaDB3SnlaK0hyRE1OT0c3ZVNYYXlodC9PMS93dFYvNyt6YzNsaDU3V1pQL1ZTMUJyeWdpTXZteEdNYlRlSER0bjhkcDFPOG9PdUZuMzh1UVRVZXBkeHA1MDVhOE4zTWFkVVFuOVBTbkFucWdUWnVCYmxmamZrOXo0TXo3ditZUGlNU3pBY3lQWklXZGxIbVVUdmc4NjBzQTk0MTBUcVBJdXkvL1UzL3F6YXYzUC9TQjUvWDFDRjdoOVpvYzhhcFdvVjN0cldldDBISDl4M1ZsYThReXdlQzR3dTUyUFd3cCttTVR0dHpyS1FlYWJUbkY5cUFhNDV5Zk45cVYwbHdLTE4vMzBBY3VmczJmL2g4dmZlZGZlMEZrdW9RanJjaGNxSk5QODVwdjlFOGF0dlBGZi9qcmZ1Zk9tZVVuWHRHMVArL3VlMVZPdUtUVm4ydTMwNXJvaFEyZEZMeDlENkI5b1B1MDZudzd2YkNGQTF2dTVjVGd3ZzUyQUl3aGJxdWY1clRFdlFETmZnNzlLSW0rTmJqOHhJWGYrOGQvcHdMQXQwbHY1a25HTTFrMDJ6VExBSUFScERUR0FlQnRiM3ZiMlhPUFAva1ZiUGt2eVhoZTRmM2FUVjdQSGRmVVVlWDBuZlBPY3ZaSXJxQ25UOVBiYTRRdFRCWnM0YmpYUHdWZ2dMVzIzQXYydEx1QVhVV3M1WWVlK01yenp6enpkNjQ4KzZ4bWhvUEFYRzRHTWlsbm1YTHlrOVBXN2dmKzFyZCt6dTc2K250ZjFiVS9yKzUrUXdIZ3FyN2IzektlVmhoSFdUZU50dE9xNDJIMXFyYWtUZmR3ZmkvYTRoOC8xUlRuaGlYM0Fqck5pYk4vNnRzK1J4QVQzNHVsOHJZN1ZUejVOTXNkUUdxTEVXblE3cHMvKzNOKzg3Witjdk9LVm45K3VJTlhkL084OUR3VVNZV09rL3NlQUJPL1RQNTcvUjZBOVMvMmZFcmNBeWkyc1ByZkcvWndJMUJ2SGRhUFNPOXh6WEsyVzFuNzlIZDlzYUFmMWNITlFHNEtNbmRtbW1ZMTcxTHhqR0FPQU9mT25UdXpkdUgrTDJMNzcxL3MwUTdnaWw2dHhYVmJWcGlwdFhjZ1hPTXFYdjBrZ0dCd0wraDhrTG5ZZ3IreEkyMDVpUGRld0xlMk1KZkc5d0J5RUdJTHRwK1dwQjg4angwQS9hQUJ0WHord1MvU1R6YWYxVTlQYVdtY3oyWEFyQUlBUGs2L1o5Nzl4OS8wVFUvdHJhNS8xbVU5OFVjQTRGZDcrTkVPQnVGcFQ1NHNVcEw5R2VybVRxRFgreDR3SXBWbHdIRlVXKzRoM2RPR1VkN2FNdkdBWXRqMUtTM012S2ZjUFVnajN6Y3ZmUm1nS2IrMHN2NVpELy9SYjM3Nms5L3k5YjhrclhMZXBDSGtKNjcrTEFNQW5rWHB1djEvMTIvNExlL1pYWnRjdUtwSEh2aDEzcXM2K000MERLY3hwZWZSRGM5NzBnc2dYOUlnTTcwd2didG5rblJsbTh4MitkN1pNdC9hdTJsTDJyTkhoK2gvblBaNEFtZVVwckNOT0daVVJFWHZBdlJwQUJ2K3M1TUxhNS83eGU4UjlBczZtQmFwTFBsTTFKeGxBRURwUERCbTcrTGpiLzQxbXZQeEE1M2FBVnpYVzFQb3Axa3FvZVpPSlBHcUo0eHhyNVN1WURkQXQ5eXFkMmJTYTNkb0VUbzU2QXBnc1dUczNhc0ozN2VKUHNsK1NkL2JWdUU5R0ROd3U5VFd2RHV3QXdDL3RDeWw5NlRvOGtOditseHA4ci9xOEZCVDNwb0luR1lKdlBNMGk3bVhDcFBuZ1RHcksrZlB2NWZmN2RQWC9CMEUrSFhlMDVEUW90VmtBRE5Eb0N2ajRQTm1CaGlxcDNFQzc2bmszWXFVcm5wWDRKNHl3OHFpT3YyUS9ZTlJwY3VxZmVNQUIzOWFuejhqRGlid1FIM2ZSbWwyWjc5RFVBT0tjY1Y5Z0tVekY5Z0JuTkdSOXdIYVlYYmlQVFdMQUlDM1dsODZBSC94Qno3d1lMZXkvdlpyK3NqamhsWi9EZ0tBTmdFRFppcmZyY1ExV2F0NHE0Znh1TDhjYkRXZE1oZWhnb1dVMlVINHBNODlsMEs3UElUQ3dQTng2alE4bEV2YXZ1STYycDJuMlUvZlFFdXJEQ2RDT2Zpa01RRXpKWjYzK3M0cjZUTUFCU3kxclA3d3B3RXJhODljK0xLdmVmRHlEM3puaTlJQlJkcWpWL2FFRkp4VkFFQzlnZUx2L2ExZjh1VDJaUG5oNjRwcitpRWZCNERUOUxZZjN1R2EzWjdYODJrQVl3dGQ2U2Q5RjZnN3E1QzJvbDkrNDdmaGZLa0pJOXU0ZXlUWkRobHluejVzMG9jdzNVUmZjcnFYRTlwZmtDMFRIVmZWSjllMHNPUVB4dmhudmQwL0RFZzlmU2Q3V1pFS3ltYm5yS0lMd1pNU0Y2WFpuZWtMZ3BkamdCYkZwWlhsaDgvK2UxL3lwQUlBandXalRxcUVFc0FucXRwSkI0QlcyVlRZU2ovMnpEdmZwcDlMWExucGxUOVcvNG4yUFNldEFJMmVWR0xpNndubDdyd215enN2VHJvbnowKzY4MUo0YVcxSlBjRXdHaVU2YzRSeWNTcnlBTjVwOVVlNHNaTkg1T0dRS1VUWEdWVjB4ekQ1ei9JN2xpVWQwWWFtV29KSHprZHFEZXRQSVJvMXdsTmtBbTgvdHVxZDVldDZ2dVNqK2dHWjUvVTdFbHl1RVFqd2VGd09SR1hPNEd0UDFuNENDQjVxelRMUmtvTUFnTWFhM2hPd3N2clVwNzlOcFovUWtVcGtMdFRKcGxuTlB4VE9BLy91bm52bzRiZnhJZ1FtMUpaNllYTjhZWGF5ZGgxUld2UzhvN0JxbHI2d0FlKytmNm43TEMyVlRQd3ptaWZuOVZLQWRlWDhJaXdHdWdNUGFBMTU4SkNpaFlCbmRSNjBwVUtXNzdROWRNOWQwVHpzUU4vVTNlM2R4aFo0NFdPaWIybUJ1YjQ1NmE3cGVNZjVwZTRGZmNuc3AxN1o3bDdTZXliV05OdERyaGdGc09lakRrTVJQSWQzQjJaQ29nSGxzMHUwRVBjQnRBZFZrOTZGUFBEUTIwcUxWcWZBWmoxcFRVNDZBT0MxR2xBRm96VEg4c3FaODIvbDVoOFRQNFBBYWJqKzU4b2RwUWRKQ0xiNlgvREljdmMyRGFJSGRFdm1NeC9xdXZ2UCtsTE5BNGJkQWNlK3VrWFFRZmhCTzNNbzRQempwdE5pQS9vZnhnNzA1V0JDWDFjZ2VFRWZONis5T3VrZVdsdnRmbFN2bmZyd2xkMU9QNG1vRlBzM3JyK0JYVS80N05QczFMZ3NQRXpMeUR4K1d0Yk05K1NYSXVSTGErZmVLbWs1K1ZHZ1ZRSVlsVThrblhRQVNFVlQ2Y3hYbGxmWG45aFVwM0J0UmhEZ3l6KzdzaU1ybklnMXh4Q1NDckxDSmN3ZDJjOS9lTGw3KzRXbDd1MzNkOTE3SHRIV1VrU05uMjVMOXpENDhvWnZPcFZ1b05NT2xaTC9VTXlIWTJyOTExN0RVcHZtV3ZyaEpCNkNxN0czQVE5UjhkWXNyYTVqVzI1ZFUxUXE2NkRlbm5ablN6cmVwTDQ3cDZEOXk4OTMzUmMrb2tzRC9ZNzNDM3JaN0xJNm01SEhoR2VTOHlLUnZLbUxQVDZLTW96UldhY2xLMTBhMXR6UXczSnZWbWxOQjUrYUYwMEV6U0NkZEFCb1ZVUnhLLy80NDQrZjBaWE5JNXN5aDV0cC9GcktMdGYvOHUxTXJXdTFPU1NNZnF6NnoyanlQNmtmZDM3Zm8vcStndXBlMGRPTHUzcHIwWkowMTlpeTNsTjFsMDJ6SHpLSE5LYXdWVDByY0p2NnA5Q0cxTmdtSEdBSGZpZDRxNHY4bWZxMlJ2ZXFwdEZqMnIxOTRxV3UrOXlIVjdvZmZHN1QyLzVsSmo1OG12dzdpdUJjSExBN1FMVEZ6N1VUbXgyQWxGOWFYbjJrZStLSmplNzU1N1hVVkpVT3NGb2NkNUJtR1FCUXkvNzh6Qy80Z25ON1M4djNiMnIxZEFEUUpPUFhWS3V6NzhDQUU2bGFCanplNXFiUVordTZuK3Q5Vm41KzB2V1N2cms0MFMrNzZLMVQzVXE1d0duSFIvYU1jUTJoQVU5RXphTUtTYjFxUFNGYVhPcTNENWVFVW5GVXJPTG1CYlQ2dWMyUkhlQmFIWUVaWjN6a3ZLVkZoL3MxWjNVWjk0aTJjYzhvdVAvOEczbzlaOXdWZERCbkV1eHFWN0N0bFppMk1zQVBuQ1g4ekJJS3M0MVUrL3kwdUNMQS9lYy82d3ZQWFhuK0gvQ2pZcTM1d0sycEt0NVptbFVBUU5FOHVzYys2NzNuTmQzUGMvT3ZEd0RpT0ZGVGp1WUkrMXhWTkU2c2hqMHI1T01iays1KzNSbC9RcXYva3J6RCt3cjIxQTM2K1hrSEIvZlRxS2swQTlwcFN2dlVFV0xLazdCOU40aStyODRwTUdpZlR0aUJYajVOVnpBL3JtVzNlVTNIdXZyeXFtYjIyODR2ZC85T0FZQUp4ME5BclA1OHBzT2s1NTRBWDB6bmNvL0VaU0h4bnVJdG1vTDFqcFBIbGRyajBsSjZuVjkveDdzdlhQbmhmOEN6QUtTWk5UK0xBREJXZHUrUk56MTVZVyt5dEpHVDM3bU1WVGZjdFpSSzBza1o4ZEhyTVFXQUZSRWZQcStCSSswMnRmWG5iY0FzR0RuQk14OHJmeEIrekhkWHk3TDN3T0hFQUx5cnloMis4VnVaWVNucUw3YjBYRWl2cWw5NVpvUDdBZzhvdUNzR2RGYzArSmp3VEg2K044RHFEejlqZ2U5SklKL0ZRYy9uT00zU0w5YURCckxSbGFXTmxVZTVBSFZDZ3p3SzZ1U3lXUVNBMUs0cWZlN2hSeTdvMm14VnIwYVBhelRsK1dXVVpMN2JPY3B5YStnOEgvRnBzS3dxMXlkSDhUVk5FYm0ycElQSWFnNmN5WVFzRkw2K2VOY2c3R3BUNnQvaURvSkhKaDNFTmpmOFBsdGFCUnNpSUNSeWdya0R2QkFUK2xXUi9LeG1PaStoSWFycmJEcjM0ZmhVYWtVMXVTbElvbDUwT01Ec2t4ZVFzR2wxNytLakJJQTBZMmFObjJRQUNLK0ZxZ21UNzIyY1AzZUJKMzU0N0pRZ3dMYXJmUVJ6WnRiZFFuQXFpSXZ4TXJkYkdRd2JHaFIrd2srOXp5VUwxMlFNbk9UTFRvcCtFajVUZzJqQXBONjFQSFdwOWg1U2s2eDNTUGE1c0tWT1UyMkJtQVRsN095WTFDUmdRT1kxK1lZQ0FKLy9yNWtuVm44bXZ0N1k3KzAvbndnNGFKVDZ5QkJxdGtrRGE0TENOS1RHbDgrZHpSMUEyeTRhbmFncUp4a0FXa1dCcS92V3psODhoMjA0blpXVVFKQ2RNcTQwanpJZXpJTkp6OEhYZTdYb2U4Vmd1NC8yNkFrams5NTlVMkJoKzhzQkZ6amRPdEdlVXdVU2NVSzU5RVh0ZzlKSk5WdmxWT0NnRnU4QWYweGJCdlpUU0IyVkp3aWErd084TTREeHlLUm42MjlZT1o5TThkSGZscUpGKzlndzlUaG1sVHpHSkp5Y2hwWTJMcDZqR0tYWk5UM0xBQ0RkUTNHOTZPQWNsbmoxMTZRaTE1T2FweUpsdExjeTBvbjd3S3dVVEhoL1VhYm82UTRTVE5HZFZPQTZzc0JQczJpQUhCU21jUjhmWjMyYUlkcUFZNkhUU0xmVmJNQXdLSXpGMzNtNXRXV2FzcVdGQVlrQ2FwVzhncFlWTkhEWmQ0ekJmdUwzTndTWG1maUlLZlh5aHFCUU0wMXIwaWUvRTRDZTNlbzZBWUNVWm1ZZTJCTTZuM1FBbUtya3h0bTFzMnU2RzdQR1k3UWJmQ1F6NlM3cWpzeFU1aE15N0RCaUdBem9nTU41SUlUeWlrWUZPVGdmT3JGcllWZVFaUThpNkVZRVhrVXdrUld3S2ZYNG1VSk5pd0x0MzMxT3h0S0Qwb2hTaWlQc1FaVlBHRDlzZkw4dFF6c3FuV29VU3U2K0ZFd3grKzNNaGg3dDNsbnlUc0M4bXZScytibmhSOVhvNi9oSTBHSXNYSVFacGlVMXluMm5GYzNJZGQyQTNyNndxa2VZRGt4cDRZRU1oeVdjZEFBb2JnKzNTZ203YnUzTTJzYUtBc0M2amcwRmdETXk3Wnp1dE0zQnJ3ZjZJUld0REVLQVcyRWtGSmdCbzhEc2daTjVTK3RoYXZhSkVpdElwQUJxTWRFenlzT25jWGFibkFhT1Bwd21ycmFQbGR1azgwdGpXNnhUYlQ0MUtUczJGZUhuTUY4QmZNa3BCRHM2Q1BUTCt2cHlkMEc1UHhrQUxab3Yrd1FqZ0IzQTBHY2dacHZRaFFEQXdkcS9kV0ZOTTZXYWhQWXpTU2NkQUZCeW43SmJ1NU9OaVY0RWVvMTNBZXFobWl0WDlycXIraTJBZll3ek1YRy9VUFc5QndrNUFCL0RKTHpEMHo3U3JQSUlZUEo3UWdzMnZoREhjRkRqbkZ0SW1waC9RclBvaURyd2o2Z0VFaktJaGJRakNqZ3g5c2FXSXJNZk4weCtkbTVORUlDb0ttUUZkQUJQRzhEZHVMN1RYZEp6M2F2dTZxZ0xONWQrcnNkSnlTK3JUNXpLQlczYVNaOTRNR2xWSDFud05YTjlqNm5idnI1RUFKaDVPdWtBTU5WSE96dEw2emYwUU0xMWdvQStYTCtpSHdHOXBKY0NUR1dldWNsOUE3UWZnN3dFSTQyU25RZU1OVk91SHI0RUVJWkIxRzc3V3hpaUI1bFBCUTZNWlJXMDRWbWR4djYwVlFOOTFQS1lxVlZtcEdSZm5BYTFGVThlSHF1NXp4WXh3SU5tQitZaXVBOExYM2JIcHQ1R2MxVnZwZVhiZ1o3MWtnREl6M1d0SUUzL1liRVdnZ3FmdkkydHhGVnRBVmEwL1dRSHNLM0F0SHR6d3VNbk0wOG5IUURHQ3N0OWVpeGJEemYzUXdpTVArbHd4NDByekx2c3FDOTkwSSt2SzZOd3J0NU04SG93RUpveWVycE1UZU4xQWxmS0xzejVGQnEwamU3SHRGUjNUb3NBdm5XVk1mZk15dnZWYUREMGsyWW12dGE2clVtcW5KbWFCbVV1N1FnQTBVL0ZOSlVoYzZWSFloT1ExLzdnR0FPYWcwNkpMOFhaWnlpbVJEYVpMS09HUVhDelNyTU9BT2c5bVN3dHIvQXhTMDZnV1JseldMbkZ6NTdvd0F3dGZ3OEFCWnRFS1hjQm9FMHVkbkJaUUVYWEtMaktBK0JrYWhiNi9BQjB6M0JFS0EzYVYyMUlvTm5ZOGV4anJBanoxRklDUTRVcnp4Q2R6SGVXRDFVdXN2WWpFK05jZWhESVNXUXRqVDV6RUlCWTlHMmZRQVhGSjBGTWRnSUFNSGYrbVJqNVJDQ3hoVlNxUitHa3p4TGU5czFraWR1QjFSUmFTN05PdE9WWkJvQkc0UWtmcjhZRVFuMFZjRzdEY0tKR0hWWVlPbTJqalA1WkNlaDhyLzZCc3I3akFOQUdNYi9Jd2J4Um9WLzlEWVVhSXMwOFpSdjdIT3FOODZENS9aZ0JXWVZHZDVkRzlHeHJoRDZ4WXNvZjJCTElRTFhuTW9hRXl0OEN5R3JrSE5sL0tSWTl3Yk1nc1MwbGtMUDlkNzlDOHdEUUEwR0MrWmpRdHduYXlzTFBKS0VVN2Vnb3VyUnpFeXFKUERtTnVOTlQyOGlkeW1ycnA4TGdlTFNPZHg3VUNaWE9iaXZNRTY0clFtblVYcFYrdnROdmhYdGRjd0RCbWpiMHNHb0t5YVNLSnh2N1BIam9VVU1sbjBYbVRiQUVvMHVSYisvN1ZGR0hiem5xN2VQSCtKckM1aWkyK01wd1RDRGE5am5GdWhCNG93VEc5bDlOYU5tUFZSTWYyQU45dTBLZ3N2dGF1YS9sbGNNZmRjSmRCSDM5bDQvK1loR3dNT0g0eGlvM0FuMnJvSmM4RXloMVFobkRtak16YVdna2RGWUJJSnR4ejJseThQWHJHSXpPNHlrc0U1Tnp6cmtIVERPbzR6dmh4ZmxGMXh4QURDSVNaVmRwNkdHWEpvUjVnaENnejJGempxaVE0dlB3ZERSUGpMbjNyZW8wWFVjVUxmVTFlbWlvQWFYUXVNVVh6RDVDSzZXRjI3ckhod2ZOVWJBdE1jbVJhcFRGSnhTNXo2Z2pnSXdqQTNqMkc5V1k5QnpRK0s2QWR3R0NTZHdEWUx0SzBVRkRlZlkvOUZrbGRodHRCMmdwSVFDTXNDZmYrcXdEQUJyckU0NGxmZ2F0TjdBNCsrVE5DWStONWJaelFZNDFPVlhJYTNtMmVwREFlNklyOStBUmczNi84UllUUHlxeEp1NExBdGxXTmtZYlUxUFBRSTg3VlNBUjQzdy9RNHRCRjVkOTZ1WDNVZ2JjUFhvTXFTcTFiODg5clkyeHNJUEtyZlRnMlk4SkxRSlB5QXNvK2FibDRPaEQ5eWM1b25WcUp6d3dsdzk4QXNBWTRDTkZnb0JuWDZrenIzc0FxR2NsVVZTM3psMmU4V2tlQVFDSDg2aDkzeEdDNTMwUEFKL2kzVjMxWnNBTWFtL2U3WFFHUWlnSVlGUjlGSmpIUm5PQVZUdVFvb0xMQlhiR2lmck9zcVVvcHd3ejVBa2tiR05pcmRvVDhrWlhWSzBNS1dtVWwzckpwbUl2Q2RZa2pLb2xaVUFlRlBaWHVHUE1yZVJMYTVIRGRnSHF2d3JMb3VoRExFT0d5c2xiY2dkeHFrSG1LSWtiZ2VzcTArLytDQkM4eW5FL0lMNGx1Q1JoU0c0WEVOaG1rV3hUMGMrNlJqeWFSVk1EbVhNSkFHclJZOC8yNldTbkpuS2d6cDBYb28yYzVLekxPVFNRYlRVYzhYTTBtQjZ6VlNpVitDOUg3Z0JZRWVxTm91UVJvNi83WFNVcTZPektrYnZnOW9HY1RCQVVhZ3h4aGRhVEJMa1FCTUJVMDRTZU1lVHNPL2Yxeks5aXJtVDdXRnRFMFVQY3h0Wml5ek5IT0hveSt6TmNram94TWJFcFhXRWZTYmUyUEFnQVJXL1RFYUlqNnNSczh5Y0I0SVVrWTdIZ2owQXc4MVNhb0NuYnRjY1BoUlgxWnRqNFhBS0FKb3AzQUhqVmRzcXg0ZHlUczZ6NHp3S0JjOGpZb2FVWndrRzBIOXd4b1pqSU1PZ2tJSDZzTVZZR3ZnekVTMElJQUZrM0puM0lxVEJWczM2MjFjOVdpeTRjaFJvOTJ4YzhKUHNpVUl4TTQwd2RMUDlhbWNLRVdxY3NpMzE1QU1WS2hvcVdHNmNCUnhSc2lNRjk0b1VkNDNvQkIxTjZubHRCUS92SG5ObVhLSjhCQVo2RS9RbUEvSk5TMm54d0NTQTE4ZHRTMmRHeCtyTVRaZUw3eFNDTVM4SDU4Ujh3bG5GWlFJcXp3Uk0vc2NCNENCWEowbk9XelZYOTV4UUE5T0dLUElrejAwaWNmeElXdGpKaVVzVExIa3RUcFUyMi9ucStXaWUyODB4YzVwUHJlcUpxK2hZRnQvVDVFTytLNE9VUWZvVzV5cHVGSHg3ellVYkM1S1hzTmxWMkt2Z282R3gwMEFxSFVibkNNQUFHdjFOWERIT0dza1Z1eTFObEF5UWRlQkFzUUlTdHZRcEFTRTVONElnMEhSdTB0RDE1VHk2Zm9zZllCckZVbEd4TlA5Zy9Vc1Q1Rkh6ZEFUVEtldXd4RG55VnJacWE0R2hRZDNsQ0lTOERRWm4vdmx4b3hKd29XQU02aXZod1NLQU5tM2FpalRYQzVoUUFpb2N4VEFsalozTVBJQnF3L3d6R2hPYzNDQi9RRjVIZTkrQlM5eG4zVGJxbnp1bGQ4WHJROHB5ZXRlTHVLeDVPTHordWwvOXRDSzhmQWVxMjlWcnBYYjFNY2tVakx3WmZXV1dLYkJ0VFRtWCtxUlNoT3pScE9aSXhQb1BlMU1pOHF0L2xlazJ2SFhwUnI2citwSTR0YlRsNFkwME03aGprMXFzb1p4MGt1TWNWUWhGTktWUkxKZ2hEbmg2elg4TURNZnNKaUhHNkJTbFpEcDIzbWtaWXBXcGd3elphaXo3SWRzRUhiWHBlQXdBVlNpVjZDSkRYY1h2MVYrZUJ5M2hBSGQrVkw3THI1RlI1Vm9tK3BSMXNjWnFnMmV6VFBBSUFwcFdCS1lOYUkrL1F2dFpEckU1RTlwcFU1Z2RJSDlNRS9xcG5WcnJmOVpZbHZSQnkwcDNSN2QzOGZJWDZLU056QmtZZUUzMGRRMTlqcWp6SVRyNGhGc3IrbEx6N0tYVXN1aTE5TDZwN1VUOWg5YS8xNHhVZmZHVkxyMDNYdStzSkJQeVZrVkZoMVloQWdQUndKclI5Q1NPY0N2ODBubVNaa25zQ1ZobGhkMU9jVXVQa1VMWXNHOU9zcVBZSjV3ZDF3QkJ4UzBTMGIrekp3dG1UdlBOREZPekZYZmFFTDBHRjg1aFJnMHkrM1A2VDg2Q1F4MG5qV2tUTUt0VWdReU54TkMzUHF0VjQ0bkYyMGh2SmRFQzFUWUNmdW12b1J3V1JSYUlEYzdYSUNNb0RIRGUwaC8vU3A1YTZiL3ljbGU3VDlidCtlSk5veHdFOGw4OVkxTTZ0VXZwRHIwZm8zbkp1cVh2NjNIcjNub2RYdXgvOHlQWHVlYjIxY3MzYmt4amVqZ00yVUdYMnBJSnRGVUlNMHhLV2pSSW9PU2tuem9nNnBSaWU5VG5BS1R3dDZsQk1iWVZid0ZQMEYzZGU2MU94NVVqWXVkUndQTkJvQ0k4RjgyQUhnQUR4NWRoalRESU9HRU80bW5zK1hCYjRHUUdWK2FRQWw4TkRHN01jTTNTcGc1VGFtV2VheHc1Z01QRXA2UDlFZnZLRVRrR2E1MFdBaXR5NlpsZjQvaU9mdnR6OStmZXRlTVhuYTFYNUJRL1lUa3RDLzdBaE5HTEE4YU1rSC9pTXM5MzMvTUwxN3BkZTMrcFdOVExaQmRTRE9xb1VnNzNrakI3ajhXejQxOEVoQ3lXUElFQWhlQUtLYzZ2SHRJRllnMnhiNmNUaGJBVy9GSTFrVWs3c0J1dVdIUmhrZXdhM3RLSG1xc3RLVGhEUXY0K2srZWFmY0V3QTAzU2lIYitXdXdRQjQ0V0xSY1pOenV4VWZ5UW5GWjFaUzBQQjh3a0E3WWZ2eGNDTXdrTjFEbGZLVHFUckRFdW1PMGtqOTZaVy92L3dyY3ZkTi8zcWxVNjc5MDR2VjhtaGREamhkNUdMTFNmdXVhakgwLzZqVHp2VC9lMS9zOU85b0pmYTgxWFJuUFI5THVOWStjdHV3Sk9EeXFUZVFWRXVad0tsMHdGME55NkdaQ3ZjK3pIN0dYcldPNEVHZXNWS1RsUFd1OUFDTnJhYW1kVUlDTzIzQXZHVlYzV3h0MEVOR0FsZTZjbDE0RVlIaFZMSDl3QUUrMUtqdEVTZG1TVzFOWEE4QTNvT2FaWUJBSk9jN1BDbUV5RGtVVmlPbEZtd2hKSjdpMGR0bGZuSTdxMjZ6di96djJxNVd4ZVJHM25tUFpMMHU4dU12Z1NDKy9YbXlpOTkrOW51YjMvd2t0NU92S3V2VTdEU1JTRGcvbkFFQW9BYzlBelBzbTU2cE9wVWpRK2dGazJmYnVlUVZFcEQ1TlNLaDJDWldnL2tnWG8xRVdzdzhXbXMybTNRUW9JSDBBeVdPNzRFb0MybzROa1ZlcDZCVUNJSTVQWWZPZ0VCSVNaWEpjMTY0cWRxS28zcG1IRnpWZjlaQm9EYWlGZm5VaUlZWU9DeWtNY3hrdW9rY3JiTTVEaVBuSS81L3ZBN1Y3b25kWmQvUTRqanlKZVl1NTdRbStNZCtsbnlkejI4MXYzVUoyN3FsMjAwK2ZVQk5rR0FtMVFFZ0FnRUZFb1F3QXNpVU5jSnB5UmdaRU5MMGlpUEtxVmlyVDlpVW5FL2FUOW1mNjJETUtGeDFUdlpVcVFJcGxIR1ZrcUd3UWZnMVQrNHhCSVZxTU5FcmdzUUNKVTlzV2xEc044R1ZYd0duLzFLSGZIR1Y4UmpoeEM4VkpwTjhrZVN0Ri9FQzV4TG1rc0FzQ1ZZVkt6QzBUZzNqVDJLcGRVeEJmRDJUUUpaL1o4K08rbCt4OVBDQ0Y2RGNBOG5kZ0VFenM5OWZGMEI0SVoyQVhxK1FUYnJXeFVPQWt6K1BaOFl0Sm9TeFpuOTNmRXd2dm9ZZjNtWnVaVmp4RVRubE5SRGljbThVQTVtU01aRDVrVlFHdEhVc3Y2ZW1hRjNhMThFQWdVRTZrbUVjOVZObXpHM3ZRZUEyS0RwTndCRXc3L2sramVlU1U5VHVEWEhLano1Z1Z6S0ZlckVFOWJaOVdyZjNZUlNjMGh6Q1FBWWhqMXBvTzA2cG9IWmdjakFhVVI0T21sYlBmMXJIbG5TeDM2VFRyLys5Q21STU9QTjUxZTZCL1VXMjVldTd2aVZVUkVFWWxCNjFXUHlpOCtEcHNBeEdYREJ5QkgyT1JNRzJ2N2svaG5YcVd5cUhQL0NIQ0NnOGg0VGtIeEw3azlWVUQveHcxNElpVXR0bkNNRG9PUWVIK2l0SXhQamhTSStLNXVGbVBqQzhkUW5lSTh0WUNvMWRTbk9KS21Ob25ib05wTkc5Z3VkU3dDZzJYYnllN0R1MStWUUdBLzYwaUh1U0FtT1FMRFh2VWZ2OCtQbXpkeU1PcFRHeDJmQ3JqTXk1dEd6eTkxemw3YTh3dkVsTWU2Vk04aVpDdjdDQ2lPSHlZK1R5K3dPSDBjWjhpQVYvdzF3bzBKbE1WQkxNNThMMXJWdEU3c2EzWUl1aG9MUGN1d0N5bTVBL0ZtbnZRUm94SGpoZ0FlWDVXU0g3cDJCQ05CeWQ4QXJ4MGlTN253V0p6ZUJXVFFWemMyaW1YMHk1ekpYNnAxWW1zZElaVGozdU83RVB6SDUrMTBBMyt0K1NoK2hrYnlGTTNSdm4vQVBGajJvTnhWekNiQ3M1ZDgvSkNrbjhtVlJ2bVB0RlV5d0I4NDRDR0IrRXhRb2txYjVmZCtZVXoxd0xlOCtIa3ViemFtMjIraWZBYzYwb2x6eWtWZTQxTUVuakpNTUFza0EzcmJvVk9LbEw2L0FNWGI0NGdvdkFzRzMrSjlkMTh5VDJrcjkzUmFLenlITkpRQlVPK1JJK3NaSFJSNGVZRWpTRis1ZjVYUk95TnZ6aXgwZTRBTi9NWHlxQkFCWjQzUmU3Ni9lMWlqZVljTFhQeDVqSlJCb2hkUmc4VUNXN1pIM0s2RUY0Q1NuR0dXRGdWWW9aT2JxVHcwbHdKVFNNTzdqdVRQRUFmcTV3OHRPUUhCYzY3TWVpei9MSlUvYk1tL3ZBVER4d1hNd3FabGp2dGNpMkE4Q1laaG1mUVlGbXZYRFFLcVE5ZTdNdm9OckQ0SVNhaHpNZXFLVXVRUUFqTUdabVFDSnlqajFPTWtkcUlyeGhSekprU3c2a01kOFA1VlMrb2NuQW5mM0JZQ1kvSHg3a1FuQnd6QU0zREpOWWtlQU0xSklPdVlXZnFkZnBnNjlJQlFKRVlSTDRZUXoyYUMybU5wT3JlN29uV2owQVM0NDZsQTJPZmxLUUdDY01mWTRYRis1NnltcnM2eklZa0hoSGtBK2xKTTMvK0FyMWFnMWsrUkZpMFpLc2kxWm1HRStsd0JnQitMRTlLSnlERHlPa1hRMjlSQkY1OUpwZkhQUDEvN2VFZ2p4S1pTd0U5dFkvZGtGOEc2MTlvOGZsTWlQd096VE12RERRNkloZ0dSblp5RlFmUStNOGFJWFZHVDc2V0FzTWtXZFFON0xMSkF5dDZFVE52cjUvV0xINEFHbzByYkhCcWR5Wnc5V3hnaUgwVVdlc2dnSTBIWGtkVC9yQnpzRGdnQndmdzlBaFJtbjJrOVdUbzJSenlITkpRRGs1VXdHQUl6RjBlN0xZeGlKYjl5cHlpMFRiekh3S1RmeWdJL2JSaVBtN29NeWhBQ1Fsd0RldGtvcjRwM3ZDWGdISUZ1THNaa3o2bk5Ia0k0WitNaXo0bGJtTmF0OTQ5Z0VUOXEzZy80cU04TDZsd2I5eUMrVFd5bFhjL0tLeDk2Yy9FVVk0d09RSXplSTZZTnFmakVFM3BUTG1HVlZobFJVRVRURFJGc29PZWMwbHdDUXYzcUtiV0VqQXpNbTdHSHRUZC9RU1JsUUhLMlJDRkVPVEo3RHlreStvOVJqUU13em9SdjI4aDREdjh1QXhqVlN1RkhsU3lEdFUvM0RHSW9HSHF3K3c2U2t5dm1jZkNDQ0oyRVArQ3lVdlBlRm9QZzNwYlc3NXhsVlBvRml0b051cE5UZmVIQUNrc2QwVU1MbnhJMWNZNnNnMkRWNE1qZEtVNThiaWlGT2RBRU9xaUw0L2ZYS29lVWk0KzA1alJrN2JOL29remdSdUdnMGo1T1FlUWdaY3drQTZPRU9UZU9VcDNNUG9hTlpzbXJ5eDUxYUJCZU1janAyMWltYk8ybzd4OVpORFRMUjJ4MEFocUlIT3dCR1B3OEU4WlliVHc0YUVuOU1BR0FkeFVrVkIrb1dpZlp1bThSekNLN2JpbWtaUEdmSHZWajBiM1hIeFBxSkFMcXFvbGRQRVV3clFzSGhGcnNHT2JDNmJ1UlV4WWQ1clE5LzNnTUFWNnI0WVNLeFZjMlFjZElKbVRZRndkbndTVGN5UmQ1Y0FrRGFnNEdaeW5qTjRxRnlkNTQ0NlNqTDFNbWRrWEl6UDVTMGtKR3NSNnlhMVE2VnUzTUxwL1U5VksxZ1FpLzh4dDFzRGh1dTZGbi91QWNnUENRU0U4T1R4YU9wWGdBRXNlQ2lNT1VNZlpRcXhrQXQxZlpHN0hkVXhJNXFTVVNET3VscVVCdlpsV09DZW5HNUVQWmJsb2lJOUtHVHhXY0xLbVMvMUU4RWhHQmg4ajJBd3B3TGM2TlpsUVB1cEZKZW50ZzhDVTFkVDByK1FYTG1FZ0NpQjBJRmp6RlpkeWZQQVNBcEEwaktvemR4bXN2UmxNdDA4cEhUU1hyL0dBcU1tOGRXdHY4OFQrR0VUQnNiOXNiekFCcit3bnZlUUFNdWVWUXE1K3FnREE0SHJPUkZpY2hLSWNTNjZTcXpKMVhVa1lDUmY5STBUM2dMd3BDUW1QYjB1Um92cTMvYTNlZWlhZlppWGI3eUc4VmRGNUpFNXNSbmkyL1hDbWxZT1RzQWRnZndsK1pEaVJtZDBkdTZJUi9sNXBUbUVnQndMdU91VHRZN05NNHJvV1RFUFlBaWJJNU91MFAxajE1ZHR2R2VBOThFWkpUSW9aakx3U0JsbFpySUdRelV2RHVlZVF5bW5PeGl5RlJIbXhBSWFsSVVDM0pFZzYxSDlWQlQvV2pnUU1RQmVzcEFUMEowTnF5Y2lhK1dQT0dGbi9CdEd2eGdaMlJPQUloVTR4NTFRQlVDTURUOG1OdC9aSUpqM0JJUTVwSlNIK1VGbkV1emN3a0E5U1lnbHJYSEVVMTBJQ2wxTW5wWGVWTTY2aUJISmo1emkxUmhVRDZpYmdleGU4eENsSDZvbUcxTVVmY2dFYTdqbTRCVXhnbkNNTTRacER3SE1IZ1lpSFk4Q1RSQnNqSFY4RVNKb1krQVhwRW8xYlAzQTY0WEd2WWlnSFJJTmxCUTQxd3JIeEhvWlVmRktxMEIwZ2JybjVPYjFsVTU3d3Rrc0t1VHYrb1htbkllQkFEcUNzZDJ2d1pRVkZDWkp2SmpRZXF4Mk1DYkIyd3pTVFJBZzVuY3oxbVlYVDZYQUpBVHQ3WFBUMWdkd3k1M1JPbVVjYWNlUTl6dHE2QTBqYzQ1alp0bHNISjRrRElKeXdEaEJpQitZRDMwbWdqc3dSUkFWWjI2Z3hHbVlrUUZvVTJFb1VrS0JmdlFWWnI0UkJ6UWd6WkFGV2x0cld5Z3pPVXNEdk1xUklBcVY3dG9VRG83QkpIYmNPVTBFQ1RiUW1CSW5BVnJsdHVXRUdlMU03QkFUNWc2K0ppY0JVYi9FV2pKWVp4aEl1ZzRLVWVmTE02d1NZdWVTd0RBR2pvZ0Q4bzRtSDQ3U21yNVBSbW9MRGsrQ3BFaUtkRlJpbk5MU3p6ektBZEExc2x5OGxoWUxSd2VRQ1VHdWhQQ0MyeDhRU2U1RkNzclFOVlhBTmYvN0FKcUtrSThXSVQzajFjSWx6Y0FNNi84TkI3L1BjcXpvclNUamRWV2d5MVlLckd2MjBJbTM0YW41UWRHLzl1bU1wRlRKeWEyRkVyYlBORnBWazVvY2JEejhhRnhGUGlvVkJtc21YQWx2dzRNam0wK094L2VFa3gvc2VxdlVKKy9wbElEcHBpVHkvR0hHckMvYVdpbWpmVnF6eVVBMko0MGpyWUZZeS9IVVJOMXZCb3FwM09RN1pUeUs2S2hKYzhkNVkzZ0ErVWN4NklEaFEwSXZnUW9BWURQL2YwREpySStYMmpCVFN0V0xnOThQT3VSMityRGdJNDBXSDN4MjZBbENvRUVUNTJnRjY2U3dYV2NsRElQckdzbFExT3Y5REFtVGpZeEtUM2hnV3lqaWdRR3RDU0hYT0ZvVGU5UUNSc282dkRpbzl6VXpFWENoL3lNTlRjTkNRTGNtVWNlZkNTQk0wdkZsSm0yTVUzNXVRUUFKcXdqR3hvVWJ4NW5CMEJWTGgyWUIra3d5ME40UllnNFNxWEpiRHFxSkkrSVpWNVpCSjJjNVdSQjZWdUlyMno1dFZGa2xDRVo5Z29Cem1vS1NIMk1NMjhWWWFDbGc2RE1nUFN1UjdudnFSUTh0Rmp0eURuNnlkQzNGTzJMZFdwQ1JwdmE1d0JNSzUzWDh0WCtiQ3ZlQnNaZXB3cE1MY3BYYWdsalNrclFtSUt1T0pXQlFSdG5tSlA2ekFnRlNlVytaRUtzK0hMOFpIL2dKOTgvRUkzZzZPMi9jbDVhazU5V1VZOWpWc2xCR1FjWEozTnZZaDVwTGdIQWR1bUV3L000emh1QkxFZGVvWU5JZzBGWWNFR0pjL0tQY1cyNWhhZUlxT1JiMFdBYUQ0NldIMXFXRXg3ejE0WkdnTWV3Y08yRFFMNVJaNWxBREhBVmRDSkl4YW9vQkJPZ3lNcTI3WHZxRlVUaWc2M25weDd0a2lPN3pST2ZlZFRkZjdac25jaDVUVHM1N2VaaWtIbmdDNzJLb2NYUXgrM29SRkR3elU1UkFoZk13Q2pvakx6QXhvRTBFTjhqc1AxRmtSM0p5NThCNTJmQi9MR2ZhSkF0UXdEVndXZHF3RVNkV0o1ajJnSlJZazVwTGdHQWtJdE5PZkN3cllVUGF5c2RrSjNBWUVlbUI3MkIvVkxjWnFrRFRCcmtwZUFzQ2NGbXhrQ05DY213UDBlWFBtbFFlM1NHamlaSmVROUM1ZGdCcnMzN3VqMEVIVVoyQUZ3R1VDY090djlNaTlpeXhnMHhsYlNVN0pwRHNsVjVXU2QrYldoTis5bDF2VFJoUTk4czJpRFhzUzU0WFhpK2JRZ2RQZzY5ZnRBSGRRa0FjUVNNUHNqTkhQWDJKUlJVcXJvS0FDWVFNUEU1SE5DVTh5bzN2dVRFK3h5M3RMM2pGNVA0SlNkK2xvMDNQTjhRekc4OGtOOFVqdmNpYk9JSER5QUZCam1kd01BcXp6c1NVaS9yV1BXVW4xQ0FnMVJnOUdDYlQ1RjZmcVRhL3BQTjREeklvRVRLNmxrKzBWeHRvV01kUTdKeEhta3VBUUJIdXdPd3FCanBqanFHaGE0bkdWd0sxQTVObUhaR01yTTh6bUUwcmhDU1BoUlFzU09wcWlzU2d5elRWRTU0eE1EMkRucHVMZDIyY0tZSjMrYklneGNjUjZiNEdGQ0RSTTdrajhua080TzZ3T1U5Z1d2TFM5MVp2UWp4NHZwUzk0QmVJWGEvWGlKeW4xNk5mRUc0czNyRE1KT2RpZTdKTGNGaTk0UmhBakJ4UlBLZzk0dEdKTnAwK0FxZDYyaFBDdEU4MFlweTZFcWltTEFSNVpScVF1UGEybVYxSHYzSHVNQXV4anB3SHByakFZc0FYd1NKbVB3RWd1djZTYlhMT2k1dDduVnY2R2VWWHRkeFJmQjEwUWdtN0IzNFpTVUNGM1l3a1hlMWxOTzJrNVZRUVhUYXhpNUkzbWNJNSs5WkZGMmh3YWQvODZRSTBDZWFpbURyS0JpOTVwSG1FZ0N3RGNQcW9US1RBYWNlSldVbnNIM2ozK3VmOHRKNyswUkJ5dFRDaVR2cGZOeEcydGZpZ2RPT3BOOUtqK1RaMGVDK3FZRTgwZHMvK0xHUUMvclpza2YwcXJESEw2eDJqNTliNlI0NnUrTEpmMFl2RDFsWHIvSlNWRloxOGcyVk9XS1ZaNldQZzhuaGlhL2M3ZWlVN1kxMVNoc3loOTdDWS81cDVXbXlVd2E1eDRkeVB2RWdHTlNKcnpJLzJMcXBKM1UydDNVb0tyQUxBTWZCenVDNnJpbXY4RnVMK28zRmw2L3ZkUy9wZU8zR1huZE51d2UrRUxRcW52WlNoQjBFN1pGNCs0OWNvQ1QvQ3NmT2piR0ZOOWhOb1RkbmN2alNqbEpkbUR0UExDWjE5WmZnd1NYQm5Zcy9VTUo4QW9BNktTYy9tbFJERDFSclB3Rm5TMHgwUzNxZXZJV2JhaWJwbEt0dnNzR1NIWjk1aSt0RlVMa3ZUWVBhK2dNNm5TbEVyTldDSkljT1J2L0FSMDQ1QnQ2ZzlxQUFQNG1QK1o0NnY5eTk5WUhWN3FtTGE5MGplbG5vUmUzZnoycFdNK25QNjAyb0YzU2MxNCtnS2hZNENMRGFzd3BpQmdmdGNiQ3Frbk1mWmxPSGFUcGxIemtIRDY3UURSU2NNcWNEN1UrR29uemFnQStjbEZjUXVKUXpYMUxnZ281dmVNbVRmdDZ4VHJ5c1oxc0lCR1h5WDVNeDF6WW4yZ1VzNjlKQkFVSDRxekx1VlFXQkY2OHBGMDd4UVR1TzNXNWJrV1ZYQVpXeDRZYmtXOThES0FwNFlTazk1WnVxOW9ONGl0YlZEbFVucFpnb0hmT01vNVU4TndvY21ObWU1eElBTUlHSTNvK21LR2RuSHNYRWREYU9ZaUE3SWZzQVlhMHZEZXVVT1hWYjJHVWpnSTZmMEsyS1VjSHJpUkFNSENiTklDL05vRDUxeG1iZ3Q4Zk82dWZDM25WT3EvMUtkMTdMKzBVdDV3K2VXKzRlMEN1UTd0ZlBINjFyaTg5S1RuMG1OY2QxY2lHOHhkWnNRUTRycXlkMTVsUWdrZXNnYy91Smh6WktZLzFHNUFPTFk1SGpzaXVtY09XZVpDVUg5bEVDbWk5VGhGdFdvT0M0b0tDbkgzSzI3dGhKVUdEeVg5Rng2ZVpFdXdBRmg2MnV1NndBY1hWcnFmdkk2OHZkczY5dkM4ZHVha2t5WWc4UU9uR08xWjZjSUo3bHVNR0tEOVY0aytDSXVnM3lpQ0NCK282RkhMRk4yT2NTQU9pVXVwb1UrQmk2eHVCVVJiWkhUUDdCUkp2U0ExTlF0MnoycVB5M0ZIWUN4QndUOStsNi9yMVBiSFJ2MW0rY1A2d2djRWI3ZW1oTWRGWncvYkN3WG9zdW4ranc5bGxsbG5pdjBESUtQM25JNnVSY1pQSThBQkl2OUtoZ3pGeE85ajhuQTVGbEVaTkloZVRWTzRPQzcwOG9FUGhlaG9MRWlrYTFOa2pkZldmMVduWFY0UkxoOGczdEFoUVZYNzh4Nlg3ZnV6YTYzL2lXdGU0bm50L3FmdXpqVzNyak1yKzhGSmRXUkJybXR5ZWsvWUpuV1AxeFMxNEdvRVY0TEdOQjZpWENzVklkeXhJRVBLODBsd0F3K0M1QXNleW85d0RDM1ZHWnp2QktTaEZuY1lnaFFkQ2s5R1BOQytDSlVSaVNsc3hScmxnSmFWdTIyT1lFMzVET0t0SFVqaURWc0FDMnRWb1l3VmszcTZEci9ick8vNXdIVnowSWI4ajR5emMxNGJtMlZRVHc1OXZDTVRRWnRIbDRjcUFkZ2xJWURZeFRhYkQ2WkV3ZmxWTy9FZnBZeFZ1cGhjQzB3WERUUXVxQXpudjRRRFIyTzNRVkJ3SEJRVUdqTzNjSjU4OHBJT2pnbnNIckNnUVA2ZGVZMzNMZmV2ZWIzN3JlL2ZRTFc5MFBmMlJUdXdKK2xsMEJSTUdFTWVhSmlKSldsQk45RzNjSElKcWtCazBXTlZQcWwrVkQ1UkpTSno0Q1VHQU9hUzRCQUZ0c0U1MmtBMFB0dkdNWWFGbFpIM2twQXlDUGdtdUxPY0FQeWxOTUNDeWRYSkV0VUZ1c3JmUURRUFV5WUpRQkFyYzdGaVlWUEVDTkRIVUwycko2T1VVMGRZVmtkWC94bXI0TnFLVnNWOWV2RTIycCtJaHVXZnYrRlMxNzVId001Z25UQ0tHWnRMZEtCRGxPVTNDSmF2VWJWK3VkdjQ4U2lOU2xGWFlBSytoc0s2c041QXRaOFVYR3dONUNwS2xkK1l2QXNLM3RFVHNrYmlCTU5OS1hDQWc2TGlnUVhOUnhYY1NYTG5lNmxGcnRmdlhqcTkxUGZHS3IrNmNmMnV3K2Zqa3VEZGhST0RISjFZbmxZazU2UkdPMGxaY0kzakdvREdXc3AyWGM1dVF4QWsvNjZqYjhKMFdlU3dCZ0VIb2doc2NNYzFsd0hFZWxmOWhCMUNnTmNpVE1mRHA1d3AyVXQ5dzdsanhGSWdva2JhVE1GTzdEb2hqazI3cXI5Y1pMMStJdXZwYW9GUzFyeXhxZE1lazFCR1ZrM0szT29kbW9jdGlHcGxWSmMyNHI0d0RHTVpyT3VFM0NYdmZybUM5bGlWNmxGQngxTWdIbTlsMExlWXcxQ2R6UnJtbExsd0dibXRUWENRYjZaZEFWSFU4ODFIVVAzNmNBKzdvdUc5Wlh1L2MrdXRMOTBFZTBJL2p3cHA4LzRCNEJFUndmdTUxQld5cTRyTjJZZFFsaXc1SnEzVGEzem1ramVjSzNyWGxuREhNSkFMbHF0emExOEZGTXdMblRvbVhGTmNKYVA3bzluY1k1N0lscnFob2M0aWtaNHo0SHlvNE9yTTRGNFV3RHhqd01IdjB4TmNkMXJITUtHVFhlb3FtNU91Rm53cGRqY0NOUkVkWFBBakF3TFQrYUQ1bHQ3U0k0bEt3NkdydHZleEM4eVRwU3FTa2V4REdsM2FaVytxK2lXb2NrVWppa3VBV0xHOHJFdnA0V2xjWiszRmVXQ0g0NGhzZDZkZk0vZ29FQ3dxWWl4SVJBb0k4YUhuOVlsMW9YOVhIcEs1UHVkNit0ZGU5NVpLWDdlejkzbzN2MnRWMC9RSlZCeGpzOE5SQmVSNVA0Q0RHMFZMK0kwZnFsUFlmTnMxTG1oNjEzaDN4ekNRQjR4UGNCRkFseU4wQW5EYnYyMXBZTWVGV1hvR0s1T0F6NVdTWXZLZHVpbUdOOW5MYzBWN01nUXdlZWtpWHp5aWdFZXVaQ1p4aWNBTnIxSUZJT2ZUeElxNHdSZ0F4V0IxWHpoUGNUY01Vd0xnV2dJTGM5d2hralFWbWtTazJEUXNWUy93Qkt6ek1WT2thdFVSWHNUZjhGTUdTd0QybTdNRlgrd2pZdWo5VmtWKyt3ZFFJWUFBQkFBRWxFUVZUN0ErTGYxbVhDbGo0ZFlHY3cwU2NKSzNxMjRzbkhkWS9nQ3BjS1M5MS84cmxudTMvNDcyNTIvL0tYTitQQkluVUVmempiZllnc0ZYbVJTS0dvWCtrUHRPalQwSUllUDRhbTNTc2I4NXgwZVM0QmdHc3Bic1p3ZDVaalRlR1lEMTZHYmpxOGFjUmZUeWdOVStZQWQ3NTV1TVdPTDk0bXl3UEpSdXMwemxzYThMNUVRelhkUW1NUEF0WjZKUVlCbVFZQ2Y3RURLRzBMMzBwSjZTME9FWU1rZWZ3d2lEK3JsclQ2cUsrdmc5UVd0cXVDanhwZEJoTDJGN0xoL1JSaGVtSVBUV1U4VVNUNnU3MCtBZ3ljWmJvWkJEbUNGbktaalgxOUNhTFFaNDFGUGQ3UFNVaWVIeWpTc3dJM3RDdFlVaEE0cHdjUG5ucENZL1dscnZ2cWQ2MTNENTlaNnY3eHMvdzJJMDlkU3JUN05YSVZhb0NtdjBYT3BxT2hRNTZSdVZvdVM4ajN1SDZaUTVwTEFOaVFRL2ZPNithTEl1MTFkY3hOZWZIR2RueVVkU3diMVdrZUkrUTZIQUFrbHlBelRpS0xLYkFseTJMTnN3NzBNbTRTTmRQOE1PMmxQdjVsSUgxVXRhZFhYL2twTmhtdDRhZ1Jxd0NnQUtqeDR3T0ZnWSthMGpkRHAxVHNVY1hkQVQrR05NdkRGQlZzWDRQMzUvTWxhTmgwR0JxNmxabmlFMWc0OG9FcG5oL1kwdXJQemNObEJZSTNhVGZ3MGllNzdrdWVXZTBlT0xmYS9jQXZoMjhqQ0FSc3YwdUdtMVFiTkZPYnFvQ1F0MGtFOFZVV1NPMUVOalJYZUFweUhta3VBWUN0MWk1YkxSMmJjdTZXamsxZGpCM0JQL1pGQ2ZxRzNiODZaUUJnSW5oeUZLKzVjMzBxWXdGZWFGUHlVc1YwNUkzVDdmUTAzWElGK1Q5MkF1anJ4VW1uL0tMSlFVWm5zK08yc3V3ZFFOeHBrbnJpWnZWSFdSMjA0NEhJOGlOYWZyVTEycElFMGNzSklGSUtOcTJuZ2k2b3dqZ3N4ZkFlNHdycnRBeFdsQnVrVzlmSG5ud0V0MVpyUk5SeElKeDNXQmFuVXluYkwxU3NkY1JWbWl4WnRiSEVEVGZEWTlNRTA1dmNIOUNZbmVqZXdFTVBoSnpQVjBWMkN0Ly83STQvS3ZRTldQZ2h5ejc3WHdYa0c3YkU0YWx0YTBpSnk3enNOK1lISC9IT0k4MGxBRnpWOW1wYnEvT2xTenIwc2N2cmwzZTBBeURLSHkzMS9FeDJuTzJUSCs5YzFZVFkyVkhZOWlZczVOSVpISmx5Y285ejAwTlVzcFo4S3JMeVdKL1M2WWxrb09XejVJUTRlTkFob01KbG5oZzhoWmpWRDh6OVRUcXZDaUVOUnV6bmozc0Uxa1YwMnFuUElzQmEwNkJRSjBRbEZ5QzVNcGY0bWdKc0VKVnlHeUFkUG9YTmVpZmVoWDVoeUphY2EvYVlyQk1YVlU2ZVVlSlBJVUpYV0F5ZTlFWjRwRVFWbjZ1RU9rQ3lMVzc2OC9neGp4UHo3VVFlcnJydmduS1ZmNzEyQk0vcm1lSi85dXhOM1JqTVQySHdkMytra3FqVTZ4SUtaaHRXWVhUaUc0MnIyZ0tzYWZ1L3JvVnk3NDBSdzR5S2N3a0FmanBOMXJjT3NJT09ZUlQxR0UvTUJSWkIzd2xIVGl1OEZPR3JZdys0OEkxejBKbUMzeHlKR29zMlBycFVZTU5LaDFQc2cwQzBYOGFnQ0QxN3JWOWJPUmhneTgvWFozbnpyN2YvS3BQN0ZWYkN4d3R4TlFoUkhzRmtkZlExQ3JaTjdFTUhZaCs2clROcmVOUjQrRWhuQTRXb3pNWHFWSlVoQlZJK0taUGQxWFJTR1ZJdk91N0pWRk1rcDZjRkkveDhjWXBWZUVzUERmRTQ5WDM2aEdCTDVkLzF6blU5T2JqZC9lekxPdzRDeUtHK04xL0tDVk51QWJraWdFZFZlSkI3dXdRUEFYMWVhUzRCQUVlMEJ4M0c1RDJPblV4OEJXWFhyMDRxM3FXTk5sRTBxdUNUbmpuRVFtcUFBUmppQ2hQNjlqcHpVeTVLMmZuSXJaMk5iQm5LY0NCbE8zMzlnaXdJNklESko5QXArWGt0T08vL2h5T0dlT1Jjais3cDdtQzhFekNEZ0dxSlArc1dVVk96Y1h0VG1TcFMzRWVyVUd0T0JZci9wdElLMHRPemJiUFVjYkNEcHhnWjIrZTRVV3BVMlIxQVR6OE1RMEhCeWsvN1BGWHFjRW5BUTBXYnVuZUY2eStXbmNCWGZ2YVo3cS8rNkJWL2wyQlpXd1lrdFNyU29sL1ZwcHdidC81a3dMaGkxTFJNQXBnWHlNcnhOSTN0cEhGekNRQk1XaVlIUjNvSzhDZ3BxNUxuRzFUcEZFZC80VEp2NWJzTm4wcjdOTmlVWFN4bFlDY3JtWVZodnA5VmsxSXNjVzBYVTUzcWJSQ2dSeE1YOG5YT0VRT3ROQUhxb0VSOWRsRTdNaEorRHhEQkVSRFVMbmdoOFlGWGZ0c2dpVVhvVUhhMkdIcjFiU1lYZE9DZXIrYzVZY2g2VHBPWnVvZ21vNkxFV1VkUnl6aE9LanZEZUpMTHdvekxoWmpTUXBDbHFJcisybUNFakNENTY5UnMvLzFSb2E0Tnp1cjdCVS91TG5WZitta2IzWGQvOEhvSnZCSU9QMHUzYktJdUY3aStOSk1zTk9PZVJyWUJLMGViR0QySk4yMU9VV0F1QVlEUE44dmlWUU1CRDFUZ21LT2tjRkNwRmJNdXFqT1Fpa2NITWxYSWhjQjR5dFJvOGxJc2hCQlh6MmJPVWhUYVpta1NMTTNueXptTlV6a0hVSEEweWpVZ2trc1IwTExhc3BFRjc1dUFqallTVHFORVZjcksvVEVndVNwNzNLY1ErSlFvRnJDVXdCNlVzbkxtQi9HQjc2WGVpdXR3dEFQYWs4TXJKU2UxTU1iUmZDRTJKS0ZFS0IyRlQxb3RtZXlScU5pWGFpd3FIZGY2a1krWWVSeDdTemNIbDNXWG5zZUt2L0RwdGU3LytkaG05K0hYZC9TeGRwbXRYcEg0aUR1N2huQ2pIWUtFaGI2aExCcWtGcUZMTEdwUU9aQVduRW1kWFQ2WEFJQzFPTGc2dWN6SzR4ckpkZzhuMDBrT0xGUDhnNE45Y0FKV1RudXBRK2JJS0N6bUd4WUNOZUFvekttN3QzakkxUkhYNEVrcHRVVHdtRktPMmRZQjNoUk43c28xMjZjQzEvdDhMTVNEUDdCeVprZ1oxclhVUkVwNDhpUGZCakZCUkIwMDBqWjRTSmdHU21yQVJKMXdIaTFVbFN1UXpRaFJsQmpZSnB6RGdjaXVranhaMytXQ1RGSDJUdmdTdGdFMTZ5RXQvcjJTTTFHNEI2RC9ibDFCZ1BzRFgvS085ZTViZi9LcW45SGdVaXdscFV3K3BzMVdJa1NvcEk2cVRWQ2xKSEFjbnZ3Q2dqK3BzOHZuRWdCd01CTXVEeHpGT0ozbWlGdWJHbDNGNUVkV3JRODZqMFpBb3BLUHNsTUZvbHFpYTNTb2lGc0RqWmpCSUhKN0VMUGhSb3pSQjlCZ2EyWFdha0p5czVQSFdQTW1JTG9hNXZxZklDRG1hSzVNZmtvcERBSndNRlN4RlVpK2lyZ1ZjQ1RtV3dscWFGTVVhNXNST2NKZFU2VkUwNmhaeHBNTGdhazNSR3VWd0VjeHBtWGZCTFJTU21SQnhTVlZQQ3VnMXdaMDI3cEQzeWtBOE5LU2R6KzIyajN6Z040dDhLcStQS1NaeEUzYVByRkk2VEpORTU2eG1ndEZ2WGN4Nm95Y0R6VHJJTkFMbWlrMGx3REFLbzBUT0p5VXQ5MXhGQXVaL1BTVjY2ZThLUUlndWMxQ002dE9XYVhxQXIzQkYvYWVzU0lDOEdvZVZZeklIUVQ0YkNPTmEyMkVWblVlRWJ3aEt2U3FYL0lyQjhlZDZMd0ptTXF4dm5BM2xKdUF0QjlIdE9TZGdPbzV0VUlUZDFKNXlqNkt2TmIrZ1lJSENLbHRsTlV6SFNsOGlBcjdzd095ai9JeUFLa0VrQ3BHNVI1dUtUaXhVSkR0VGxWd0tRTDVQZ0VQQyswb0NQQkVLNjllKzRLbjE3dGYrT1JWdldGWXZjRkE5OUtOVmdUbENGdmNvSTB2YkNFVFhUaG9CeWlTUzdTcFloV1J4Qm5tY3drQStZd3pSc2JFay9tREdYaDdDNm5iSm9JdDJ6SDNsd1VITmNVbUt1dFZmQkxFYmxwaDhQQkk1dHJRRUVIbnBCeFlQRDdJQ3o3R0NaS2lZeDBjVEF4ZTZyVEpza1EzTjAxRnRkQ3JNSUtHcjM4T29QQ0JKSElvTU1RUGc4WndpeW5DaXBpQ2k2RGpaRFIraUhSSXRsN1NxRUl4dTZjbnRJOFFrNm82cUpvWUFzTjJWYVpvMnFnaHk0MnBsMDNBSFAxQVkrSjNGU3JqUXhVRGRCQmdZbkw0Y2t3N0FHNjh2dWZSMWU1QlBTcDhTUzhtbmVqdWRINGFFWjBaN2Z1R0lBMDJUUVFsVUpDaTNTZzdBQmc1KzlOY0FnQ0JNWGNCTnBTeWJNTWZSMDNVb1dOY3YzZ3g1SXlraWVhT0ZUOXNGUzUxUUNhWVFDMmpWRllBVmtLNjZhVVpsNFZ3cmxPV0FkQ1B2R1NsSmtHdkNGSUdzU3dzaG5NWEFBbGFXeVpZZWdkQTFFTUl4bWNTenZjQXlQa1QyVHFNaFNUL3NYTUV6eVlOSmVQSmtvYUUzcTZHN2tsdjUwTldoYXd1QnlhWTdKRTcxRmRVTkNIT3RyOHREMm55YWVrazM4Z1R6S3ZYK0J4NlI3T1V5NEQ3ejB5NnozaDRwZnV4ai9LRklkWFFRSjlNK1NCL1Z4MnpMSjNjSHMwVkRUSlBoUkJQay9NS0FuTUpBQmhwL3dwSVB6T1dNZlk0S2VWUlArUUtFbUI4RVpod08xZXliWExxRXBSSTdwWUNSMVlLcHBtbGRoaUEyNDJLUFZGSTQ2bXF6bVlsWUJJekljbGRqNXhrbmdJVzJLUUNrN1dKY3Q0RDhBVEhnSG93MEtNOVpNUVE2eHNDS21KYmtiZUZiMVVIMnV5U2JKa3F2TWYyME5CZTQ0dmkrT0VnUGJPRnBQZWNSYklKT21rbTVyMEVoeFA1bkp3KzRQa0FQZzFnc3I1YnU0QWYrK1dibXZ6eU5VR0FxbTVmUlAzemNCSUE5d0U4c1UzSHlNQURJVk5rMCtIaGs1MTVwTGtFQUQ3RHp2RnFvNm9Eam1kaU9GaDE4VjlKT0s4dHUxam96blJxYyt0VDZvQjNmY3JpcXZKZE1qSk9Zb0xQY3BUbjVEYXVDRWs1THVya0lPRGF3WURzMnBoZ0JsQ1NNMkJRaG8xa1BWWHcwNVNLV0JwM2xwbDRCbDE4REtqQktWbDUzVW9qVmJZbHplYVVlbzZsTzFDTmtTbzdHSTd3NllJUmVsUlVTL3IzUkN3VmFqMDVJMjAxSGFYd3hVZ0NSZXNyZm5MRGhTZUNRbyt4UElvQ0NBSXU5OGh1ajQ3Z2FVRTE4dGI3VjdwemVqRXJQMnJpajdjdEgwMVVUeks0ODgrQ2h6Z1dwQ2tiQkdGRFgzUjJBREJtOXFlNUJBRDVvdzVrWU5KQkF5U28wOC9wd0t4UDJYSUFpdHlzbVNnY25yUnNPM1B3TVJSQ1AxaHowSXpFUVlyT05DUllqUEM0ZzhtcGlMeVNRNGdoVUhnSzNuekljT1hJS0pLeWF0SUNLeDd4K2tsQTZsRElyUXNNR2xuc05xanJvOGl0c3VDNTA0VE0yNlloMDdEVVZCNFEwSExvQXlNQ2JiQTloVTBTa0RMa3pNb3FYUGdXdnl1WnA2ZEhsZXh0R0dLdkJGL1N3TnFMN3RUU2V3aWpIZm5kOGt1Ylh1MFpYS0kvb0hzQWorZ3R6Ui9WTXdGK0ZvaEFRTCtJbCs1aVFoTW8rT0ZSZ2dIZFo3SENrNEJKTkF0OFVJQXcwd21mNWhNQXBEUkc0d3g3V3dBLzdwR0czODRtcW1XeTR3ckM4cEtRZWRKVWhsN3JKa3hla1VNWTdwYVdJc2s5WElyQ1pQQjVpS2lRWlFBNk1SRGlJUWhvY2hJVUtoNWg2RUFsSmVNTkZKbkNJMko4NEQ4UG5KS0hjU293K1RVUTQzTm82dUZYdEEwYW9sTWZ3M2txN1djUjlvUFRMWWtIVjdzdDVRQzVBM1E2S3N4b1JUSXA4K2s2OEswdm85WkFVRytpMFBaUEVSWmM3dUh3bkR0SFdDWTdSQW1MblpYS0NLYnp4Y05sQUxPYjd3MDhlV0c1Ky9Dck8vbzBJUHp2eHVDelJJdUlTd0JRSk1ueDRsUzA0bnNkaU01alRsY0FjM290dUN6TlR3S3czVzVKUjRDNFRVcW50R3oxVXdUazVGRkErQkxsUHFCYzJuTXVPSW9CdERCMSt4U1U3SXpvc09na2VIeGpLRVNVZ1NGTlVSWWNvSEo0Nk56QUl5OWhKQ2dsUDJEQ1JhYnBPcUd6TDZPa2dIVW9mR21raDI3NUtORGlTek5wcFpWSllabkRjOHQwVzRaYjFqNDVZaGlETDYwUnRwZGtFT2NJQ0pjVVlxQ1N6Ym5yRm94aG5ZYTRDSjFaS1NhOFNzaUdVU2Y2SjRLcjZpb2E4M05qRHJ6Q1AzR2hmQXdvZmVodVA2UGhTUjJoUmlnTGN5c0lrc3pBOVhwUVpxeHhlQ3dvbjNXYXp3NEFaM1BJR3ZkWFkveFJEY1JKS1l1T3lVbHBPVFJRVXJaRlo5QXdkVWpKa21YakVtbU9saXM2Q2JKWmRMSTRuVklQZ0I0V1E1bnNNV2lpb2xHRjVDYVFReVVsNjFGa1dNK0NOdzE2NFdIMTV6TEFDSXgybzhvRjUxM25ySnE1cUU2eHRtVXBjdVMyYVZ3SDJwaW41WjhuWFBZejBXVHhMNFdxc3hRMWJLY0hXNnlud0RFQkErdGl0UXY3V0s5akxCUnBLVlRJZWo5Rk9GOW1JVDhhY2gyQ2NySS9xbDl0OHZZZmx1eFVHbEFxOHozdUExaFdqek1kbnNLYi9Mbm9VSjVsbWtzQThBMHNHV2kvWUtpTzF1RERHSmlPcHJySFB3Q3B5SXBPREZSQnU2TVRYd05CSWJwNmtlRWhrdko2RVJWS1V1bjdhQk9xRUNuZkV4cEdtSlJuZXpGQ0hQY0xLTGpPZnJFWHd5d242NFlJblFOQWJGd0MwR0Jwa3dhMEF2RlpkTjVnb25vZCtLS25iTVRNTGFIc1lSTEtIaU81R20wVTR3WmloSGZaZzJ1b2lGL21XZHFEa3YzV2M1VkFVVHF1VG40OEtxSHhZSlZnS3Fqc0ZSNy9hekFpNno3OUtDdmZHWWhCRncyWlI1VnpyQ09hdmxJMTU4cXNiK3BBbVNEaUhjQ2NJc0JjQWdBRzJ1RUMwdkhob3NPZm1mVHBLSnhJWWxKa3dubmpSRnZ1VHhHeTNab2pqVXAwWUszWVE2QWdtNzhSVHBrQmtVR29qTU9lcnpEa1FFRU9xREt1TEhRZ3R6U0puSlJ0L2xJSGNreitZcThReU9iTFFZd2lMaThBa2VsRE1BQXc0TnhTTm5iYmhndGpkc3cwQlpGeFFLb2tuRVJpZ2dYVW53K1FuWUUrVlhYdUUzdU1USUt5TXlUWkU5OG90Y0kvenVlL0hEa0d6K2wzR2ZscGRUNEpnSmozZnd5cllzWUdaR1RBVGpYUm40TkVEdStjNXYrYzdnRTBEc05JbkplT28zellsRTR5djJTUTNCL0F0QkVaNk9pZ0xCZGE4Z1JkMHFpZ0U5dkFVZ0F4VEcyajhMZXNDU3RQTm91MDRJSVJJc1pUQVpBdUIrUTFaZzRDcXVTNFF3WkhUU3JFeDREQzBGWXlsTHg5SjJCZHFaQlFoVmRKQWFTeUkvU3cwVEZ4WEtieEtla0E5SDdPV3pCVzBraFJiQjhMd3BjdHJpMFVPVldjK0JoN3BNUkZ1YXorS2NrT1JwQzRDREFDdmEwbnB5d0s0NWMrTVl1eStQbjFlSk1RYm05RndNU3V6emN0VmJ2ZTVXOTBRUThtUGJKcDcxTXFBR0JjSHVsNUREMU9zb01ranh1d0thdUNPSlNqWkc0eml0SHg2RUdaVlgra0FMemhmdkpNSUUxd3AyVEhCcXNFQUNBbldGeUp6Z3U4T3QwVnN0endWUjVWVjkyUTEvT2wzc2JyeERqemdCT0J5VTQ1MjJVTEdsOEdpb0dKYU1zRWFCVnpGU1BIYUJpZGFLOXcxUEtCekZGbHhtZDd3RzJFT2MxSzNTcGF0QWllb1VwVmdvQ0V2VFV2Yk9EcTVZRm5MUWdrOVVHYW9Kb0JPK0RvRDhJRzM4TkFNS3MvbHdBZVJ4WnF3VWp4MklHQWpHZ3ZKampOVUxiZXlpa0FaeUFBTmVzMGwwc0FJcVVIdFF4TUI2V3ZEMnRnZFpJcU1BR1FBeTdsMlpPTk1CenJOZ3ZPZk1tdmlsRkdvV0FvV1MxWElCdXVET0xQaHAzcmxEeUlnczk0WlRrVFZYWjdOcHBDendPdjJSdGM2ZzNLaHhEY0FQU0xVSlF6Z0NNS3FLNzNrMHgraHByS0pVcEZMc1FnSWExTjFDQ0JiMkVqVC9aVW1qNUlBemRtUnpUTnBrb1ZGYldOOWlTdGhGNzlSQTNhaXdKdUsralMvMWxPZWpUb2FVb2tGenI3a0tKaCtZbHVkRUNtTGNGTVdENE5XR0dDRTVGSmJveEt3RFZ6a1poQm91c0syVHpnS1Bzb1BPQm1tZVlTQUdTbkhZWlAwaG5IdGErZC9NZ2lrWTNsbGFhQ1JRV1hPWkVvSit3eXNieE5NWm1NYXdkYVJxMWtEb2Ftb3JSQUVmQTFWMEV5UEo2eW5ta3FsRUZtQVpVL3F1ZjRjUzVXZ2lqZkIwZ1JqRUlDd1JJM29taE85Zk1Ba1FQWHNnODh3YWgvQ3gzNzRNQktzeU5ZajBiOHVGeEl1S3A2SWdxMVdGaGNicXNYRTZ2LzJ2N3YrWUNLUUdjcXk2bUE5aWV3Q3BRZEFMVHFaekF3VHphT2NERmFXaEZac3NiWC9hUEJiVjFnQjVTVU5lTjhQZ0ZBMWpzd2ttTVF1WUdqV1ZkaXF5dmhlRVI0OEFJVWVTVUx3U3BVRW5BaHRqa09KeVd1Q2dwMGY0WXhnMEhNbUo2R1hOTUxZRGh4NURSZWdvQ05GMFBMZzZRcVF5RHNCV1dTQ3J3VWRKbFJWK3I1N2pNOEdpMThUWmlQQWlGUnVXNVhMVVU0UnUxQmlZWk9PdlhPUEpSa1ZMaUZoaUhEREZPNGJxTi9yd29CTTBTUkdkU3BvSG9OM0xkcUIyWW12SFAwQXdiRmlRQ2dDUzYvYy9uZ0tpbUlYQWZWV09Hejd3WFpSb1lRL09Ud2NDa3IwTHM3OHZaUWNlWnBMZ0dndlFTd2MyUldPNW1QWXFVZGhHT1ZjT0FnVVU2YVFPWUw3UmlsVS9LVEU1OWpQa0hJYWdKS29wMUk3QWJFclVwNURWZWY3aE1EQTZLTUNjYUxPaDBaZlcxa2dJbDN3eUNwVDZ5NVlCSkg1Q2Nod2dld0RteGc5ZmNMUVJoMFlLbGtva3BNZnVHVm9aQXJXMm9LdGs2dFZpSWtUVldja0RWSSt4QnVEcGFzdXA5aklPQmtDMjRNZjQzVGZvejlrMnlxbDNxU0YxZjB1Q1I2Rmt1V3l6clZ5UzlQUnRHRzB4cGxKaTZzMldjQys0WmNLR1dZU0tsbWtZVU1Cd0dSWU9GSUZycHdYbWt1QVFDbk05azhxSXUxOXZjUnJCejdwSFpra1ljSEFVbEdsVUxMWjVSTzFnTStZT1hJYm04TXFWZzYxaldnSmhNa3c5R0Jxa2t2UWkrc1RGYS9xTU5vbmZnWGpldSthbk5VenJtS1JNTU9TT0pEVk9ybVhBZ0hBQWszelJVaUVQanVzckFFSjdjaDJSRlN4Q2xaNVJRZ1JTZWtOTWw4S28vUURjZXh3TU9MUzg1V2tZU0hUZS9IWnQyZUx6SE9kYXBsbkttVVpZQStwRWl5T3dqdkFjTXBxRFJJSGtjQUhzK2EvWWlFaFRLN05BdFhadG13QXNOUVNNaHduVUlycEdoT1BQQ0RHd1FXbFdlVjVoSUF4anVBTlBJNFJ0bGg2VXpsVERodzR5UlNUS0xpNFN4blIwUWVna3hEQUlDVGRnZktVMjdkdG9GcjVQa3F6NGdCMHUxYURJYTZzdW9aTE9YU2hsdUFRRXNsczE2d0NjdEJ5c0hGQUl1L29MSEY1T1lUZzhVN0VTczhITFM5RkJNdHI3QVpkaU5KeWdhekxJNUVCZk1SemxNclRrVTJRbHQ2Q3ljTGlvRnZGRXpTS1BjdW9JaElTVEgvbzI3aXFCYXd6ZzdtUlRwc09ySjdYQlJMdlFRUTBiVFM3cmI2WnF2NXRTdTNnbUNBekNtV1pzak40MVBoS2V6dVQ4SHpTSE1KQURqZXdSSGppMVcrUGpxaWhkVGw4T1FzZ3V6UUpCUTZZczJuVTBaU2RJZ0JRRTRoZU9DRm9HSkpQYzF6RzZ4UUtTZTVhc2U2cG5veG1TV0xsYmkzRDhuUVE4NGdSMWpmTUNVbnF4ZHFtRXg1dkFPZ1dudXdBL0MxUDAxQlVBcVZhSGhLYXREQjN5UHNuMUlGTE9MTW8wSVJEVVovZmFtd0J5OTE5cE5jSi9tT24vZDYza3FHVi9haVE2b3l5S1ZnZlNLekNvSWo3Y0xZMkZtRjdjQkJoZDJYaEw3bWlyN2UzTjZMbnhNekVRWWRxTnJtMEpBaG5NY0lSY0U1NFdIUEk3L2NSWlZacHJrRUFFOSt0cTg0UXdjNWsvZ29xVlIxRlp5R281Q2JpWEltOCtxVU9YamFwSnp0SjQ2Y1pOMkNJeEFGbDNLdHJ3cE1iT1FZenltRlVxc0dnZExCeVdqaFRGRGFFZElBRlpxVXN1QVIydm9LQU1aT1hrTzFwQXRQQnN1MEkzY0FERjlHbFlPQjZubkZLcnVRcHJVUWZHdkVnT29DeXRUa0tWWkxMVEJnYXdsakdFYnNEaWVXYzJHcXRGSldadFp5N3JFOU5HaFhoUXpyeHJzODRvMU9MOGlRYnQvUmh2amRuYzZSWU05Nnd1SlRYdlBGeDdMVTRyaTJ1YWVmRThNblJRNVNvMXFmZ3hMT2NVTTVRWUJFWmxtTnZFYUtlV1oxbWtzQXdBOTFRRk1vNVlBT2Z4NnN3cEpqVVJhT3dPWklFSjdpeWVTMUhqUXBJSENaZzFReU1rQ2ZpVFpLOFNTWE9rMXdEZ3dUT05FR2JBalBuaE9vMzQrSUNGL29KbU1Fdk1ZVmdEYktKTFYrRkJ1UjRQcWJnTkNHZi9WSEtOeDJtZncwa2JwWXZoQk9pZXhWVGNxaDhyNzZvZGh0aURpekg3SWNGa0pveExSd2d4NkFwVDhHdUZFQmY3V0o0alJjeTJORlNtQzJpV3FuUGxPaHpuS3pJc0FTN2xRQWtBREtUTjVMTjNiMTJ2QTl2UjI0OEFxWC9yYzh5dWpoVTlEU0ZQUnJFeXlEc2Q0U1R4aWVUd0RRck1tQjdRNHZ6amlPTGVsTWYzd2lPV1BucFV6d3RPbVZHNzdDV1BVb2RQTkRIMGdxekNKbUp5SEFuVjl3TVJEVTJWSUluWHdBcTJyRnFYRmdFdHRscjhxT0lMUVdhNFhwK0llNndWcDlsVnJFRG9EUC9IV29Kb09Ed1ljb1lIQnhBNUQyUWk0VzhlOVVjWlFTR2FTcVlDbU9zOVNwNGtmVksvNDJRUHEvZGtUeUkwK043Qk5iSzZDQnFHbkRQc1lRTkVDWFF1TGN0eU5jMUJwWlY0cDViOGRGbmVnakgraGttRlBvVFgrem9yOThaY2RCZXJWMEpHU1N4MDloenpKOTVZZTZsS2VPTmxFTTlLZmJnbmtPYVM0QmdBR003OXlueW5GT25WaEhNSko2SkNaL09zeDlvcE5sZzFmQ3FmVUFLR1dRYk1HTkFqYWl6NFB6OW1mM3NlcXpGWXhyL2RTc3Fac284WG5PcTh4bnl2bWUrQnhrS0o3UGlZZG54STlzNnVuQUxuSmZBa2hRVG5pK2JFSkE4THZuNWRFNlNOMXVCS3VVaDRYUSszS2paM2pEZlFKV1RWWFlVTnJSVmprdWpIQ2xra1VoRWRrdlBiWkF5WjE1UVEvMEtnV3o5SHdWS2tBdDF6WVNVK3A3VURhQldlVjhvaklucGYwb2RxN1JnYU0vOUt2QmIrdzBmb3NHUXB5WXNobWhxVU9STVpHWEVKU0ZyZ200TFZmQ0RJQzVCQUEvdENJckdjd1l5K2s0QmxJWHh5R0gralVYbkRla0xGOWwycWp0RlY3alJuRGlxQUpjVGdCT29LeXJHd3hxcTdzbnR5b3lFTXhaK0N3TDJHV2RpckxtVHg3WEthY0dsM3FuTFFRdEFzQ3lJaCs0aW1jUXVzd0VMMEVBcWtkcHpXb3J2aDhRMWxTY0FZU1UxSUNCeWNhU0lmUFVWL200anF0TXJSZkkvZlNEOE5uWTdmTDlqUTB3cFREQU5TTHJqN2pDd0tRdkZqR0JjV1hreGNmVUU1NmY4L2FOT3NGY25qM24xNEdWNE1FSzBXN3BFRXU5a3BDbi85aTFLVGNOUklFZFZOb0tRWnJKZVM0QmdCWE1GbU40T1l3N29rbkZSM1pZT2pIbE9rZGVZU0tqclppZ2ZidUIxem4rZzFCNGpVVEdJREVnbE1RZjgwcWRYT0NhQjFsQklIZ1pCblhnaU1iRU00NTY4R2h3bUc1K0tPeEZJb2NEbmZOVEJGWHhEb0NQQVBtb2lSK1pvQjN3c2Zwb0Y0QThWUWlaeUlZcXJkMnVRT0NhMFZJdEdEcTRXT1QwWEFFaEFCSkplWkdlUmVlRFUvS0tNelNQZWkxUFphbEFTejBjUEsycTI1dEdhTFcyQWRFRG9GMHNmZVp5Z2RPdHZva25aNi9vT294Vi9QTE4zZTRGL1dTNFh4aytVdFYxd0NHMDZFRS9rVExRbDJLTUsrRXBKdzYrV2FhNUJBRHN6bDFBT21GcW54ekNVanRIbFpra0tTdXJwVVBkSG1RQkxld3E0SXdzUXhGWWlhMTA3U3hqQ3NGd2V4SWVKU0NySjVGRmtjbm9pYXZjZ25JRmdJL0RNMXFjQmU5SFNHbFRLTnBGaGhNc0tuTms0QVQyRGtBTkNQVEJtYis0QVlqdVRIekpRUkM1dVF5NEJ1SEZxV1FocFdJYkJZSXR6NVc5QXFLZ1JFMk5qSXBMbGdHamtRT01Db015OVFzaXNuM1Vwb1ZXb1FhZEFoSWxFZE9sSkZaeWlpaG5wVmo5S0RiZnUwazh1eTRSZWZTYTN3UmRFZjNqcjI5M2IxelhEVUIrS3J6MHIyV05ZR1RTYWgwS1JVZVA1ZFIzenZsY0FvQmZuaWpMTWQ0bkFjUEpkbnVyN2RDV0RSbUlRNmdGdDhUQWV5S1pxVFJiZUkybnRzcTVRbFF4QW1MeURPV1ozYlRBd3c5ZkRuODZNWFdNRGc0T2MwTXdnMXBqOENESGVtV05NbDJOYTNSMzVRZ0U4U21BNnF1dVgwa3RtbHZRaVU4YldKV1FhYmxGckRQYU0yZHBsRXBLUVJQZ1FTcGt3WnNJM1lLeUJGK3BZMVEyMU5DbmdyU0M3QkFlWisxZlhJNlNwYXFjcFY2TU1QdVJQYmtRWWJFdGhUS3RDcjAwVEQyWEtmaUFwS3hPWVB0RnZqTk9lUHpJb1g1YzF0N2ZxNytxOEhOaFAvZkNwaThEZURsb3BKREh1WWNLUlUybnk0Tld6QlErK1ZsTU9PYVI1aElBTk9oam5zbDVaU3pzNjVLakdCc0RpTTdxNVhrODlQMWFpM1VWVlFQUmRwa09SUkYvbnh2MTZCWFhMejNSYU1qei9iU1ZQZFRhNENCQUZWV1BEdTNQcG9HWDdEcVFrS1BleFFZUHFGS1h0cE9QV01FQks0bjJIQUIyaXU3VUY0TUhpazc4TWhEcW80RGI0VVJ5Mndtb2FJR0ZCamxCOUlPTmxJQUZCaXJ4RFZldlhGc24yVlB4ckZpRXhpQm9Lb2d2V0xHRVBrZ0JrYnM0d2cwNURsZmFMeUtON00ydHZoSXArN3JtNE5RVTVXVkZXbGIvOVZYNVgrVXREYkNmL2NTV2RnUG1zRUxCV3lyaFJ4Qks5QzlGN0RRcThVRU9IdmpLMGFCbkJzNG5BSlNKWHpzWUIrZzRTa3AySmdhSitnd28reENpanVKUHdEZ0FTbkxiS2pQeFRDOG5zNkNmK2VKY245QW9kWGZMVEtGTmZ6dE1lS05nejk3S3FwS0VWZ3hwazZpamlrd2V5djZoU0UzWU92bEFwcHdDVXZSQlhSMEVNUWNBOUJRL1BsaVdOUE1JUnBiSEdiSjA1RDJBYUFPdWFOc0txRVNxK2tjeFNOU0h2VEJTckhWb0lJc0JacW5VTVhsMHNqRFRBeW9OcUJBOVp5Q2FwR1lVaHpLaW9uRU5PT1M1YldsY3N4cFFhMlovREhLeHVjL0p5N0VzWUVVWCsydWFPVXllajcyMjNUMzNtbDRITGp4U09aT1RFcktNUU1TNEZRTjk2SjBpZUpKVVREN2FXaHIrMUhEd3pPQTh5d0JRdmM3UFdybVh5UXh5N1hyMGhFQTdHVURKa3pyQUtCY1lzdHNwZktETnEzTFErdFdteWlpMElxTEpncGQyUGJVQmxHS2JyMExUUmxBNHg3VTVyQVNDbW9SZ010UEJVWS9LckFxYURwN0JnUWZiNmc4Y2x3Q3FMOGZGVGpNQ2pTV2doZzdMTFRsTjFKRUlDQUptcFo1bXlBaERaWkticDVBc3VGUktWT0pjcmtpWWhzbVR2TFJKNHdiZHhoQ21WcnlWSjVpalR4QmN5b0tZSE9NMEJUVmk2ZXUzaEFpZGplS04vOTJPU0RVdk1QN1RKYjd1L0M5MTYvcDVjQ2FPM2dQYS9ZUitFb3duQU0rc3RUMmRVNy80dW1uY3JVb3QzSkJ6QUp6eEpRODRxVTNsR1lDekRBQ3BybDZTSW5mS0huZXNqTGR6Yjk5N1dkOTU2eVFRTVVoNm1jbWMrTXFqaXVBU1grR0NLMFBSREZVbEE3WGt6b201b1k2VkFBWUQzY05BQ3IyaXcxUEh5Sm5VTUNWTmQrOVY5ajBBMXd1OGg0M3hLYStzN09DS1VlaE1BUENOd01RcGg4N0I3cFAzQXRBdUNFOTJnWU1jUnBLWWttOEFsNEpwOE1GZkJGVCtoaWRsNjdaWFljdWE4cWpxVXQyN3JRSzdWUWpna1ZOZzhIbEoxK0xOV1lLRks5M2lGRkl0dU9HcTJBYTNIN1Fkc0VxbE91bWJzdW1pMFUrczhpdUtBbWZYRlF6RWMwVlAvLzJrQXNCYXVmMVBqOFlmNHZnYnBaUUxEYmdrZ3pyQnowRmJud283Z0dLZUI0TG5tZnU4R0w3UE9aWDcxZ0QxY29CNWxDVjc0MUJRbFlmQVkwU1BDejF5Rldyb0tXc2dPT2g5aC9YckJ6aHY3eVdRZ1pMWDhJWWxLMjBrYjJFM0EwTDFIVWdLREQ3TllLZkF3VUFEUndCZzlTZFJSbUQvVWhDMVh5NHJRbytnNTRDbWd0dUhPSVpOUUtCNFJNdEFad1M4cmhKTW5DbnpNTk95SnNLS1ZzTmxEWDQrRXdkUHdyZThzWmlQTFhlazlMYU9zSVhBVUppa1JJVlZ3UlBmT0NTSXh6aGdFblVrbElSK0FSM3RYT3E1OVZRaEpZam1HNTdPbzQyMm5OT1lJTHVzbndNK284blBZcThmQmU3KzVVZHZkaTlkMnUwMjlETEE1QXV4MlFoNUhPbGJqeG1hU1phbzRIT2k4T1dFdDQzTUljMWpCMEJuOHltYk84OVc0ZXc3TUM5bDJEOFVrTmM0cTZBWVI1R1V0N2pFai9QVXNSRzFINlNoSXBkT2pFa2ZxM3N6ZzJvOWY3eFloZ2ZWaU82SWlNL3lHVFlNZi8wMUk0VEo0ZDFDMFRzbVVBU0Vhb2lDQVEraVlBT0J3SU5HZ3JuSFFNSCt0YTdJRG5VcURoMVFwdENoQm84UUJWK3FxQnoxbVFCTTlGWGQvbDdUNTE5cm1nWGNDRnZWQ0dKcjNDWitNV2RMRHkzZDNGenVibTdwYTdJcWJHbjdzaTFsdVJ5TXlVOUQ2RzhsYXQ3aUF1WWNQRUNERkNLTWFzQ0R1S09xR2NNNm40dG8yKzhPRGQ4NENLZ0dmdkpEUC9vRlZtdyt2eUY3NWU4dE9lcEhmdjY2YndxaUgySjhVemZobW90QW02VVREQmE1eW1vS2paQVVCMTFiaVRNRTVoTUFtQVdZbzhNRDc1Z0dGUkVoQjNHdGl5b3hoSHRpQ0djVzhoYW1yanF4MG9CY0lDc0FZZ3BJM3lVMko0NDdURWhvZVhlWFNSczMvQUlIamJrUmQveWhVVXNUWGdQTlk0MjZ3bmlRQ1RCT01uQVhuKy9UWnRyQkRvRERPRXZSU1luNktPRmZDQmJJaEhJenlJYVpCQnduQzhqQm5aUGJQRm1QZ3V1RkhHUng0MnRWazM1OWRiazd1NkZKY0VZcm9DYi9paHF3N2pUUnRDVTFkUjkxMHUyYzdicnJteE50bFZlNjZ6ZjN1aHMzQ1FRN0pSRElQdGZoQkp5NWlsWWdjWlNWY0E2Wi9nSXFhaG83NVZUNFc2NVFzZmducTZUZEl0cHZveHdjazRUQXgrVGYwQTJZcytyVUgzMzJadmVoVCs3SUo2eitKRHpNWDBCR1JZTWduUEFSYXVHZjRBczhaOHlIbm5oSmdtM21hVDRCZ1BHQU16aEl5dTkwZzJOblN0UkFib2gyTXpSRkc1NkFpUyt6Q1JvSFhvKzhMeHZOcVUxbWFoRUZwcmNhV25Rc2c0QkJtZ00xQmtYV05vL3FEVHBiWlE4QU1hWElvcXJGTTZsWlZmTVNJSmlvcEoyQ0JNWjdBYU15QTlZdFNxK2M2TWdrMlZkaXFMbHd0T01BMHNBQ1BSblk2cTlxaXg4VGY3bTdUeFA2Z2lZQmcwYjN3Znd1L0UyOUJPUDE2enZkVlUxdzBubmRHYnRmdjViTHp1Q0dkZ0hyMmpJemNhN2VuSFJ2WEYzcHJ0NVlpa0RBNVFIK1owYUVFckpWTXZ6ZjRpVFVkSk5VU0d0NnZDQ24wQ0JMbVRmOGlSSmp4UXFvL2dBdm00czY5cU92K3pYNUNYd1hGZmhXNU8rYnN2a0gvcjlyWHYzeE5YWDRjektNL1A0UFBHMWdxdHRTR1YwNVNPU3BEN25oZUNBMFdXQ2JTWnBQQU5pTG9XdHJUc0FrVmxvbVV2VmdDeGY1WkQ1MHlod2c0VEttY216VlBIa1FHWWthVFZJSFcwaURvc2VRbDUxSDF4TjRZUFNFRnhRMEh1TUZRdWIrM0ZpaGtaV0hHTTBkbHdFTVRqRW9HR1RpZllDK1hCQUNyQ25vSXFCeXFVNlVBNVA0TEpGbnVFSXUyMzArMTE1anhWOWY3aTZlblhUM240dTczbXVTdmFGUjg3SFh0clFLM3VnKytQRk5mUk51VjNmQ3FTbmE2cVI3VkQrVStkNDNyM1ZmOE14Rzk4UjlXdjBWQ0ZZVkJNN3BlUDNxVXZmNmxhWHVtcEEzZEduQVBRSi9qUWJqbGFKZlNtQ1FWa1pqTTdRb0dRWnNkYVowVUlJU0VzWWM5RlFrOGp5QURPdkVUYjhOUGVHRC9mcnhuKzZjYlAvZW43N1dmVXkvQkx5aFM0S29nMytwRTM5dGE5RFp6WkVpQ0FSc3hPaVVGSExkQS9BUUYzaXdZYVA2eHluT0l3RG9VNjRKdndaZW94K2hNRDlQUDRyUzZTQThraE91ZnNUWUNFbzZQTHhJaytTQkpaaWNnVlRMS0ZadzVIM3FDd25SZmc1Q3VocCtUeXdZVklUdVEyWEdMRnQ5SmxOT3hsd0ZCampxRkRrSXBBN0plaUtud0R2Q1l3dVRQWkNSVzZZQ2dtL0VxZlVjZ2t3T3k2SjlzNGJjaXJPQ3RrTHlnb21neGZVOHEvNlo5UlZ0OVplNkJ5OW9CZGR5djZwMnoybjcrL0xsN2U3di9zeTE3c2MrZEVQYmUvR1htNERZUkxxNVBlays4c3B1OSt6TE43ci83ZC9lN0w3d0hldmRsMzcybWU0aFZiNnFRUERveFFnRW43eTAzRjBpRUNoeTdIRi9RTVBkRTFxRzkzbkl4Tjd3ZTJrRUh6aGxiMUFvTk1DR1RwRlVVY2xYMklmK29DOUVVSWZ4VVNzM09UZjBnZi85NXlmYTJlaXlSN2lQZkhLcit5Y2Z2S2I3SU1YWGRHNlJtYjR2bEI2UC9tTER2L1FYcWRjbnloNERBaHRwOHRiczB6d0NnSzYzZDNkaVJaUkJzcnczOG5nR01qbVFNZkRpMktPUUU2ZmNFeXFyTkdWa21DMXo4VXdMVHRtQmd6WlJvdFN6UGlxU2tKYzJBcnZqaFVrZnhLN0FVMVRZekl0TjFGZGw2dm5RaVR4M0FFR0VJUTdmL1dmMktRaDRGZEtBZEU0OUJxZHl5cGtqaTVhRXFUaEExckpsalFhdWFWbjFHZlFQbnRlS0xrYnVlTVA4VC8vTnRlNzdOZmw1N3AwSnNLN1YzckpGZFp1d0tTM3pmS3dTay9xZi85eE5mVlMyMWIzL1BSdmRiL3owalc1WEFXS2lkalllN3JwUGFrbDk5ZEpxZCtXYWRnUGFCL0JPUGI5dW04cFdGTzlnQ0Foa3FoUUdnRkFLSE5BUUQ0WVVlZ1E4T2t0T3VDVjhFYjFBQzlGUEs3S0J5WC9mT2ZtQjFaOEFwVm42UC8zZlY3cnJXL0tUNkZ3aSthL2tDQXhwMFZhMjdoeTlFekVFQjRyQmdsN3EwRStkQUtBSW9EQXZtN0x6Y0g3QzJIcUlsT3hNSGhJK010ektLa3hrT2VHenpjUlJqdnNQWlRDcERJMlQ4d0RCREJMNjFyYXpJN01DNVFLVEpUa0ZVSStnd29UTVlNRFF6b0FRZkZHVGVZMHNkTXhCemJZL0QzL3pyNVFOcTdXNEpDcURrYlo4cEJZNUpQdWM5b0lhT0cvM05hRFBhT0t6Nmora1ZmOCtMWGVyVXZ5Q2J2WTkrL0pXOTNkKy9ITDNieit4cld0N0pyN0NSUm5zREZaTGFYTGtPd25IemNJcnVqL3dYVDkrdmZ0L0ZRaSs2dGVlN1o1NlVQY0NkTW53K0gyaWEzZng4dXZMdWo4dzBZM0NIYjFYTDE2dTZVc2RPL1gvYis5c2dDdzdydnArNTgzMzU4NStTR3ZKdHJCazdFaE9RRFlRd0NUQlpRcENnZ1BZVUU1VmtncEpwWkpLa1pTTFZFd3FUaWpLVUs3WUlWUkNnWTBEd1NZQ2JGbUlzdVVQWkRuSXNtVFpzaTFMU0VMU3JsYUxySlYycFYzdGgzWjNkcjduemN6TC8zZTZ6NzM5N3J6NTNQZG1aK3piTTMxUDkrbnUwNmRQOXpuZHQyL2YrMmc3MUlKOEFCYU5WMjlKZ2ZlOHhzRWFGNWNIV1dKWWN2VVZVRkQrV25hVlZpd29QNnVnVzZUOFQ3OVUxMjJPem1GYSsxV3lEQ08xSUYrbDAxY3hRbitsZmU1NUFnZWhKZURNYTFHa1lHZ3FHVHJrdG1zRm9HNk5MbmFnSzVPajE0SjVXYy9rQ0VHRVpWRmRnTG5TZUJpOGU4cDdHT2p4Q0FIQjVWUXRTc3o1dGFGQ1daQnlCaFFQaWxEZ2JFbW5SRE4wZ3Jic1Y0ME1iQjdWTVhDZ1liT0lEeUtLV3dONFlTWUVnVGI3c3dsSVdTQ1ZVVmhlMXh3U0JoT3hxMElycDh3TTlqNWRiTmJYSnRjNHM1MlVmMGpyWDVhNzNUcUU4TG5IWnJKUHljL3FjUjdQdTJrbzFWc3RGallPckQyd1lva0FlYkd1UUVOdnpLRllEYjAwczVUOXQ3dW1zcDk3VTMvMkV6Y05aZ3VhU2NlMXRCNjRTbDczMCtjbnU3THBXVWw2UVovWDBtcUFweDQ0ZjBJUXduYlZKZFJMelByVUF3YVROSXUzdnZqeW4vTDBCK2Y4T2RTRElSd2Y2YzRPeWtDSnZXeE15di9GcDJheUx6dzVxNW0vTUg2Qmh5RHY1aXYxRlR3d0J1Z3VuSStqRUF1NVRFNFJRVGJrcTZWUzNGWHhuSjJCblRZQW9XM0w5WG9oamxRMEcydFVXcFlTSnA4SVcxR2dVbGNnSHh4U1BVTTYzaGhUcEJtbTFJcGFMUS8xQ1VVNGxBbDgwTEdXMHpNNUNmSUtSeGtHQUIwUGRCck1CRll1UXNJTVNPdDhoU21icmdMWVNMS1ZpeE5RT293dzhCejZsaFJKNE11UThneDBqQkd6UG9ONVVMdjJJM3F1dFYvTGZYYjUyZVFiMWFnNG8zdjlXeDZZeWg0OVViZFozNVFmcWlydk5HQ1dQNE0wZ0hBWkdCTVlQbTR2Tkx1TGlZODlPSjg5SldQd3o3VWEyRHNzU1VnNDErNlYwZW52eXM1TmFHOUFHNFV6V2czTTF6VU54dHVDUUJoaWNwSlREQkV4RklEbGUrR0tIQVhPUXlHZlh4RXB1LzNJWTBqUCtmYU4xVXo1dFJqSzlrajVIMzV1UHZ2amIwemJoaUJIZ1RIYXdYQkhZeUJja0VSeHBYYVRUYXd5RFRzWEtTVGR4b1I0QWFybE1vL1d1TUJtbXJtTjRVNFpnQ2JwajQ1azgvM2pzdktxYlVFYlJ3djFibGwzbXJsRlo1MnRza0I1QmphVEV4dFNDcG9Ea29iSGVkamk0Qk9jWmRqQXhXbDVqMENqVlJnY3lrNmlLMzBPWXhsTVQ0MkJUQjRsaGdGVjNJa3kyeHZQeWcrMHg0QmtWdGlXbFFxRFkvUFBsNWJjTklhNk5ad0lHUEdRbndUcVlLQnovODdPOWpDenZoU2ZlLzBoOVkwMjZhV2tPdDkrdkpIZDhVU21lLzNoN0JWWE1jZ0RZUU9LRUUrOVVrTWVhekN4a2xNREVBY1hiOU8zTGpXeTMvbGFscjM5YjJYWm02N1ZJMFBOZC92RXdKQVU3cHdNd1lYSm5teFNxNEU1clFZVzRpYWhHVUFqQkNrUHdKVzdpRk0wTndZRkttUktzcU4wR2pJMjY3T3NIeG5zenZhUGRkbXluNzJQY2NuaThPa3N1L1V4UFFrWjIyc3ZBVm03SlhPTWFBajdLcTZRaVlraDFoT0JFcDNIMW5CSSt5RjdkTHV4Unl1d01mbUZtV3krZGM3MllqdGxBSnE0bExyUGQydFp5WkxUb0N3K3d0K3E4OW1Vdm1WQWhYZTBDMnFPdDhFV0I0Q0hIWkk3RFJlbDF3N0J0WkYwOWhVaGJuaGRUUEVoa1dja1V1UUo3eEpFQlNXL0RkVmd1TndrVXBUQlRqdWRSek1JY2ZsdlMxY3BOd3BOUGd3Sks0UWcwMERMNVF2a3hDQXpQb2Q1bU1tWjlYbTBoK0tQU2VsWTVqTHJuNXZSN1B5WGpleXhGNVZmSFRVa1JXU2dpMFN6d2h2ZkRQeVFadWtFaWJkeTRnOFowUllja1BmcFp6VEgvY2tqV1hib3BTejdSemRKNFhUZndhZlByOUhTbTBlRzV5N1ZiRFV3cXkvdXpHazFZS2NKSlJTT0dydUNCNXFSTUl5VW5aSTh0NVZSSEQ3aFBaeHhrRHhrRE1lMENqcWdldmRxRmRTdlBNejhmL2xDSS92NEk3b1YwVE9Cc09HcHNwS2xsWSt3S2F5NlRRYWlEU2ZSL3JiaXFzeWx5UU9ab0IvQWhlV2wxQUI0QXltWGhsZlEyU3lpa3dZZ1ovVEMrWVc1UG5YdS9KUzhPcjJ1emx6Mkc3eE5jQXpCY0xSV2dVaWQrMFBPbmZmcUhuTnhzVS9DRG1wRXNubGRBdFFnakFqYlVDT2R1RGwxbDRWemhDZXNnSlpEV3U2SzdpWG9jSnpEd0VXSU93Nlllc3FTejNCaXhsNFVVb1JCaEdKN0czbjhCODRITURNL2hleWJBQnJKRG9VeVdyYWFVQWlEeTNQc3NHUGZyVm0vS3h2VmxqNnpQb3F2QllEZDczTXMrUXVIWnJOUFB6YW56MXVGR1JFYVZPcEwvaEJ0amxzNk5lcWZSVEFEdnFXTFFySlptM1lxVHI4Rm4yWDNuRzlrRHovVHlINzI1cjdzTGEvcjArTk85YUptMzhGOVdvVm8zSEJ1WUdxMnBzZU9PbStnc2NQaEk3czFrREdBcHZkblhyZlZGeXJsbWh0RHRkY1YzL1krdE84d3JDVS96L2paK0dRVkpMdG9LOVU3SHAzTzduZ01IUXl2Lzdvc1RMWVNCcmNDaFd5UVFUU1dsRUJZY2k0UDZnY1RzSmEwNHJLZ3poalFpUzQxTjV2aUJPWGt3dHlLVERTM3phNlRCZ0JXVGY3MStiblpiaW0rVG9GbVMxcnFMY1dkM3EyMUpkcCtVYWJ6R1UxTDhzdWlpWEhCV2FYQWtHeHhEMXNSWFloYlFnRVVXcXVMbEJ3TDJCS2NxT1VYUHlvR3VVQTBvRkZncU5rc0VNTmt3WkVYQTJMbi8xV1k4dWJCUjIvOEtvekRWZzVybHVJOTlFYWNncm9FYlRCcVJQT0JDc0pzWW5GTHdHeVA0dnVPUFJ0c0hOL2xKQnNuK1ZCOFBEdjB6NXhaeWo3MjlVdlpZWDNVZ2hrUkdoaVlZSXpnTFhweGx2TVptWFNlWVpyYkR4VTEvbzNwZUtHdGVKZU5LejFZd3VBNVVzeWp4VDk4WURaNzhOaEM5czd2Rzh4ZWQzVlBOcU94d2dHaVVTMVJNRXlYWm1wMmtwQmp4ZmEwUUgyT0lXQUNDTzhZZUYwQk9uKzB3WXloR0tTTmZYRVZOQ3A1N0pVeFpJZGZpeDNiN0x1Z3d3cS85N1dwN0J2UHp0dUtDWGtzNlVNc0xnZUVnT3oxaW11Tzh6Ujc3S3FtSWg0WGhMV2QrRHB1UUFMazZJOTV0UnVkaVVXY2hNTjFLRzB1dWQwR29DV1RqZnI4dEN1Y0NVZlNDWEJ6ekhwdWxDZXRpRGpQbkhuY1pQVW9JM3FDSTE4Y1p4WnBpdWRjUkdyTndNbzM4eGxpYnRuSlFFdnlPalU0aklUVEVXUHdoa3NOUVVwVGJCc1g0SUlQcHdXZERuQlpTOUFEZXdaTXlURXNZYUNoOUpxRjJKVFNJQ1hNSGdodjZUSEllL1dNZmtBS3psSWFwVWZaR2VUTWN0cmt0bzlZM1B0c0xYdncyYVhzbkQ1cVlXKzBNYmo1czBIZUdzSmtrVWZNQllTdEFPQy83QnpIb2dYaFFCdkRUYnVnRTBJeUFsckJZUWdPbjF6TzNuOTZLbnZ6RGIzWjI3NW5JSHZsZUhjMks0WGdubnlQREFGR1lXcXVLNXVSbjVQQlgxQjhVWVlnR0FGVkFXRmtwRDlWWlRLeld5QmtJajhnWlVjbUhFOGVqaklCc2dxNi8rbTU3UGFIcDdOelV3MTdNZ0t2WVNVVVpudkNablFoTEorbkI0bFkwMDAyZ1lVOGJvRjFMZ3hYdkZnMHVMdzRQNjJvWXJTbWM2N2RCZ0JPbldHSFhZMjVTOVBjME5JYWQ2NFlIdDhLaEFZZERsMVdGM1FjbFM0cHJOdGRNd0k2Z1dET2pZQXhKVzBNT1pWa2lJSXppK1pOS0JwVDVQQXlrYTZBcGVuaXZKQUNuVERBWTdvdzVHdnBsVG1PS1lNYVpaQXd4NHlBU1hqTjFVTjJuNzhvVGVLV3dLajdJRlJibWVHNGYrUkxOWGlVWDRmNTdLTVZmTGhpU0hHWSt0YVpoZXp1dzdQWlk3cS9IUmdaVjMxNkRDaGhtZExEc1RGWURHN0RSK1pDSHFvT2l1QnRMTGdOZkxtQkxQbzRHalZsWk5ZM09pb2M3MlJNSnRCQ1FnUDZ5aVlydXZ1ZXJtZmZQRmJQZnZBMXZkbVAzZGlmWFgrZ0IvWXpMUUpzdjJKQnkyUTlLTEFqeUp3K1hOUXN6UmlnRDFKbk0zK1VDL0pnSTFvTElqT0dLRDRqNFlrWEZyTFA2RkhuSVoxellQWFV5aGk2NHVmeVFGYjZzMzZJb1dEbFErMUYyMU51Vmc4SHVoZ3NVVlFiRnVlbWRNUGNlU2R4ZE1SNU54aGNuSnVleEFDNGF4NHdqdDA0TktKZWczV0NPbDVUNDdOblF5VjFLVDFLd01tMmVUMTFjRWNSUDJCaTZwZ1Fjbkx3RmxUVlM2MFBLUnM2UEZMeEJqWVJqVWdCTXhTQ2xBRmI5Z3dDWmkzd0dJQ2U1Ym5zbWtHZG1kY1JPbFlEeTEzZFlheDVQc0d3eE1Yd2FZbXJzcnBqc01FT3JmTmExajcwekh6MlZmbWpweGQxRDYwWlVDZHdVQWllTnZ2Z1JySHRMeW80ZzlKd0FuQVQwcGlod3FhanFnbE1LcDY2bFlNL3BLTnMwS0NYSU0yM0RxekhJbjBrajJNV0hOUXluYytnMzNlMG5uM3RXL1hzOVZkM1p6L3kzYjNaOTc2cU45dXZnd3FzaE13QXFDMnMvclFJTU1Qb1cwdE9FbHA2NkdHZWxROXRabktZME9uREI1NWJ5TzQ3TXBjZGtVd1lGd05tQ09FdHROWGw0Zkp4NVRlNXFCM0lJYlFJcnEzRzBJUVl6SEVrcitISWJuMnVBSkE5bllXWlNRd0FTWWdvQ0VhQmRqdUpvK091YTNucXBTa05ldTdRdFRDVlUzTU1iclpxbFd1U1JCS2hVeDg3d1hGU3ZYbW03Wk1oUFZMaFRiU1ptU0JReStvenYwMVJ2Z2FJbklRTVJ0L0pwanc2cmhYTDVMTjBEUnlnSzRDRlk1cm5jWnFtL0lxRU9JTXBoRzNvS2RMSDdDUUM1L1NUVS9jZW1zNWV0VSszQVdNTjdjd3Y2LzUrT1c1Q2FRaHlDOENBWmVTSUdrdmhHVzJXOFVNVno1NWR6QTY5V00vKytreGRiK3lGUjQxOHVwcmJBVjd4RFlNT3FBcWhnZWNQdnNJbHg4RW9PUGkwL1lISTcrYU1KZFF4SUx3a0JhM0FFOHBzMVVGYkh1dG1yMVZMQURXZEhXRFZjUGpVVXZia2k0dlorTkNjOWdlNnM1dXU3Y2x1MEtyZ3FsRzlwYWpOVFc1L3pCbUJFUFFyOU5sQVBIdHBLVHNtbVR5cEY1aU9hTFovZVRyY3gvTjBCR1htSDFuQ2pQMEI1UzNOTUdTaEhtUVdvRiticWxVazVJc2NrR2tOUnpKOVljdC9RZjNYRnk2ZW1WeWpTRk4xYStSYk42bVRCZ0FtOFYzekYxL1FDbUI1VHN2TjN0RERVcFF0TkNFdGduSVljYUE4RzJTSGRQOTRWQWRNYnJwV1gyNlJJUmpUN3U2MDdxVG1aQkRJaXl2cURjcWFJSlJLVnhUT3l4U1kxaUh5R2JWWUlNU0ZFemxEUmJ5Uno4TkJCdFNJRDQveFFqdnNtM1BTTk83WjczNWlPcnZsTHlhem1tYTlNYjFRczNla1I1NW4rT0hESEJnQWxKQlZEM3NnRi9Ycy9LSWU1L0Y2THJ2bHRpa28yZkNXbnYxUm1VSmhWZ3M4Y2hzQXI0VUJzRWpBS1M4S2orS25nem9vaFhCcWo5bFR5SzdqeUl1RERsejc3TW5nZHlOQWF0RmJHQXNreTdzSEZGYTc5Q3U4RHorL2FMY0hQQzRia1pERzlRanYxVmVQYXEramxpM016YWhMMWZseVRBWXplb1NJOGJzZ1paK1FiSGhya1JvWUwrRmRmbkZEYzhFcTRISWdRTjBtazRDMHNHV3ozTmJqRnFLdVZBNjB5N3ZaMDRDck9lcFFVNElSa0tCcmplVzVpYlBIZlFYZ3BCeXVSbVpMK0U0YUFCZ3lwdXNubjVpU0FkQnA3OW9vd3Nmak50dWlGUy9weEprY1dneFFYdEw0K0lQMTdBTS9wN1Bsc3A4Y3FKalNMaS8zaG5YZENnVGxqNTJUVzRMbXpncE1iWll6MmhKYXhWakJRYUVZOERIdStCUXFZNWhsMUFZR3BWWXRROXFnWWx2OW9nYnZIMzFaRGRIYWRWbEtlbkcyeXhUODJEa0thV1dJNXFoQ0g2UW9OYmNPQVdxbTE2Z3lkc2dqa2pqeUJzaktJWkFJeGlEUXlmUEVNcm55eDNKUVJOYXA4M2FtdVBYQ0JVZkJES0FBckhYaGpxcENENUFyck5TSWs1UE53bTVWYUhIMUlUL0x6YmY1SmxXWWhjejU4M1gxdDdROE91aDVPekYwN0kyQU03bFpIdHBkeEUwK1FnVGxqM2d5eUR2UHlBdFhZQ3lhOTNmUjJ3b3BhMmhMeU5QcUNyV3drWXRoRXQzRzh2VHA1eDVQRGNCNkpGcVIzUkN1MHdiQW1KZzUvdlVaUGZpL3FKdnlWNENnd1NiTVhBa3QyNll1Wm5FcElkRkFEd254aHRiZGh4ZXpINzhKMzVOcE1zajI2bGFBKzF6V1V4eXVaS1loYzFCWUl0RWx3VUF4NEIxTkhlczdEVXd2NEpsVkVKU1Y5elJubUVHbE1NdDNOdkJRL0RGdGJ1bmxhVnVtLzlhZGw3Sm45WGl1aXh0WHk2djgrWkpmUTFRNEc0d3hqVXJ5UVdrVm1wUkJHaDVvRVYzTlNJQTNHdEtjUEUva1NRZ0dMNHFBd2dmV0F6M3BvRzNnUVcybHMwcEthRzk0Z1NZWG5wV1A5WWFBSFdoU3g5cEJwNERPK1hJelFMOFJEbi9LcFB3OHFrTkVHRC9iTzlDMys1eGpCUklYNVFHR291RmlFWWtoeG92MkIyTWdQUExWbjhzakVMVFNwdlEyRHdWa3ZNSjhjSXpUdFJ6SjhDM2JIL1p4alBXbGk2ZWUxdG5qbFc0ZGFpc0xySWRwcHdHQU9Wb09USDAyZituc1hHT3BmcmFydC85R0dBcmlKTFJKSjBuVC9UaG1DNXhWR0hzZ0RJMnU3QU9mbjh1dTFiR3ltNjdobTNSNmZLUmJBV2FCR2QwS1lBellLRUpSdzRaZ29CUEp4c2hXQWR3ME84TkVOTURqUUp1WjFPRjhQWWVQVGZLMVdiN3d3KzcwN1EvT1pCKzlkOUtVSHdOaGc5Q1ZYek1aTTBZWW9ERU5xWG85SHFDK2x1RmdPRWlDaDNTQWh6QnRDSW9mU1ZvY3JEdU1nTHNROU1vZG0wRHJuNlpjU1NMQjBLdGMrYjBEK2hacThHZjlKQmlNRUZoTVFPanBZQlRBaGJ3b2tzMms5c3d4NEMyeGRHa2xFOGRaKzExbWdsQUpWM2dJb1RCNUJLS1dIbVdSaUNRMG9GVHZhbEdNTVh0WTVqRUEwcFdKMDZmOUpDQmszYTlHWXN2NGRocUExWmlBK1hxalBuMnFhM0RFQk9vWjE3T09ucThNWFJwcCtSRFdzMTRKOG1VOUR2eWxUOHhtNzN2N1FQYm0xK3JWVXkzL2VmN2RKMFBBZlNHZWxRQTc3R1VIYlRvVnVLcHJrYmpxY0lzSk5sQ2NvQ0lvbmoraTBqSDA4TjA1OGNNZ3VPWCs2ZXo5bjcxb3kvNmFNdm1nREVwZmJQbzUzb2FsNkRuTWh5eVZ5aFg0UEVVMHd5MkEweUJGVlVlbkVrYVBhQ0NDZk5Gam1vNlBwTWtRNkZ0SWx4YXlDVWxlb3NpUWl0LzdEd0xJSnB6dWs2cWhoQ3BDM1VENGdnTFV3bXFBY05oTUpJME5UZnN3YXFoMDVaV0NjaXRrSWp3NGFCajFHQmNxNUxaNERFZCs0TU41Q1NuRjFSS0lic0Q1N0E5a01saWVuenVwWXNuenF3MFEyV0tXVGhrQWwwME9sK2VtbnU4Wk8yaHNJbVNHR3grRDJwVFRLQWhXMzdvb0ZxV0hxS1p3SEgwOXE4ODF2K3ZqTTlrLytjSGU3Si8rY0g5MlVHOTQ2UlJwcGx2R1RJK05iUlhBKzBpK1pHK21VTkM2M0JEY2xSMEQzQTBBQm92SGRpZ2Y3NXAvK0l0VDJWMlB6V1kxV1FJK1N1RUtDaXdmUDAzVHFJTjQ0WHd3Qnd5RE93eG00cUpGTktKSW8yUTRZQlI0U1RJSEFwU0tRZ0tFWUN6cENYbk8xUUxxdjF6UVRxR2NGMDdnSVR3cHNGeEM1YmNkUXBpQk1KNkwwZUF5Tlpsb0tXRHRLU29MTFF5azh3cFRtVmc1cFlUNmdqRk01VUhld0hFbzdrMEdGL0NibFVYT2h0M0NwQ3VBK2RtSjR6blpzTmhOcXk0S3RpSFVLUU1BYXk0YllGZjkwdW5uZWc2ODFqcUdSQk9vTFEySmJjWloxK1lGdkNPc00zT3NsRXJLdytiZlIrNWYwRHZ0QzlsYmIrekozcXpueU5jZjBHTWpuWWZuNVE2YlVaTXlIbHhOMmpaK1l2V3I1WEVhcGJIbWFJT1U1UWdyUjFwZjBHTytwL1ZJNmt0UHpXVmZlWHBlNzhQcnZRWlpoRlM1N2NTZnROVnZCVmd5bXJKSDZHMUhvWFBGVFJob1RsZkgySFFhaklBWkFnWjN6TThTM0p5WWRGeEFwRmZ5aEh3bWg5VXpwb1ZpT05LM1dHc3BoajROU3VnZmxLWStqS1JYWlhsRXlxblI5bURVYUZmQWVydXRLcy9ZeEFWeWpJaElpWGhham1TTHcycWUxOHM0RExrMkw0dFEzbDdVWWhVb3o5bUkrUXRuajBYS1J0SnJFU3pIazZTdEJUdHBBT0FJaHZIZEM2Y1BQemR3M1k4c1NzQlN6YTA3Vi9pVWdtMGFSZGxBTzBoSkcyc2FNVU5TSmg0QjNmcU5sWWxHOVFBQUdDOUpSRUZVaGV3MnZZYytyS09nSEkwZDF2MjJiUnlwUUZGR0pVUGhsTHlGZVJZOU5EU1VEUTRPNm15QlBwQXhPeHVVY0VYT3RSSGNldkNzbm1Pc2s5cTludEFqdTFtV0pYSWMzKzNuMko2RTVFcmViQWdZc0lVbm54bUNXR1ZUT09JTUtKODdDMUd1YVRTSGRCUXNkYTFremR5TWMwVk04Mjh1TEE2TUNHMWZSZWhLWVM2M2o0WmFubkQvYi9YRVR2T1NOQkVVK2YwZVBlVXh0TkJLaGt0WkpwUnV5a1FFbytNMUtGWUVJNkdRSjYwbnFXSGRvSlhXeFc0QnBmd2NYdFBEbmNWekx4NStUb1ZKNWk2Sld0MHIyRjdYYmdNQW96RHVERHVzVFIyNTgrVFk5LzNMbDd0cVBRZkpFR2FlbUZOZzQ4N0poeExGUmw0WUhNWUFXWENSRzU3NURtbFp5R2xCbm8yZm1kVHljc0pmSUZFbSt5ZHpMQk5DOFJyd0dJRGhrVVkyb3EvbVRPb3J1RFA2cGxXcWNFMUYxb3lJdWZCdk1tQjI1M3g2d0hsYVVPeFUyVmZNL2lvUXhuQlN4amtXcW5DRnFqczZ0dFE2S3VCUVJyR3djb1FYWkpMY0lOZk1tcFJhUHdnSGVMaHl6cHBMc2Z3UFN1MzVTRGVHN2RhQW1MWERTT2tTbGR0d0pLNXdMV1NTRXlCektHa2JuYXNTSVNFa1hvNHNtS1RzM1EzQllBQVdYLzdyYi80NWV3QllXcDVudGhhS0V0cmgybTBBa0FnTU95UnMvdUtoVDErNFpuSDJXSzEvOUdDdzFuU0NaOXRrVXhLVDY5S0JGbmVFcHBRUlNUMWhvMGtiUTZTcVJ6bExZTC9RYTZNcTNFT2kzTGxUT0lubEhKS0hNK0o4TUdOQkpudEpmck1HSUcwdFlSK29JV2lZbkdhVDhxc2h6WEVyWWZLTFl4MWkrYXdjS1Bud0pLKzdtRWZ5QzMrT2o5RHdKWnhIaTRvYzAxNlk5R21aY05vZlJhdThsVVVxR0ZZQTRkRmltVXFJZTZraTFlVzJNb1U4WVpWUzVNNURiWkFIblBNSUU4WEhjd0NzSVIwNWRPOGQ1Mk05clZZQVJZTnpaclllYUxjQktITUNzOTZJdWFXNWlTZTZoMFovR0ZFalB3YmhNZ2VmdCtBZzNDUUpHN3htQWtRMU9NWVVadFR6RnBCT1Z3eGxCNmt3d0M1VzJHSmdjb2NCWU04QWkwMm4rWVpjbm1HVmdQT3lNam1tQ0lSUUNKaGlFclFCcHBnZ3F5VUVaampEczRJeUpBbjZEL3pTMXVCSVMxMFJiNXF0U3Mya0p6eW53NXlLQ1NxUGJVc0E5a29zTnRVYjJvTEVtdDFLVEhONmlCV2xYQ1psRzBUZGJGT1RzOGdkU2llN21SR3hOY0IzQ1ZCK2JnTllDZFl2VER3aFN1VkhnRnNqdm9GUzdUWUF5QXhaZWQ4NVpHelZGbDcrMXFORDQ2OWlMQWVoS3VBWk5zQnJrWVZDY2lzNlJSZzYwMjRHbE1pWXRUeFdIM1hGUDJVS3R3NkNsc0VLV2VaSU9sUmcxNERCQUFURmx3RVEzOTNzTkpzU0psblhEVnBsSzNJRk1uSFlLaEo0Rm94OFUwOVJGL2VsdENYUTRvb1A4WUJiVVVFWmdWeThvV2s0NWlPcHJBeGxFaDJQUi80MjJLSW9EYmphYUltVkxjaGxVa295ZVZ3ZTZSTEZFTVZnczFuTmkxc1lBUjREbmo5MVROOUlVbmNXbnN4UkdnVGI2OXB0QU1yY3BRMnBUVDk5NTVPRDEvMjlLYzJlSXd4dVpqWWI3bTJhWFh5NWhwcEQyWmI5cWloOGV5L2czQXpBS0t1QVVMWFM0cmhaeVFybDZJSHdyQm1lN2JDSjd0MExwYlFzRzdqRVNtSk9aRkM0b1BERVRlRmh5TklkSCtLbS9MRWd5Y1JOV3kxdm9CWTREdUd0WEkzVTVSTFpTc1dYVVFhZUV4RmNCcVdWUlhPNmJaUUpwTUlKUnA1SWhkZTN1K3JMVTg4K2RPZVRTc0kyYUpzNFh6MHJhSU82alJ4QU1wdy9DYUgyWG1IVVBiTy9yUzdQUHZqQkYvYS85YjFIYW4zRFA4QVlSdm41QzFtM3dFQVVSOTVCT1lsQUV4TUFiYkpaUFdiaWkvcHMvYUZvMHg1QVRpeVU4MkdGWVdEWmJRWUFxT09tVVEveldqY2FnSmZBVTFHaU1DWml3UDRESTZHT1psd29GVnJuRk5MWks1VDBsQUNqcVBJSWVTaGp2am5yem80MU5TU3dhdTBGTHgrM2RqYlVoaGFraW5LdGhGaWtYbjVJbFljdk5vV25VWVAyL3NmY1U5KzQ0N2RmRUhGcWp5M0tJWFU2bm5CYlhDZFdBRENlaW85NE1BSnpjN05MazZjZjZMdjZoaDhJaWhTVXF0V0p2SzIyanNwdy9vakpURXdxTm9WSnN6MkF5R1pnMWt1RzhselRoaEF1RElDK3ZxTjM4amRyQUx5R1ZEaWhOcGdLSWE3QldDWHhwb3FVS2tLYlhhSW41RU5Wb2tHbndGTnFQSXBhZDFmSVpic1pybE9ackNpM0ZZSXJpS3lPb0c2K1ArQWZic0VBekowKzg4RGNIRyt3bVBQdWdaT09jVlBzRzhWYTJ3aWM4YUQ4Y1Q5bDl2aFh2Nnl2Tnl4aEFCalh4V2JXRm12MldnU1pwZkhGZ0ViTWVOVmpvUmlQOWJKOERnWkNWeTNwN1hVeW1JcmVadVZTM1BuMlBKdUJ0clJQNklXeTRWWUNQdURIbHZUR2N1QXRQNWlqTkc4TDdURWprTFI5SzBNRUdvV3NvTHA3M1c1ckM4dC9QZ1hPdHhuNGRhVGFVbVBweEZQU2pUQlVYV2U4aDcxamlMZlZkV0lGa0RMb0RmQUcxYzcrdjE5K1l1d05QLzlFZDkvd0cvbDBGd1lBeGVCVHo1dDFHeTNoZXdPMko2QksyREN6c3VoNlFtVGx3cnpnaUd6b0xub0l2OEY0Rk9sYkQwRTBPSi9WWXpXbThsUUlqNTdtZVlId2xMQnZrWUphbXJNNWJQc2NTVUdMTjJmWlZiRzB6VDRKN1BRRzhFaVpsNy93STNwSHBhcysrL2dYUC9wdW5nRFFITmNYNElwdWJtZmJPbVVBZkhnNTgzbUQ5R2JnZFAzc2tVLzF2ZnI3Mzhoc2FtOXdhZllOUno2OTJPYWFtQTRBS3huSnJNQ2pUTW9ROEp3MWwzUVZLWXpBeWhJcEo2U0dsUVRZdGZPbTVUWVNOajRpMWNCbFVZcWFuTWRjUXFYcUhlK3dLTDB5UkI2ODBWUmdJMlZXVXRsWkdOcXlRa1k3aThXY0c1NGlEZXZFSjZkUitTRVVQbEI2NmJtam41dzRjNFp2QU9CNCtsanVsbkxjTWw3dXBWTUd3UG1DYWZjMEN0OTM1djRQM1BYS2Q5NzJpOTNkUGRmd0c2Z3NoK3hUMUZ0WUJYaEZtNGVheGFOSVU4bW00WlUwWGV0TUpWY21id0hqRkoyWDlleUs1eThQanh5L0FSN1MyeVRLNVhWdm9PeE96NElSMk1udFlYenh3eXg4bWRobWY3Ny9VRjg4OWVYYjN2OEZKZW1Cb0wwRm1FK1lpdnVRcEtzOHJHQjdYQ2YzQUp4RG1QWUdtV1diZVBLVHArb1hqLzFaTi9jK2FsWllDUlJ6cXhlOExFaXQ2L2xZQVpKMUR4ZnVIZWN3WmpmZ3VNMUNwKzNReStlMDErT1o5RFk0cTlmcmFnTzlLMDBpWFFGY2FWN1dxcDhYZi9oMEdlK2pqR2dGc0VkZnJKbysrL3p0VDl6N1p5ZFZqaDVCUjJ4eFdxTFRwcDV2cHNvNDdLVHpJUWFrVVRTTzg4MjFsKy83NzdmcFlQNFp2dHpMYlVENFNLV0daVnJpY3NLcVpMT3VYRjI1UEVxRDg2Vm1pRzN1dWw0ZEc2SldKcktGdU4wcnF6S0t0azNtVytDakhYWFRIMTUxSG5ERURvT0Rlam1OSHlSaDJjODNLN3VYbHM1OC9YYnBRcGgzWFBsOXdreTVwNmZhN2pwcEFHQWVCL1FHMFVCODQveWpmM2hpNGR6UlA3SlZnTGl3dllCNHVpNXQ5UlVMcTJMZlVIS1lEeTRhMENKOXd6aktYMkd2NnEwTk1IS2xlV2xML2JRRFFyUnJoM25uaVM4eWora25oNW45OGVQNlhOM1VxV2R1ZWZDdWp4d25qeHlUb3hzQmI0WWxkT3JTU1FQZ1BIdEQwaFVBcDV4cUp6LzM3MjV0ek0wOTA2TkhJZmtaZXg3SGVZbHRocjZNTkNnR2ZYbnUwQnNFZE55V29OcmxkVjJwdGxxOTNxQnRsbk5IMmh6YllrWmdoN1VIbm5ocU5Dcmw1eWZZUitWUmZuMnUrcG5QLys0djNxb1E5LzdvUkQ1Qkt1eXRVTEJ6cnRNR2dFYmd2REZ1Qk16S1RUOTMzem41MzlMRTM4QUEySzJBTHZhZCtsQnVaMTNWQ2hTM1NYbDJGb2ViNHViYnJTM1duazFKWVBzeUQybmpiMXkvUE1wSFgvbU5SdDBDTkU0ZXV2OS9IWDMwM25QaUFuMUlaMy8weEhXbm8weDIraWxBeWp5TllzTDB4bUx4QnA3LzQzLzRoYi94bjE3NmJNK2Vneis3ekk5NHlCYjI2TUx2dlRVZDBVMHBYWWt3eXAvVWF6TjRFdDlWd2NTSTJRcG1XNGJhOWtqSSttVUh0UWRXZU9hL2QxaXp2Kzc1TVFBSDltcTZ2M2o2cy8vM3YvNGtPLzlNd3J6OVo1T2lvUGVPdDhLaGt0cnZPcjBDZ09PMFFZUjlGWURGczJYUG1YdC81VGV6aFlVVFBYb3FZTGNDTWdMZCtrNjJuY1NEUXVVcUNleENDVERZK2RqSHVIN0loWjhneHdEczM2TUpibW5oeEpjKzlxdi9ROGsrR2Zyc254b0JXdHhSNWFlQzdUQUExSU56NVM4YmdPVUxEMy8weE5Rem4vLzE3bHFqYms4RnpBRG9PYjE5M3owVXJxNlZCSGFiQkhqa042NWZjOXFuUjMzajhudjFReldqQTQzNmM0OTgvdGNmdXZNUFRxZzk2QUtUb0JzQTR1aEp4eFZmZFpqYlRnTkFoVzRFVXN1SEFHclAzL3FPZXhiT0hQbFFyNTZOOGlNWjV2V3VOQ3VCeWxVUzJHMFM0SWc3UCtXMlQ3K0ZaY292QTNCZ1hEOUtldUxJaC83a3ZlKzRXKzFCOTlaUy9tMHhBdHRsQUx3eHdMSVJRQWo0cnFOLzhLYmZYN3A0OGpOOWVrU0MzdHRYVW5WUFVLdU1nTVJUdWQwaUFWZisvVkorWnYyOVV2NnI5L08xMzlPZi9yMTN2ZWwvcXgzb0hkLzlYOHNBYkV0enQ4c0EwSmkxakVBUXh2ejh3dkZQdlAzWGxxY3ZQTkNybmRLd0NzQVE2UFhieWdoc3k0Q29Lcms4Q2ZDeG1EMjY1ejh3MXBYdDE2TStsdit2T0NDYUd0TzN2KzluZm0xK250K3FNc1ZQbGQvdi9ia0Z3TG11aEZnSHI5dHBBTHdadmdJbzd3VmdCSmFtWDN4bzRvVlAvK3RmYnN4ZWVyUlhLd0ZiQmVoWlJiZmVuZGE3QTlYR29FdXhnanRPQW54OW1sOXV2cXFrL04wTFU0OTg5a1AvNXQzSERuMXpnakV1WDU3OTBZbHRVL3BVY0ZmaUJ0dWZwamxNK1FIWFBYL3VxZG5GeVZOZkdiN2h4OTdZTTloL0RTS3p4MVh4ZmR3cjlYaXdUOGM0Ky9RTzk0Sys0MSt2NjZYaVZpMUlXN09EdzkwYXJJTTZtTUxIV09iMCt3UzczZEVXWmwvYTRpY0N0N05OL05UNFB2MTBPelAvUGkzNzhkZGNwUWxzL3RJamQzMzRsOTcxNkQyM3ZpUitFRFRLajA4My9zQzdBWEFvVk9mZGxUQUF0QXJWS1RjMFZhZnV1WmYrYW5yKzdOUDNqNzMyNzkvWU16UjRuWDA4T0ZnQktWNVl1R3kzSWFnTVFPY0g1RlpydUZJR2dFZlZ3d1BkV3U3amcrTHZaOWt2NWUrYXZmalZ6L3pPdi9vUGo5N3pDWlNmOGM3ei9yTHlnM2RkY0NqVTlyZ3JaUUJvblN1OHczS0x1eGZPSFptZGZ2YUw5NDY4L3FjUDlvMk0zb2lZTExNdXdRaXNWclJNcWozeHlnQzBSNDZkb0hJbERFQ3Zia3YzYUtmL2dINTMwbWQ5bnZOZnZVOWFmdkhVcDI5OTcwKzk1K2hEOTV4WGU1bmhVWDYvL3kvUC9vaGsyNVdmU25lQ0FZQ1AxVnhYZmZMVTRzdGYrNS8zN2ZtYjc2ejNqVjcxL1YxOGpBOVJtUkVJWHhPaThIWklyeklBcTNYVGxjZHZwd0hnK3hVam12WDNqV3JXMTA0L3lzOXUvOVU2NGJkM3VGR2ZlT0h3QnovNEwxNzdHK2ZQbnB5VlpGQjJYL1pqQU5nRDhFMC9IN1lPbGJTOTdrb2FBRnE2MmhUdUFnRmFudlBmL1BBM0I2NTU0NUdCZmRmZjNEM1FzMGUvb1JidXdiVUU2K0l0d2tqS0MzWkNqSlVCNklSVTIwTnpPd3lBZmNldlg2ZjZ0TkhIOC8xOWNjbVBBVGlvbmY3QnJ2bmp4eDc2OC8veWY5NzlsdHVrNGN6NktIeTY3UGVabjJIcXZqMEMyQ0tWSzIwQVlIczlJK0JONjVsNDRrK2ZsWG45MHNncmYyaHY5K0Rvalg1UUVBTGNpM0ZiME1uanc1VUI4SzdZZWJBVEJzQm5IM2IzQjZYNExQZE44WFdQNzgvM3I5TGhIcDd6TDAyZStzemRIL21QLy9tdWo3em5NWWFqdk0vNndQTE1mOFUyL2NvOXQ1cnlsZk4xT3U1OEFObmh3Mk9jOEhwWjJMemVGTWp3aHIvK0Z6Ny9FNFBmOWFQdnF2VVB2MjVSNGwyU1owYzc5OW9LNXNkQTJTaGNabHY0TXJlR0tUNGl5eitzbHpyQ2o0UHFOMnVkYXpHMW14eHQ0WmVJOSs3dHNhY1pGeTh5TWUxdVIxdDRzbkhod21LMnBCK0EzWXFqRkYxS3Z6TGJvL2k4eURQWXowWmYrSVFYRU0vSFBNWTE4OWNXWm8rZWVQSytEOTN5S3ovMUZ5cnF5M3RYZmhRZjRhWXovNDVSZnZHMTZ1eEwyblk3VnllZ0d3RWdieXppVTBOQWVIbndOWC8zd0t0LytzUC91SGYvamY4czYrazlpQkZZa3FneEFqdzFNS2hleFFBdzZCdENLQlJzQVloTk9MSlhCbUFUQXR2bXJCczFBR212KzREajVCNnZvcVB3K0g1K3B0MjgzdVRUbE1ObnUvRkRVbnplNVIvVGpOKzlWRDk5NmRTUmozL3V0Ly85bng0NzlKVnphaTVqRllYM0dkK1YzNDJDSzc2ejRIQ2JKZFZjbmN1Z0dYdmxZczRQRU8rR0FBT1FyZ2JjR0lCZkhyLzVGMTU5OVZ2ZTgvTzllMjk0UjliYmZ5MGZHc1VZbUJHUW1JRm1BQWliandaQkVmN3Nud1M1L0JvQ2hqTzg0cFVCeU1WeDJRSEU2NTFkRW5VVGJmS3NsZTZaOTYyeUFyQTZkR0dQaUpuZFozZi9vVmNVbnQvbjQ4QlpuMFpWL2t1OU1jd1Bkd3pvL1pSUnpmak0vTFhGK1pPVFo0NTk2b0hiZnVPVEQzL3hsaE9xbnpIS0RJL0N1MDluZlJSL1J5cS8rTXI3Z1BCT2N0WnZZc2dOZ0VOZkRhUXJBb3dCNmN1anIzL2JOUWZmK3FzLzNuZmdwcCtwOVkxOWp6NHIwSTB4V0U1V0Jia2hVQUhUZVkydXFQdUNaZzd5RVplZU0rQ0R4U1BEV2dyS1QwMDFzdWxwL1FpMWN5bGF1STBNMUpEenlsNXByOTBDak5mQ0xjREV5aC9VTGpYTkdBYVgvajZCeFlWcmxkZGI2REpDTnF2bGE4SjdwRVVCVHpJWUNSTW1PTDYzWmtvOE1kR3dXNER3ZXhNYUdFcGpkamVGVjlpT2x5dXVKM2dXNWxkNVVmNWVqU2ovbFY0TUFUL1Z6WXpQTC9iVWxyUzBYNXA2L09LSnB6NTMvKzN2dS92UVZ6LzNVbXdPaXUxS0Qwd1ZuNW5mRlIvb2JrY05FK1MzVTUzekJrVEIzYXU3N0pZQWlQSzdVY2dOUWRZN1BITHRQL2pOTjR4Yy82Ti9wM3YwMVQ5VTZ4MSt2WHA3bEJGb0JrRmRZNnNDZFl2MWhpNG9oWWRGYzBXWS9DTmErZzFySnBqVTE5dW5wOFBBSTY4NUsreVJuUTJEQWREbUZSK20wTENkNElDcW5BbGNGNkFyYmc3WHdLWGx5blNJUTlEeUpPRnlQQ2JsR1QwOXJUK2xBOTd5QU9YSDlmeWRWOGtuMVJadS9WQjg4S2I4Z3NVWHAwTFlEWUROL0NnL1NxK1pIc1hYZ2lEcldsNmVYSzVQSFowOS8rSTNqaCs2LzRFN2YvZmRoK3YxYWI3Ynp6aEVvWDNXZDZWM1NGcnFmV1E0VlBMT2NXcnFqblVwYjRRUnZFUENHQUEzQm00RUhJSjNnUS91Kzl2Lzl0cXhHOTkyVTkvK04zeHY5OUNCTjlSNmhyNHJxL1h1VjJtOVhCQ1ZYMTNtdHdxVU5JUGdGR0ljNWNkUHRUSUFxckNWY3hLdDBxNFVqcll4NEZNRGdHQk5xUlJ3NVhJbGFrcEw4NjBYcG9IUTgzeWJpYStSMTJnNlhXaHJOT3pSSXpsbTk2bkphQUNFODluZlBqS2pPT2tvUE4rZ1pNWW5ySC9VZFZHZm9uaDVlV0htK2ZucGM0ZlB2M0Q0OFdjZXV2T3ByMy8yOTA4cWxkL3Fvd2s0Wm5WWGRJZmczSmNWMzd2ZklUUjJsUE9HN1NpbVNzdzRqMEQzR0FEQzlGL1pZd1RBT2ZTOGRBNWwrclV5MkR2eStwOTh4ZUJWTjEvWHMrZFYxM1gzNzN0VlY5L3dLN3E2Ky9kMzFmcjJOR3ExNFM1RjFHdTlkdXBZcGVoQlZnRDRTUTB5WHdHZ1RPdTZqZVJabDBqN01wZ0IwRXlYR2dCVEZyWFRaczBFdWhGWUMzcGFXdGFOU0JOT1RUQjhwQzlRMUplbXBlRlNYaStUMDFGZVp2a3g3Y2lqNE16UnJBQXNIM0tYVjdpZU5aYm1hNDNsNmF5eE1MRzhPUC95MHNMMFMvTlQ1MStZdW5EeStYUEhIajl4N0xHN1R4MTk1SjZMS3NGemUwcENBdWZLN2NxZlFrOXp4WTgxMmdvZ2xBNjBQTHpqb0RkeXh6RldZaWpsazdCN2xEdjFaV05BbXVNODdHV3BnZzdEa2RiYk83U252Ly9nelVPOTQ5ODkzTFBudXVHKzBZTWpYUU5qSXowRGU0ZXk3c0doNFpHQndhR3hnZjdaK1o3K3VibGFmNjI3cDBjZks5QXFRZytndW1yYVRxcnBSMmthZ2h4STBQZERPWlRRMEYwemYxVFJXS2J1SGVIRWViWkh5K1pGeldOVGx5UlFzU2ZHRFpwQ2kwdFRYdUVSanVFSWswZnhwcndSaHlLYVlwS2ZzSmZ6ZE1VaFpuUVZOT01LVkxyUWVWbkpVcUpqajZXcm9mclVSeEtpQkN1MEh1TjBMVW1PVXJqbEpSWFR6OHd1TERVYWk0dURBOHZ6V1dOeGZ2TFMzUHpTL056c1luMTJabUhxd3N6Q3pLV3BtWW5UVXhObmowOWZQUFhNOU9uamZ6VXpNekV4cCtxNFowZHhjVlNQWXp5NE1xUGNoRjNKVStoNG9KY0J1bGZRSFBFZDdlaWozZVJTZmdtN3B3TnRERVdJMGpzT1dJNm5hZER3c2dvYVRTRE9PNVE4M3BrZUJ1SWNsc09XV0VwM1hBVTNMZ0dYZTFvaXhYbllZWnFQc1BkUDJtL2tkZVgxTVBIVXV3RndYRG51NVlEdUZUUkhmRmM0Rjg2dVlEWmhNdVdiY09wZG1WUFlTdUU5bmJKcE9LWGxZYW9takhOWURsdGlLZDF4Rld5UEJGb3BWaG5uY1dBNTdEaUhiZ1JTV0E2N0FTaVg4VGpRWFJwMjNJNkc2V0RlMFl5dXdsektQK0gxZktyb2FiaFZPYXAwdklkYlFYQ3BvMHpsT2lPQnRSVE0wMXJCRkVlNDdGM3B3YWRoajlNYThMaTBiTUFVaHNianV3Wit1d3pXdEIwZUJwYkRhK0hLZWVuRWN2NjBZejEvaWl1SE41S25YS2FLcjVRQVNyY1JsK2J6c0NzczVWdUZIZWN3elZmR2VSb1FSL3F1ZHQ5T0E1UzIwQ0hsTm5rY21JYnB1TlZ3cExrcmwzRTgwTk5TWEJwZUx6M05XNFZYbDhCNml0WXEzWEVPb2U3aGpjQnlIdWZPOFI3ZjFmRGJmWUNXMjVmR054S21jOU44YVdldmhrL3pWT0h0bFVBcjVVeHhhUmpPUE80d3hhV2NrMDUvcC9uUzlGMGIvazRaeE41NWE3VzNuTGFWTXJ0MklPeHl4dGRTek5YUzFzTDdXRmd0enk0WFY4RytON1RBZkdlRkxyZjlsMXYrTzB2YW5XdnQ1U3JxNVpidlhNczZUTGthd0JzVGNDV25qY2xwcCtYNmpsWHNuZFlSRlQrVkJDb0pWQktvSkZCSm9KSkFKWUZLQXBVRUtnbFVFcWdrVUVtZ2trQWxnVW9DbFFRcUNWUVNxQ1JRU2FDU1FDV0JTZ0tWQkNvSlZCS29KRkJKb0pKQUpZRktBcFVFS2dsVUVxZ2tVRW1na2tBbGdVb0NsUVFxQ1ZRU3FDUlFTYUNTUUNXQlNnS1ZCQ29KVkJLb0pGQkpvSkpBSllGS0FwVUVLZ2xVRXFna1VFbWdrc0RHSmZEL0FiUEhaeUY3ZWlnRkFBQUFBRWxGVGtTdVFtQ0MiPgo8c3R5bGU+KiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94fWh0bWwsYm9keXttYXJnaW46MDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59PC9zdHlsZT4KPHN0eWxlPi8qISB0YWlsd2luZGNzcyB2NC4xLjE0IHwgTUlUIExpY2Vuc2UgfCBodHRwczovL3RhaWx3aW5kY3NzLmNvbSAqL0BsYXllciBwcm9wZXJ0aWVzO0BsYXllciB0aGVtZSxiYXNlLGNvbXBvbmVudHMsdXRpbGl0aWVzO0BsYXllciB0aGVtZXs6cm9vdCw6aG9zdHstLWZvbnQtc2Fuczp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7LS1mb250LW1vbm86dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLG1vbm9zcGFjZTstLWNvbG9yLWFtYmVyLTQwMDpva2xjaCg4Mi44JSAuMTg5IDg0LjQyOSk7LS1jb2xvci1lbWVyYWxkLTQwMDpva2xjaCg3Ni41JSAuMTc3IDE2My4yMjMpOy0tY29sb3Itc2t5LTQwMDpva2xjaCg3NC42JSAuMTYgMjMyLjY2MSk7LS1jb2xvci1ibGFjazojMDAwOy0tY29sb3Itd2hpdGU6I2ZmZjstLXNwYWNpbmc6LjI1cmVtOy0tZm9udC13ZWlnaHQtbWVkaXVtOjUwMDstLWZvbnQtd2VpZ2h0LXNlbWlib2xkOjYwMDstLXRyYWNraW5nLXdpZGU6LjAyNWVtOy0tbGVhZGluZy10aWdodDoxLjI1Oy0tbGVhZGluZy1zbnVnOjEuMzc1Oy0tcmFkaXVzLXhzOi4xMjVyZW07LS1yYWRpdXMtbWQ6LjM3NXJlbTstLXJhZGl1cy1sZzouNXJlbTstLXJhZGl1cy14bDouNzVyZW07LS1lYXNlLW91dDpjdWJpYy1iZXppZXIoMCwwLC4yLDEpOy0tYmx1ci1tZDoxMnB4Oy0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7LS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpOy0tZGVmYXVsdC1mb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpOy0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyk7LS1jb2xvci1wYW5lbDojMWMxYzFlOy0tY29sb3ItcGFuZWwtYmc6dmFyKC0tc2VydmUtc2ltLXBhbmVsLWJnKTstLWNvbG9yLXBhbmVsLWJnLXRyYW5zbHVjZW50OnZhcigtLXNlcnZlLXNpbS1wYW5lbC1iZy10cmFuc2x1Y2VudCk7LS1jb2xvci1wYW5lbC1vdmVybGF5OiMxODE4MThhNjstLWNvbG9yLXBhbmVsLWRlZXA6IzExMTExMzstLWNvbG9yLXBhZ2U6IzBhMGEwYTstLWNvbG9yLWFjY2VudDojYTViNGZjOy0tY29sb3Itc3VjY2Vzcy1lbWVyYWxkOiMzNGQzOTk7LS1jb2xvci1kYW5nZXI6I2Y4NzE3MTstLWNvbG9yLWRhbmdlci1zb2Z0OiNmY2E1YTU7LS1jb2xvci13YXJuaW5nOiNmYmJmMjQ7LS1jb2xvci13YXJuaW5nLXNvZnQ6I2ZjZDM0ZDstLWZvbnQtc3lzdGVtOi1hcHBsZS1zeXN0ZW0sc3lzdGVtLXVpLHNhbnMtc2VyaWZ9fUBsYXllciBiYXNleyosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkO21hcmdpbjowO3BhZGRpbmc6MH06OmJhY2tkcm9we2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXI6MCBzb2xpZDttYXJnaW46MDtwYWRkaW5nOjB9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOjAgc29saWQ7bWFyZ2luOjA7cGFkZGluZzowfTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkO21hcmdpbjowO3BhZGRpbmc6MH1odG1sLDpob3N0ey13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO3RhYi1zaXplOjQ7bGluZS1oZWlnaHQ6MS41O2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtZm9udC1mYW1pbHksdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1mb250LWZlYXR1cmUtc2V0dGluZ3Msbm9ybWFsKTtmb250LXZhcmlhdGlvbi1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLG5vcm1hbCk7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWhye2NvbG9yOmluaGVyaXQ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7aGVpZ2h0OjB9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHNhbXAscHJle2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtbW9uby1mb250LWZhbWlseSx1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLCJMaWJlcmF0aW9uIE1vbm8iLCJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtbW9uby1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MH1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOmF1dG99cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1vbCx1bCxtZW51e2xpc3Qtc3R5bGU6bm9uZX1pbWcsc3ZnLHZpZGVvLGNhbnZhcyxhdWRpbyxpZnJhbWUsZW1iZWQsb2JqZWN0e2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31idXR0b24saW5wdXQsc2VsZWN0LG9wdGdyb3VwLHRleHRhcmVhe2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtvcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjojMDAwMDtib3JkZXItcmFkaXVzOjB9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbntmb250OmluaGVyaXQ7Zm9udC1mZWF0dXJlLXNldHRpbmdzOmluaGVyaXQ7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7b3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6IzAwMDA7Ym9yZGVyLXJhZGl1czowfTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Zm9udDppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtjb2xvcjppbmhlcml0O29wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlci1yYWRpdXM6MH06d2hlcmUoc2VsZWN0Oi13ZWJraXQtYW55KFttdWx0aXBsZV0sW3NpemVdKSkgb3B0Z3JvdXB7Zm9udC13ZWlnaHQ6Ym9sZGVyfTp3aGVyZShzZWxlY3Q6LW1vei1hbnkoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cHtmb250LXdlaWdodDpib2xkZXJ9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OmJvbGRlcn06d2hlcmUoc2VsZWN0Oi13ZWJraXQtYW55KFttdWx0aXBsZV0sW3NpemVdKSkgb3B0Z3JvdXAgb3B0aW9ue3BhZGRpbmctaW5saW5lLXN0YXJ0OjIwcHh9OndoZXJlKHNlbGVjdDotbW96LWFueShbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3VwIG9wdGlvbntwYWRkaW5nLWlubGluZS1zdGFydDoyMHB4fTp3aGVyZShzZWxlY3Q6aXMoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cCBvcHRpb257cGFkZGluZy1pbmxpbmUtc3RhcnQ6MjBweH06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue21hcmdpbi1pbmxpbmUtZW5kOjRweH06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue21hcmdpbi1pbmxpbmUtZW5kOjRweH06OnBsYWNlaG9sZGVye29wYWNpdHk6MX1Ac3VwcG9ydHMgKCBub3QgKC13ZWJraXQtYXBwZWFyYW5jZTogLWFwcGxlLXBheS1idXR0b24pKSBvciAoY29udGFpbi1pbnRyaW5zaWMtc2l6ZTogMXB4KXs6OnBsYWNlaG9sZGVye2NvbG9yOmN1cnJlbnRDb2xvcn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpezo6cGxhY2Vob2xkZXJ7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGN1cnJlbnRjb2xvciA1MCUsdHJhbnNwYXJlbnQpfX19dGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsfTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZXt0ZXh0LWFsaWduOmluaGVyaXQ7bWluLWhlaWdodDoxbGh9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXR7ZGlzcGxheTppbmxpbmUtZmxleH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1maWVsZHMtd3JhcHBlcntwYWRkaW5nOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXR7cGFkZGluZy1ibG9jay1zdGFydDowO3BhZGRpbmctYmxvY2stZW5kOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQteWVhci1maWVsZHtwYWRkaW5nLWJsb2NrLXN0YXJ0OjA7cGFkZGluZy1ibG9jay1lbmQ6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tb250aC1maWVsZHtwYWRkaW5nLWJsb2NrLXN0YXJ0OjA7cGFkZGluZy1ibG9jay1lbmQ6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGR7cGFkZGluZy1ibG9jay1zdGFydDowO3BhZGRpbmctYmxvY2stZW5kOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZHtwYWRkaW5nLWJsb2NrLXN0YXJ0OjA7cGFkZGluZy1ibG9jay1lbmQ6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUtZmllbGR7cGFkZGluZy1ibG9jay1zdGFydDowO3BhZGRpbmctYmxvY2stZW5kOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtc2Vjb25kLWZpZWxke3BhZGRpbmctYmxvY2stc3RhcnQ6MDtwYWRkaW5nLWJsb2NrLWVuZDowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbGxpc2Vjb25kLWZpZWxke3BhZGRpbmctYmxvY2stc3RhcnQ6MDtwYWRkaW5nLWJsb2NrLWVuZDowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1lcmlkaWVtLWZpZWxke3BhZGRpbmctYmxvY2stc3RhcnQ6MDtwYWRkaW5nLWJsb2NrLWVuZDowfTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye2xpbmUtaGVpZ2h0OjF9Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9YnV0dG9ue2FwcGVhcmFuY2U6YnV0dG9ufWlucHV0OndoZXJlKFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF0pe2FwcGVhcmFuY2U6YnV0dG9ufTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257YXBwZWFyYW5jZTpidXR0b259OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnthcHBlYXJhbmNlOmJ1dHRvbn06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfVtoaWRkZW5dOndoZXJlKDpub3QoW2hpZGRlbj11bnRpbC1mb3VuZF0pKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbGF5ZXIgdXRpbGl0aWVzey5cW2NvbnRhaW5lci10eXBlXDppbmxpbmUtc2l6ZVxde2NvbnRhaW5lci10eXBlOmlubGluZS1zaXplfS5wb2ludGVyLWV2ZW50cy1hdXRve3BvaW50ZXItZXZlbnRzOmF1dG99LnBvaW50ZXItZXZlbnRzLW5vbmV7cG9pbnRlci1ldmVudHM6bm9uZX0uY29sbGFwc2V7dmlzaWJpbGl0eTpjb2xsYXBzZX0uaW52aXNpYmxle3Zpc2liaWxpdHk6aGlkZGVufS52aXNpYmxle3Zpc2liaWxpdHk6dmlzaWJsZX0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47Y2xpcC1wYXRoOmluc2V0KDUwJSk7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlci13aWR0aDowO3dpZHRoOjFweDtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O3BhZGRpbmc6MH0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LmZpeGVke3Bvc2l0aW9uOmZpeGVkfS5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0uc3RhdGlje3Bvc2l0aW9uOnN0YXRpY30uc3RpY2t5e3Bvc2l0aW9uOnN0aWNreX0uaW5zZXQtMHtpbnNldDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS50b3AtMHt0b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTJ7dG9wOmNhbGModmFyKC0tc3BhY2luZykqMil9LnRvcC0ze3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS50b3AtXFsycHhcXXt0b3A6MnB4fS50b3AtXFtjYWxjXCgxMDBcJVwrNHB4XClcXXt0b3A6Y2FsYygxMDAlICsgNHB4KX0udG9wLVxbY2FsY1woMTAwXCVcKzZweFwpXF17dG9wOmNhbGMoMTAwJSArIDZweCl9LnRvcC1mdWxse3RvcDoxMDAlfS5yaWdodC0we3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMCl9LnJpZ2h0LTBcLjV7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LnJpZ2h0LTJcLjV7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5yaWdodC0ze3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMyl9LnJpZ2h0LVxbOXB4XF17cmlnaHQ6OXB4fS5ib3R0b20tMHtib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uYm90dG9tLTBcLjV7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5ib3R0b20tM3tib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0ubGVmdC0we2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubGVmdC0xXC8ye2xlZnQ6NTAlfS5sZWZ0LTJcLjV7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LmxlZnQtM3tsZWZ0OmNhbGModmFyKC0tc3BhY2luZykqMyl9LnotMXt6LWluZGV4OjF9LnotMTB7ei1pbmRleDoxMH0uei0yMHt6LWluZGV4OjIwfS56LTMwe3otaW5kZXg6MzB9LnotMzV7ei1pbmRleDozNX0uei0zNnt6LWluZGV4OjM2fS56LTQwe3otaW5kZXg6NDB9LnotNTB7ei1pbmRleDo1MH0uY29udGFpbmVye3dpZHRoOjEwMCV9QG1lZGlhIChtaW4td2lkdGg6NDByZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjQwcmVtfX1AbWVkaWEgKG1pbi13aWR0aDo0OHJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NDhyZW19fUBtZWRpYSAobWluLXdpZHRoOjY0cmVtKXsuY29udGFpbmVye21heC13aWR0aDo2NHJlbX19QG1lZGlhIChtaW4td2lkdGg6ODByZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjgwcmVtfX1AbWVkaWEgKG1pbi13aWR0aDo5NnJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6OTZyZW19fS5tLTB7bWFyZ2luOmNhbGModmFyKC0tc3BhY2luZykqMCl9Li1teC0xe21hcmdpbi1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSotMSl9Lm14LTBcLjV7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uLW15LTJ7bWFyZ2luLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqLTIpfS5teS0xe21hcmdpbi1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5tdC0wXC41e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9Lm10LTF7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5tdC0ye21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0ubXQtXFszcHhcXXttYXJnaW4tdG9wOjNweH0ubXItXFszcHhcXXttYXJnaW4tcmlnaHQ6M3B4fS5tbC0wXC41e21hcmdpbi1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5tbC0xXC41e21hcmdpbi1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ubWwtYXV0b3ttYXJnaW4tbGVmdDphdXRvfS5ib3gtYm9yZGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH0uYmxvY2t7ZGlzcGxheTpibG9ja30uY29udGVudHN7ZGlzcGxheTpjb250ZW50c30uZmxleHtkaXNwbGF5OmZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5oaWRkZW57ZGlzcGxheTpub25lfS5pbmxpbmV7ZGlzcGxheTppbmxpbmV9LmlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0udGFibGV7ZGlzcGxheTp0YWJsZX0uXFthc3BlY3QtcmF0aW9cOjE2XC8xMVxde2FzcGVjdC1yYXRpbzoxNi8xMX0uc2l6ZS0xXC41e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMS41KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5zaXplLTJcLjV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LnNpemUtM1wuNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMy41KX0uc2l6ZS00e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LnNpemUtNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpfS5zaXplLTl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KX0uc2l6ZS1cWzJweFxde3dpZHRoOjJweDtoZWlnaHQ6MnB4fS5zaXplLVxbMTRweFxde3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHh9LnNpemUtXFsxOHB4XF17d2lkdGg6MThweDtoZWlnaHQ6MThweH0uc2l6ZS1cWzE5cHhcXXt3aWR0aDoxOXB4O2hlaWdodDoxOXB4fS5zaXplLWZ1bGx7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uaC0yXC41e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LmgtM3toZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uaC0zXC41e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSl9LmgtNHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uaC01e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpfS5oLTVcLjV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNS41KX0uaC02e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5oLTd7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNyl9LmgtOHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uaC0xMHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9LmgtXFszcHhcXXtoZWlnaHQ6M3B4fS5oLVxbMTNweFxde2hlaWdodDoxM3B4fS5oLVxbMTRweFxde2hlaWdodDoxNHB4fS5oLVxbMTZweFxde2hlaWdodDoxNnB4fS5oLVxbMThweFxde2hlaWdodDoxOHB4fS5oLVxbMjJweFxde2hlaWdodDoyMnB4fS5oLVxbMjZweFxde2hlaWdodDoyNnB4fS5oLVxbMzBweFxde2hlaWdodDozMHB4fS5oLWZ1bGx7aGVpZ2h0OjEwMCV9LmgtcHh7aGVpZ2h0OjFweH0uaC1zY3JlZW57aGVpZ2h0OjEwMHZofS5tYXgtaC05MHttYXgtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqOTApfS5tYXgtaC1cWzI2MHB4XF17bWF4LWhlaWdodDoyNjBweH0ubWF4LWgtXFszMjBweFxde21heC1oZWlnaHQ6MzIwcHh9Lm1heC1oLWZ1bGx7bWF4LWhlaWdodDoxMDAlfS5taW4taC0we21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubWluLWgtXFsyMnB4XF17bWluLWhlaWdodDoyMnB4fS5taW4taC1cWzMwcHhcXXttaW4taGVpZ2h0OjMwcHh9Lm1pbi1oLVxbMzZweFxde21pbi1oZWlnaHQ6MzZweH0ubWluLWgtXFs0NHB4XF17bWluLWhlaWdodDo0NHB4fS5taW4taC1weHttaW4taGVpZ2h0OjFweH0udy0xe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnctMlwuNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LnctM1wuNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSl9LnctNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS53LTV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0udy02e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNil9LnctN3t3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS53LTh7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0udy0xMHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjEwKX0udy0yMXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjIxKX0udy1cWzIycHhcXXt3aWR0aDoyMnB4fS53LVxbMzBweFxde3dpZHRoOjMwcHh9LnctXFszMlwlXF17d2lkdGg6MzIlfS53LVxbMzZcJVxde3dpZHRoOjM2JX0udy1cWzQwXCVcXXt3aWR0aDo0MCV9LnctXFs0MlwlXF17d2lkdGg6NDIlfS53LVxbNDZcJVxde3dpZHRoOjQ2JX0udy1cWzQ4XCVcXXt3aWR0aDo0OCV9LnctXFs1OFwlXF17d2lkdGg6NTglfS53LVxbNjJcJVxde3dpZHRoOjYyJX0udy1cWzY4XCVcXXt3aWR0aDo2OCV9LnctXFs3MFwlXF17d2lkdGg6NzAlfS53LVxbNzRcJVxde3dpZHRoOjc0JX0udy1cWzEyMHB4XF17d2lkdGg6MTIwcHh9LnctXFtjYWxjXCgxMDBcJVwrOHB4XClcXXt3aWR0aDpjYWxjKDEwMCUgKyA4cHgpfS53LVxbbWluXCgzMjBweFwsY2FsY1woMTAwdnctMzJweFwpXClcXXt3aWR0aDptaW4oMzIwcHgsMTAwdncgLSAzMnB4KX0udy1mdWxse3dpZHRoOjEwMCV9LnctbWF4e3dpZHRoOm1heC1jb250ZW50fS53LXB4e3dpZHRoOjFweH0ubWF4LXctOTB7bWF4LXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqOTApfS5tYXgtdy0xMjB7bWF4LXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTIwKX0ubWF4LXctXFsxNTBweFxde21heC13aWR0aDoxNTBweH0ubWF4LXctXFsyMjBweFxde21heC13aWR0aDoyMjBweH0ubWF4LXctXFszNjBweFxde21heC13aWR0aDozNjBweH0ubWF4LXctZnVsbHttYXgtd2lkdGg6MTAwJX0ubWluLXctMHttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubWluLXctXFs1NnB4XF17bWluLXdpZHRoOjU2cHh9Lm1pbi13LVxbMjAwcHhcXXttaW4td2lkdGg6MjAwcHh9Lm1pbi13LVxbMjIwcHhcXXttaW4td2lkdGg6MjIwcHh9Lm1pbi13LXB4e21pbi13aWR0aDoxcHh9LmZsZXgtMXtmbGV4OjF9LnNocmlua3tmbGV4LXNocmluazoxfS5zaHJpbmstMHtmbGV4LXNocmluazowfS5ncm93e2ZsZXgtZ3JvdzoxfS4tdHJhbnNsYXRlLXgtMVwvMnstLXR3LXRyYW5zbGF0ZS14OmNhbGMoY2FsYygxLzIqMTAwJSkqLTEpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCl2YXIoLS10dy10cmFuc2xhdGUteSl9LnRyYW5zbGF0ZS14LTF7LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjEpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCl2YXIoLS10dy10cmFuc2xhdGUteSl9Li10cmFuc2xhdGUteS0xXC8yey0tdHctdHJhbnNsYXRlLXk6Y2FsYyhjYWxjKDEvMioxMDAlKSotMSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KXZhcigtLXR3LXRyYW5zbGF0ZS15KX0udHJhbnNmb3Jte3RyYW5zZm9ybTp2YXIoLS10dy1yb3RhdGUteCwpdmFyKC0tdHctcm90YXRlLXksKXZhcigtLXR3LXJvdGF0ZS16LCl2YXIoLS10dy1za2V3LXgsKXZhcigtLXR3LXNrZXcteSwpfS5hbmltYXRlLVxbZ3JpZC1zcGluXzBcLjdzX2xpbmVhcl9pbmZpbml0ZVxde2FuaW1hdGlvbjpncmlkLXNwaW4gLjdzIGxpbmVhciBpbmZpbml0ZX0uYW5pbWF0ZS1cW2dyaWQtc3Bpbl8wXC44c19saW5lYXJfaW5maW5pdGVcXXthbmltYXRpb246Z3JpZC1zcGluIC44cyBsaW5lYXIgaW5maW5pdGV9LmN1cnNvci1jb2wtcmVzaXple2N1cnNvcjpjb2wtcmVzaXplfS5jdXJzb3ItZGVmYXVsdHtjdXJzb3I6ZGVmYXVsdH0uY3Vyc29yLW5vdC1hbGxvd2Vke2N1cnNvcjpub3QtYWxsb3dlZH0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmN1cnNvci1wcm9ncmVzc3tjdXJzb3I6cHJvZ3Jlc3N9LmN1cnNvci10ZXh0e2N1cnNvcjp0ZXh0fS50b3VjaC1ub25le3RvdWNoLWFjdGlvbjpub25lfS5yZXNpemV7cmVzaXplOmJvdGh9Lmxpc3Qtbm9uZXtsaXN0LXN0eWxlLXR5cGU6bm9uZX0uYXBwZWFyYW5jZS1ub25le2FwcGVhcmFuY2U6bm9uZX0uXFtncmlkLXRlbXBsYXRlLWNvbHVtbnNcOjFmcl8xZnJfMWZyXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnIgMWZyfS5cW2dyaWQtdGVtcGxhdGUtY29sdW1uc1w6YXV0b18xZnJfYXV0b1xde2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmciBhdXRvfS5cW2dyaWQtdGVtcGxhdGUtY29sdW1uc1w6YXV0b19taW5tYXhcKDBcLDFmclwpX2F1dG9cXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byBtaW5tYXgoMCwxZnIpYXV0b30uZ3JpZC1jb2xzLVxbNTZweF8xZnJfYXV0b1xde2dyaWQtdGVtcGxhdGUtY29sdW1uczo1NnB4IDFmciBhdXRvfS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uZmxleC1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcH0ucGxhY2UtaXRlbXMtY2VudGVye3BsYWNlLWl0ZW1zOiBjZW50ZXJ9Lml0ZW1zLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6IGNlbnRlcn0uaXRlbXMtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNofS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZ2FwLTBcLjV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5nYXAtMXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0uZ2FwLTFcLjV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0uZ2FwLTJ7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMil9LmdhcC0yXC41e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LmdhcC0ze2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5nYXAtNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0uZ2FwLVxbNXB4XF17Z2FwOjVweH0uZ2FwLXB4e2dhcDoxcHh9Lmp1c3RpZnktc2VsZi1lbmR7anVzdGlmeS1zZWxmOmZsZXgtZW5kfS50cnVuY2F0ZXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm92ZXJmbG93LWhpZGRlbntvdmVyZmxvdzpoaWRkZW59Lm92ZXJmbG93LXktYXV0b3tvdmVyZmxvdy15OmF1dG99LnJvdW5kZWR7Ym9yZGVyLXJhZGl1czouMjVyZW19LnJvdW5kZWQtXFsycHhcXXtib3JkZXItcmFkaXVzOjJweH0ucm91bmRlZC1cWzNweFxde2JvcmRlci1yYWRpdXM6M3B4fS5yb3VuZGVkLVxbNHB4XF17Ym9yZGVyLXJhZGl1czo0cHh9LnJvdW5kZWQtXFs1cHhcXXtib3JkZXItcmFkaXVzOjVweH0ucm91bmRlZC1cWzdweFxde2JvcmRlci1yYWRpdXM6N3B4fS5yb3VuZGVkLVxbOHB4XF17Ym9yZGVyLXJhZGl1czo4cHh9LnJvdW5kZWQtXFs5cHhcXXtib3JkZXItcmFkaXVzOjlweH0ucm91bmRlZC1cWzEwcHhcXXtib3JkZXItcmFkaXVzOjEwcHh9LnJvdW5kZWQtXFsxNHB4XF17Ym9yZGVyLXJhZGl1czoxNHB4fS5yb3VuZGVkLWZ1bGx7Ym9yZGVyLXJhZGl1czozLjQwMjgyZTM4cHh9LnJvdW5kZWQtbGd7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbGcpfS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKX0ucm91bmRlZC1ub25le2JvcmRlci1yYWRpdXM6MH0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy14bCl9LnJvdW5kZWQteHN7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMteHMpfS5yb3VuZGVkLXQtXFsxMHB4XF17Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxMHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjEwcHh9LmJvcmRlcntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItMHtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0uYm9yZGVyLTJ7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjJweH0uYm9yZGVyLXR7Ym9yZGVyLXRvcC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci10b3Atd2lkdGg6MXB4fS5ib3JkZXItcntib3JkZXItcmlnaHQtc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItcmlnaHQtd2lkdGg6MXB4fS5ib3JkZXItZGFzaGVkey0tdHctYm9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItc3R5bGU6ZGFzaGVkfS5ib3JkZXItbm9uZXstLXR3LWJvcmRlci1zdHlsZTpub25lO2JvcmRlci1zdHlsZTpub25lfS5cIWJvcmRlci1cW3JnYmFcKDEwXCwxMzJcLDI1NVwsMFwuNlwpXF17Ym9yZGVyLWNvbG9yOiMwYTg0ZmY5OSFpbXBvcnRhbnR9LmJvcmRlci1cW1wjM2I1Zjk5XF17Ym9yZGVyLWNvbG9yOiMzYjVmOTl9LmJvcmRlci1cW1wjNWY2MjY4XF17Ym9yZGVyLWNvbG9yOiM1ZjYyNjh9LmJvcmRlci1cW1wjMjIyXF17Ym9yZGVyLWNvbG9yOiMyMjJ9LmJvcmRlci1cW1wjZmY0NTNhXF1cLzUwe2JvcmRlci1jb2xvcjojZmY0NTNhODA7Ym9yZGVyLWNvbG9yOmNvbG9yKGRpc3BsYXktcDMgLjkyMjY3MyAuMzMzMTM0IC4yNzE1MS8uNSk7Ym9yZGVyLWNvbG9yOmxhYig1OC43NjI4JSA2OS44NDY3IDUwLjM4ODYvLjUpfS5ib3JkZXItYWNjZW50e2JvcmRlci1jb2xvcjp2YXIoLS1jb2xvci1hY2NlbnQpfS5ib3JkZXItZGFuZ2VyXC8yMHtib3JkZXItY29sb3I6I2Y4NzE3MTMzfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci1kYW5nZXJcLzIwe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItZGFuZ2VyKTIwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItZGFuZ2VyXC8zMHtib3JkZXItY29sb3I6I2Y4NzE3MTRkfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci1kYW5nZXJcLzMwe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItZGFuZ2VyKTMwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2FybmluZ1wvMjV7Ym9yZGVyLWNvbG9yOiNmYmJmMjQ0MH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ib3JkZXItd2FybmluZ1wvMjV7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13YXJuaW5nKTI1JSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGV7Ym9yZGVyLWNvbG9yOnZhcigtLWNvbG9yLXdoaXRlKX0uYm9yZGVyLXdoaXRlXC84e2JvcmRlci1jb2xvcjojZmZmZmZmMTR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC84e2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOCUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXdoaXRlXC8xMHtib3JkZXItY29sb3I6I2ZmZmZmZjFhfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci13aGl0ZVwvMTB7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMCUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXdoaXRlXC8xMntib3JkZXItY29sb3I6I2ZmZmZmZjFmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci13aGl0ZVwvMTJ7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMiUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXdoaXRlXC8yMHtib3JkZXItY29sb3I6I2ZmZjN9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC8yMHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTIwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcLzI1e2JvcmRlci1jb2xvcjojZmZmZmZmNDB9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC8yNXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTI1JSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcLzMwe2JvcmRlci1jb2xvcjojZmZmZmZmNGR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC8zMHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTMwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcL1xbMFwuMDZcXXtib3JkZXItY29sb3I6I2ZmZmZmZjBmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci13aGl0ZVwvXFswXC4wNlxde2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNiUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXQtXFtcI2Y0ZjRmNVxde2JvcmRlci10b3AtY29sb3I6I2Y0ZjRmNX0uYm9yZGVyLXQtd2hpdGV7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jb2xvci13aGl0ZSl9LmJvcmRlci10LXdoaXRlXC82MHtib3JkZXItdG9wLWNvbG9yOiNmZmY5fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci10LXdoaXRlXC82MHtib3JkZXItdG9wLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk2MCUsdHJhbnNwYXJlbnQpfX0uXCFiZy1cW3JnYmFcKDEwXCwxMzJcLDI1NVwsMFwuMDhcKVxde2JhY2tncm91bmQtY29sb3I6IzBhODRmZjE0IWltcG9ydGFudH0uXCFiZy13aGl0ZVwvXFswXC4xMlxde2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjFmIWltcG9ydGFudH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5cIWJnLXdoaXRlXC9cWzBcLjEyXF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMTIlLHRyYW5zcGFyZW50KSFpbXBvcnRhbnR9fS5iZy1cW1wjMGEwYTBjXF17YmFja2dyb3VuZC1jb2xvcjojMGEwYTBjfS5iZy1cW1wjMGE4NGZmXF17YmFja2dyb3VuZC1jb2xvcjojMGE4NGZmfS5iZy1cW1wjMWMxYzFjXF17YmFja2dyb3VuZC1jb2xvcjojMWMxYzFjfS5iZy1cW1wjNmU2ZTcyXF17YmFja2dyb3VuZC1jb2xvcjojNmU2ZTcyfS5iZy1cW1wjOWE5YTllXF17YmFja2dyb3VuZC1jb2xvcjojOWE5YTllfS5iZy1cW1wjMjAyYjNhXF17YmFja2dyb3VuZC1jb2xvcjojMjAyYjNhfS5iZy1cW1wjMjIyXF17YmFja2dyb3VuZC1jb2xvcjojMjIyfS5iZy1cW1wjMjYzNjRjXF17YmFja2dyb3VuZC1jb2xvcjojMjYzNjRjfS5iZy1cW1wjMTAxMDEwXF17YmFja2dyb3VuZC1jb2xvcjojMTAxMDEwfS5iZy1cW1wjZjg3MTcxXF17YmFja2dyb3VuZC1jb2xvcjojZjg3MTcxfS5iZy1cW1wjZmY0NTNhXF1cLzEwe2JhY2tncm91bmQtY29sb3I6I2ZmNDUzYTFhO2JhY2tncm91bmQtY29sb3I6Y29sb3IoZGlzcGxheS1wMyAuOTIyNjczIC4zMzMxMzQgLjI3MTUxLy4xKTtiYWNrZ3JvdW5kLWNvbG9yOmxhYig1OC43NjI4JSA2OS44NDY3IDUwLjM4ODYvLjEpfS5iZy1cW3JnYmFcKDEwXCwxMzJcLDI1NVwsMFwuMjJcKVxde2JhY2tncm91bmQtY29sb3I6IzBhODRmZjM4fS5iZy1cW3JnYmFcKDk5XCwxMDJcLDI0MVwsMFwuMThcKVxde2JhY2tncm91bmQtY29sb3I6IzYzNjZmMTJlfS5iZy1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1hY2NlbnQpfS5iZy1ibGFja3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLWJsYWNrKX0uYmctYmxhY2tcLzkwe2JhY2tncm91bmQtY29sb3I6IzAwMDAwMGU2fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLWJsYWNrXC85MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1ibGFjayk5MCUsdHJhbnNwYXJlbnQpfX0uYmctZGFuZ2VyLXNvZnR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1kYW5nZXItc29mdCl9LmJnLWRhbmdlclwvMTB7YmFja2dyb3VuZC1jb2xvcjojZjg3MTcxMWF9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctZGFuZ2VyXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1kYW5nZXIpMTAlLHRyYW5zcGFyZW50KX19LmJnLXBhZ2V7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wYWdlKX0uYmctcGFuZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wYW5lbCl9LmJnLXBhbmVsLWJne2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcGFuZWwtYmcpfS5iZy1wYW5lbC1iZy10cmFuc2x1Y2VudHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXBhbmVsLWJnLXRyYW5zbHVjZW50KX0uYmctcGFuZWwtZGVlcHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXBhbmVsLWRlZXApfS5iZy1wYW5lbC1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcGFuZWwtb3ZlcmxheSl9LmJnLXN1Y2Nlc3MtZW1lcmFsZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXN1Y2Nlc3MtZW1lcmFsZCl9LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmJnLXdhcm5pbmdcLzEwe2JhY2tncm91bmQtY29sb3I6I2ZiYmYyNDFhfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdhcm5pbmdcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdhcm5pbmcpMTAlLHRyYW5zcGFyZW50KX19LmJnLXdoaXRle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5iZy13aGl0ZVwvNntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwZn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvNntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk2JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvOHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxNH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvOHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvMTB7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWF9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTEwJSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvMTJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcLzEye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTEyJSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvMTV7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMjZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcLzE1e2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTE1JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvMjB7YmFja2dyb3VuZC1jb2xvcjojZmZmM31Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvMjB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMjAlLHRyYW5zcGFyZW50KX19LmJnLXdoaXRlXC80MHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY2fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdoaXRlXC80MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MCUsdHJhbnNwYXJlbnQpfX0uYmctd2hpdGVcLzUwe2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjgwfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdoaXRlXC81MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk1MCUsdHJhbnNwYXJlbnQpfX0uYmctd2hpdGVcL1xbMFwuMDNcXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwOH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvXFswXC4wM1xde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTMlLHRyYW5zcGFyZW50KX19LmJnLXdoaXRlXC9cWzBcLjA0XF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMGF9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcL1xbMFwuMDRcXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvXFswXC4wNlxde2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjBmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdoaXRlXC9cWzBcLjA2XF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNiUsdHJhbnNwYXJlbnQpfX0uYmctd2hpdGVcL1xbMFwuMDhcXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxNH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvXFswXC4wOFxde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTglLHRyYW5zcGFyZW50KX19LmJnLXdoaXRlXC9cWzBcLjEyXF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcL1xbMFwuMTJcXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMiUsdHJhbnNwYXJlbnQpfX0uYmctd2hpdGVcL1xbMFwuMTZcXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYyOX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvXFswXC4xNlxde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTE2JSx0cmFuc3BhcmVudCl9fS5iZy1cW2xpbmVhci1ncmFkaWVudFwoMTQ1ZGVnXCxcIzI1M2E1ZlwsXCMxNjIxMzJcKVxde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE0NWRlZywjMjUzYTVmLCMxNjIxMzIpfS5iZy1cW2xpbmVhci1ncmFkaWVudFwodG9fYm90dG9tXCxcIzFjMWMxZV8wXCVcLHJnYmFcKDI4XCwyOFwsMzBcLDBcKV8xMDBcJVwpXF17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoIzFjMWMxZSAwJSwjMWMxYzFlMDAgMTAwJSl9LmJnLVxbbGluZWFyLWdyYWRpZW50XCh0b19yaWdodFwscmdiYVwoMjhcLDI4XCwzMFwsMFwpXzBcJVwsXCMxYzFjMWVfNTVcJVwpXF17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzFjMWMxZTAwIDAlLCMxYzFjMWUgNTUlKX0uYmctXFtsaW5lYXItZ3JhZGllbnRcKHRvX3RvcFwsXCMxYzFjMWVfMFwlXCxyZ2JhXCgyOFwsMjhcLDMwXCwwXClfMTAwXCVcKVxde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KCMxYzFjMWUwMCAwJSwjMWMxYzFlIDEwMCUpfS5vYmplY3QtY29udGFpbntvYmplY3QtZml0OmNvbnRhaW59Lm9iamVjdC1jb3ZlcntvYmplY3QtZml0OmNvdmVyfS5wLTB7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5wLTBcLjV7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0ucC0xe3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ucC0zXC41e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpfS5wLTZ7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5weC0wXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5weC0xe3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnB4LTFcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5weC0ye3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMil9LnB4LTJcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5weC0ze3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMyl9LnB4LTNcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpfS5weC00e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqNCl9LnB4LTV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0ucHgtXFs1XC41cHhcXXtwYWRkaW5nLWlubGluZS1zdGFydDo1LjVweDtwYWRkaW5nLWlubGluZS1lbmQ6NS41cHh9LnB4LVxbN3B4XF17cGFkZGluZy1pbmxpbmUtc3RhcnQ6N3B4O3BhZGRpbmctaW5saW5lLWVuZDo3cHh9LnB5LTBcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0ucHktMXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnB5LTFcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LnB5LTJ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5weS0yXC41e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5weS00e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ucHktNntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqNil9LnB5LVxbMnB4XF17cGFkZGluZy1ibG9jay1zdGFydDoycHg7cGFkZGluZy1ibG9jay1lbmQ6MnB4fS5weS1cWzNweFxde3BhZGRpbmctYmxvY2stc3RhcnQ6M3B4O3BhZGRpbmctYmxvY2stZW5kOjNweH0ucHktXFs1cHhcXXtwYWRkaW5nLWJsb2NrLXN0YXJ0OjVweDtwYWRkaW5nLWJsb2NrLWVuZDo1cHh9LnB5LVxbN3B4XF17cGFkZGluZy1ibG9jay1zdGFydDo3cHg7cGFkZGluZy1ibG9jay1lbmQ6N3B4fS5wdC0wXC41e3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5wdC0xe3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnB0LTJcLjV7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5wci0ye3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0ucHItM1wuNXtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMy41KX0ucHItXFsyNnB4XF17cGFkZGluZy1yaWdodDoyNnB4fS5wYi0wXC41e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5wYi0xe3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnBiLTFcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5wYi0ye3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMil9LnBiLVxbMnB4XF17cGFkZGluZy1ib3R0b206MnB4fS5wbC0ye3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5wbC0yXC41e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LnBsLTN7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykqMyl9LnBsLTd7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykqNyl9LnBsLVxbMjZweFxde3BhZGRpbmctbGVmdDoyNnB4fS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0udGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0fS5cW2ZvbnQtZmFtaWx5XDotYXBwbGUtc3lzdGVtXCxzeXN0ZW0tdWlcLHNhbnMtc2VyaWZcXXtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLHN5c3RlbS11aSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLE5vdG8gU2FucyxVYnVudHUsQ2FudGFyZWxsLEhlbHZldGljYSBOZXVlLHNhbnMtc2VyaWZ9LmZvbnQtXFtpbmhlcml0XF17Zm9udC1mYW1pbHk6aW5oZXJpdH0uZm9udC1tb25ve2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyl9LmZvbnQtc3lzdGVte2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtc3lzdGVtKX0udGV4dC1cWzlweFxde2ZvbnQtc2l6ZTo5cHh9LnRleHQtXFsxMHB4XF17Zm9udC1zaXplOjEwcHh9LnRleHQtXFsxMVwuNXB4XF17Zm9udC1zaXplOjExLjVweH0udGV4dC1cWzExcHhcXXtmb250LXNpemU6MTFweH0udGV4dC1cWzEycHhcXXtmb250LXNpemU6MTJweH0udGV4dC1cWzEzcHhcXXtmb250LXNpemU6MTNweH0udGV4dC1cWzE0cHhcXXtmb250LXNpemU6MTRweH0udGV4dC1cWzE3cHhcXXtmb250LXNpemU6MTdweH0udGV4dC1cWzE4cHhcXXtmb250LXNpemU6MThweH0ubGVhZGluZy1cWzFcLjVcXXstLXR3LWxlYWRpbmc6MS41O2xpbmUtaGVpZ2h0OjEuNX0ubGVhZGluZy1cWzFcLjM1XF17LS10dy1sZWFkaW5nOjEuMzU7bGluZS1oZWlnaHQ6MS4zNX0ubGVhZGluZy1ub25ley0tdHctbGVhZGluZzoxO2xpbmUtaGVpZ2h0OjF9LmxlYWRpbmctc251Z3stLXR3LWxlYWRpbmc6dmFyKC0tbGVhZGluZy1zbnVnKTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXNudWcpfS5sZWFkaW5nLXRpZ2h0ey0tdHctbGVhZGluZzp2YXIoLS1sZWFkaW5nLXRpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXRpZ2h0KX0uZm9udC1tZWRpdW17LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmZvbnQtc2VtaWJvbGR7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpfS50cmFja2luZy1cWzBcLjFlbVxdey0tdHctdHJhY2tpbmc6LjFlbTtsZXR0ZXItc3BhY2luZzouMWVtfS50cmFja2luZy1cWzBcLjAyZW1cXXstLXR3LXRyYWNraW5nOi4wMmVtO2xldHRlci1zcGFjaW5nOi4wMmVtfS50cmFja2luZy1cWzBcLjA0ZW1cXXstLXR3LXRyYWNraW5nOi4wNGVtO2xldHRlci1zcGFjaW5nOi4wNGVtfS50cmFja2luZy1cWzBcLjA2ZW1cXXstLXR3LXRyYWNraW5nOi4wNmVtO2xldHRlci1zcGFjaW5nOi4wNmVtfS50cmFja2luZy1cWzBcLjA4ZW1cXXstLXR3LXRyYWNraW5nOi4wOGVtO2xldHRlci1zcGFjaW5nOi4wOGVtfS50cmFja2luZy13aWRley0tdHctdHJhY2tpbmc6dmFyKC0tdHJhY2tpbmctd2lkZSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tdHJhY2tpbmctd2lkZSl9LmJyZWFrLXdvcmRze292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0udGV4dC1lbGxpcHNpc3t0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LlwhdGV4dC13aGl0ZXtjb2xvcjp2YXIoLS1jb2xvci13aGl0ZSkhaW1wb3J0YW50fS50ZXh0LVxbXCMwYTBhMGNcXXtjb2xvcjojMGEwYTBjfS50ZXh0LVxbXCM4ZThlOTNcXXtjb2xvcjojOGU4ZTkzfS50ZXh0LVxbXCMzNGQzOTlcXXtjb2xvcjojMzRkMzk5fS50ZXh0LVxbXCMwNjIwMThcXXtjb2xvcjojMDYyMDE4fS50ZXh0LVxbXCNjOGQ3ZmZcXXtjb2xvcjojYzhkN2ZmfS50ZXh0LVxbXCNkMmU3ZmZcXXtjb2xvcjojZDJlN2ZmfS50ZXh0LVxbXCNmZmIzYWRcXXtjb2xvcjojZmZiM2FkfS50ZXh0LWFjY2VudHtjb2xvcjp2YXIoLS1jb2xvci1hY2NlbnQpfS50ZXh0LWFtYmVyLTQwMHtjb2xvcjp2YXIoLS1jb2xvci1hbWJlci00MDApfS50ZXh0LWRhbmdlcntjb2xvcjp2YXIoLS1jb2xvci1kYW5nZXIpfS50ZXh0LWRhbmdlci1zb2Z0e2NvbG9yOnZhcigtLWNvbG9yLWRhbmdlci1zb2Z0KX0udGV4dC1lbWVyYWxkLTQwMHtjb2xvcjp2YXIoLS1jb2xvci1lbWVyYWxkLTQwMCl9LnRleHQtc2t5LTQwMHtjb2xvcjp2YXIoLS1jb2xvci1za3ktNDAwKX0udGV4dC13YXJuaW5nLXNvZnR7Y29sb3I6dmFyKC0tY29sb3Itd2FybmluZy1zb2Z0KX0udGV4dC13aGl0ZXtjb2xvcjp2YXIoLS1jb2xvci13aGl0ZSl9LnRleHQtd2hpdGVcLzMwe2NvbG9yOiNmZmZmZmY0ZH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC8zMHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMzAlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzM1e2NvbG9yOiNmZmZmZmY1OX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC8zNXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMzUlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzQwe2NvbG9yOiNmZmY2fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzQwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MCUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNDV7Y29sb3I6I2ZmZmZmZjczfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzQ1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0NSUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNTB7Y29sb3I6I2ZmZmZmZjgwfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzUwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk1MCUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNTV7Y29sb3I6I2ZmZmZmZjhjfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzU1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk1NSUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNjB7Y29sb3I6I2ZmZjl9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNjB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTYwJSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC82NXtjb2xvcjojZmZmZmZmYTZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNjV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTY1JSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC83MHtjb2xvcjojZmZmZmZmYjN9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNzB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTcwJSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC83NXtjb2xvcjojZmZmZmZmYmZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNzV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTc1JSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC84MHtjb2xvcjojZmZmY31Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC84MHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpODAlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzg1e2NvbG9yOiNmZmZmZmZkOX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC84NXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpODUlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzkwe2NvbG9yOiNmZmZmZmZlNn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC85MHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOTAlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzk1e2NvbG9yOiNmZmZmZmZmMn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC85NXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOTUlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcL1xbMFwuNDJcXXtjb2xvcjojZmZmZmZmNmJ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvXFswXC40Mlxde2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MiUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvXFswXC40OFxde2NvbG9yOiNmZmZmZmY3YX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC9cWzBcLjQ4XF17Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTQ4JSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC9cWzBcLjU4XF17Y29sb3I6I2ZmZmZmZjk0fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcL1xbMFwuNThcXXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNTguMCUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvXFswXC45Mlxde2NvbG9yOiNmZmZmZmZlYn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC9cWzBcLjkyXF17Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTkyJSx0cmFuc3BhcmVudCl9fS5sb3dlcmNhc2V7dGV4dC10cmFuc2Zvcm06bG93ZXJjYXNlfS51cHBlcmNhc2V7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9LnRhYnVsYXItbnVtc3stLXR3LW51bWVyaWMtc3BhY2luZzp0YWJ1bGFyLW51bXM7Zm9udC12YXJpYW50LW51bWVyaWM6dmFyKC0tdHctb3JkaW5hbCwpdmFyKC0tdHctc2xhc2hlZC16ZXJvLCl2YXIoLS10dy1udW1lcmljLWZpZ3VyZSwpdmFyKC0tdHctbnVtZXJpYy1zcGFjaW5nLCl2YXIoLS10dy1udW1lcmljLWZyYWN0aW9uLCl9LlxbZm9udC12YXJpYW50LW51bWVyaWNcOnRhYnVsYXItbnVtc1xde2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30ubm8tdW5kZXJsaW5le3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmV9LmFudGlhbGlhc2Vkey13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfS5vcGFjaXR5LTB7b3BhY2l0eTowfS5vcGFjaXR5LTQwe29wYWNpdHk6LjR9Lm9wYWNpdHktNjB7b3BhY2l0eTouNn0ub3BhY2l0eS0xMDB7b3BhY2l0eToxfS5zaGFkb3d7LS10dy1zaGFkb3c6MCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksMCAxcHggMnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSk7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctXFswXzFweF8ycHhfcmdiYVwoMFwsMFwsMFwsMFwuMThcKVwsMF82cHhfMThweF9yZ2JhXCgwXCwwXCwwXCwwXC4yOFwpXCxpbnNldF8wXzBfMF8xcHhfcmdiYVwoMjU1XCwyNTVcLDI1NVwsMFwuMDZcKVxdey0tdHctc2hhZG93OjAgMXB4IDJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDJlKSwwIDZweCAxOHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwNDcpLGluc2V0IDAgMCAwIDFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsI2ZmZmZmZjBmKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1cWzBfOHB4XzI0cHhfcmdiYVwoMFwsMFwsMFwsMFwuNFwpXF17LS10dy1zaGFkb3c6MCA4cHggMjRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDYpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LVxbMF84cHhfMjRweF9yZ2JhXCgwXCwwXCwwXCwwXC41XClcXXstLXR3LXNoYWRvdzowIDhweCAyNHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwODApO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LVxbMF84cHhfMjRweF9yZ2JhXCgwXCwwXCwwXCwwXC40NVwpXF17LS10dy1zaGFkb3c6MCA4cHggMjRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDczKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1cWzBfMTJweF80MHB4X3JnYmFcKDBcLDBcLDBcLDBcLjU1XClcXXstLXR3LXNoYWRvdzowIDEycHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDhjKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1cWzhweF8wXzMycHhfcmdiYVwoMFwsMFwsMFwsMFwuMzVcKVxdey0tdHctc2hhZG93OjhweCAwIDMycHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDA1OSk7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctbGd7LS10dy1zaGFkb3c6MCAxMHB4IDE1cHggLTNweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSwwIDRweCA2cHggLTRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnJpbmcsLnJpbmctMXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKTAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKXZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnJpbmctMnstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKTAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKXZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LlxbYm94LXNoYWRvd1w6MF8wXzZweF9yZ2JhXCg3NFwsMjIyXCwxMjhcLDBcLjdcKVxde2JveC1zaGFkb3c6MCAwIDZweCAjNGFkZTgwYjN9LlxbYm94LXNoYWRvd1w6MF8wXzZweF9yZ2JhXCgyNDhcLDExM1wsMTEzXCwwXC41NVwpXF17Ym94LXNoYWRvdzowIDAgNnB4ICNmODcxNzE4Y30ucmluZy1cW1wjMWMxYzFlXF17LS10dy1yaW5nLWNvbG9yOiMxYzFjMWV9LnJpbmctd2hpdGVcLzEwey0tdHctcmluZy1jb2xvcjojZmZmZmZmMWF9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsucmluZy13aGl0ZVwvMTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMCUsdHJhbnNwYXJlbnQpfX0ub3V0bGluZXtvdXRsaW5lLXN0eWxlOnZhcigtLXR3LW91dGxpbmUtc3R5bGUpO291dGxpbmUtd2lkdGg6MXB4fS5ibHVyey0tdHctYmx1cjpibHVyKDhweCk7ZmlsdGVyOnZhcigtLXR3LWJsdXIsKXZhcigtLXR3LWJyaWdodG5lc3MsKXZhcigtLXR3LWNvbnRyYXN0LCl2YXIoLS10dy1ncmF5c2NhbGUsKXZhcigtLXR3LWh1ZS1yb3RhdGUsKXZhcigtLXR3LWludmVydCwpdmFyKC0tdHctc2F0dXJhdGUsKXZhcigtLXR3LXNlcGlhLCl2YXIoLS10dy1kcm9wLXNoYWRvdywpfS5ncmF5c2NhbGV7LS10dy1ncmF5c2NhbGU6Z3JheXNjYWxlKDEwMCUpO2ZpbHRlcjp2YXIoLS10dy1ibHVyLCl2YXIoLS10dy1icmlnaHRuZXNzLCl2YXIoLS10dy1jb250cmFzdCwpdmFyKC0tdHctZ3JheXNjYWxlLCl2YXIoLS10dy1odWUtcm90YXRlLCl2YXIoLS10dy1pbnZlcnQsKXZhcigtLXR3LXNhdHVyYXRlLCl2YXIoLS10dy1zZXBpYSwpdmFyKC0tdHctZHJvcC1zaGFkb3csKX0uZmlsdGVye2ZpbHRlcjp2YXIoLS10dy1ibHVyLCl2YXIoLS10dy1icmlnaHRuZXNzLCl2YXIoLS10dy1jb250cmFzdCwpdmFyKC0tdHctZ3JheXNjYWxlLCl2YXIoLS10dy1odWUtcm90YXRlLCl2YXIoLS10dy1pbnZlcnQsKXZhcigtLXR3LXNhdHVyYXRlLCl2YXIoLS10dy1zZXBpYSwpdmFyKC0tdHctZHJvcC1zaGFkb3csKX0uYmFja2Ryb3AtYmx1cnstLXR3LWJhY2tkcm9wLWJsdXI6Ymx1cig4cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKXZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKXZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0LCl2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKXZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKXZhcigtLXR3LWJhY2tkcm9wLWludmVydCwpdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKXZhcigtLXR3LWJhY2tkcm9wLXNlcGlhLCk7YmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKXZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKXZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0LCl2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKXZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKXZhcigtLXR3LWJhY2tkcm9wLWludmVydCwpdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKXZhcigtLXR3LWJhY2tkcm9wLXNlcGlhLCl9LmJhY2tkcm9wLWJsdXItXFsxMnB4XF17LS10dy1iYWNrZHJvcC1ibHVyOmJsdXIoMTJweCk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKX0uYmFja2Ryb3AtYmx1ci1cWzE4cHhcXXstLXR3LWJhY2tkcm9wLWJsdXI6Ymx1cigxOHB4KTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS5iYWNrZHJvcC1ibHVyLW1key0tdHctYmFja2Ryb3AtYmx1cjpibHVyKHZhcigtLWJsdXItbWQpKTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS5iYWNrZHJvcC1zYXR1cmF0ZS0xNTB7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTpzYXR1cmF0ZSgxNTAlKTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS5iYWNrZHJvcC1maWx0ZXJ7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKX0udHJhbnNpdGlvbnt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sdHJhbnNsYXRlLHNjYWxlLHJvdGF0ZSxmaWx0ZXIsLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXIsYmFja2Ryb3AtZmlsdGVyLGRpc3BsYXksY29udGVudC12aXNpYmlsaXR5LG92ZXJsYXkscG9pbnRlci1ldmVudHM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0udHJhbnNpdGlvbi1cW2JvcmRlci1jb2xvclwsYmFja2dyb3VuZFxde3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQ7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0udHJhbnNpdGlvbi1cW3dpZHRoXCxiYWNrZ3JvdW5kXF17dHJhbnNpdGlvbi1wcm9wZXJ0eTp3aWR0aCxiYWNrZ3JvdW5kO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tY29sb3Jze3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3Isb3V0bGluZS1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsLS10dy1ncmFkaWVudC1mcm9tLC0tdHctZ3JhZGllbnQtdmlhLC0tdHctZ3JhZGllbnQtdG87dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0udHJhbnNpdGlvbi1vcGFjaXR5e3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS5kdXJhdGlvbi0xNTB7LS10dy1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30uZHVyYXRpb24tMjAwey0tdHctZHVyYXRpb246LjJzO3RyYW5zaXRpb24tZHVyYXRpb246LjJzfS5kdXJhdGlvbi0zMDB7LS10dy1kdXJhdGlvbjouM3M7dHJhbnNpdGlvbi1kdXJhdGlvbjouM3N9LmVhc2Utb3V0ey0tdHctZWFzZTp2YXIoLS1lYXNlLW91dCk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZWFzZS1vdXQpfS5vdXRsaW5lLW5vbmV7LS10dy1vdXRsaW5lLXN0eWxlOm5vbmU7b3V0bGluZS1zdHlsZTpub25lfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uc2VsZWN0LXRleHR7LXdlYmtpdC11c2VyLXNlbGVjdDp0ZXh0O3VzZXItc2VsZWN0OnRleHR9LlxbLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXJcOmJsdXJcKDEycHhcKVxdey13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMTJweCl9Llxbc2Nyb2xsYmFyLXdpZHRoXDp0aGluXF17c2Nyb2xsYmFyLXdpZHRoOnRoaW59Llxbc3RyZWFtXDphdmNjXF17c3RyZWFtOmF2Y2N9Llxbc3RyZWFtXDpoMjY0XF17c3RyZWFtOmgyNjR9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4yc1wsYm94LXNoYWRvd18wXC4yc1xde3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMsYm94LXNoYWRvdyAuMnN9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4zc1xde3RyYW5zaXRpb246YmFja2dyb3VuZCAuM3N9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4xMnNcLGJvcmRlci1jb2xvcl8wXC4xMnNcXXt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjEycyxib3JkZXItY29sb3IgLjEyc30uXFt0cmFuc2l0aW9uXDpiYWNrZ3JvdW5kXzBcLjEyc1wsY29sb3JfMFwuMTJzXF17dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xMnMsY29sb3IgLjEyc30uXFt0cmFuc2l0aW9uXDpiYWNrZ3JvdW5kXzBcLjEyc1xde3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTJzfS5cW3RyYW5zaXRpb25cOmJhY2tncm91bmRfMFwuMTVzXF17dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXN9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4xNXNfZWFzZVwsY29sb3JfMFwuMTVzX2Vhc2VcXXt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyxjb2xvciAuMTVzfS5cW3RyYW5zaXRpb25cOmJhY2tncm91bmRfMFwuMTVzX2Vhc2VcXXt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1c30uXFt0cmFuc2l0aW9uXDpiYWNrZ3JvdW5kXzBcLjE4c19lYXNlXF17dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xOHN9LlxbdHJhbnNpdGlvblw6bGVmdF8wXC4xNXNcXXt0cmFuc2l0aW9uOmxlZnQgLjE1c30uXFt0cmFuc2l0aW9uXDpvcGFjaXR5XzBcLjEyc1wsYmFja2dyb3VuZF8wXC4xMnNcLGNvbG9yXzBcLjEyc1xde3RyYW5zaXRpb246b3BhY2l0eSAuMTJzLGJhY2tncm91bmQgLjEycyxjb2xvciAuMTJzfS5cW3RyYW5zaXRpb25cOm9wYWNpdHlfMFwuMTJzXF17dHJhbnNpdGlvbjpvcGFjaXR5IC4xMnN9LlxbdHJhbnNpdGlvblw6b3BhY2l0eV8wXC4xNXNfZWFzZVwsYmFja2dyb3VuZF8wXC4xNXNfZWFzZVxde3RyYW5zaXRpb246b3BhY2l0eSAuMTVzLGJhY2tncm91bmQgLjE1c30uXFt0cmFuc2l0aW9uXDpvcGFjaXR5XzBcLjE1c19lYXNlXCx0cmFuc2Zvcm1fMFwuMTVzX2Vhc2VcXXt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyx0cmFuc2Zvcm0gLjE1c30uXFt0cmFuc2l0aW9uXDpvcGFjaXR5XzBcLjE4c19lYXNlXF17dHJhbnNpdGlvbjpvcGFjaXR5IC4xOHN9LlxbdHJhbnNpdGlvblw6cGFkZGluZ18wXC4yNXNfZWFzZVxde3RyYW5zaXRpb246cGFkZGluZyAuMjVzfS5cW3RyYW5zaXRpb25cOnRyYW5zZm9ybV8wXC4yNXNfZWFzZVwsb3BhY2l0eV8wXC4yc19lYXNlXF17dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyxvcGFjaXR5IC4yc30uXFt0cmFuc2l0aW9uXDp3aWR0aF8xMjBtc19saW5lYXJcXXt0cmFuc2l0aW9uOndpZHRoIC4xMnMgbGluZWFyfS5ncm91cC1mb2N1cy13aXRoaW5cOm9wYWNpdHktMDppcyg6d2hlcmUoLmdyb3VwKTpmb2N1cy13aXRoaW4gKil7b3BhY2l0eTowfUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ncm91cC1ob3Zlclw6cG9pbnRlci1ldmVudHMtYXV0bzppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtwb2ludGVyLWV2ZW50czphdXRvfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZ3JvdXAtaG92ZXJcOmJsb2NrOmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICope2Rpc3BsYXk6YmxvY2t9fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ncm91cC1ob3Zlclw6aGlkZGVuOmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICope2Rpc3BsYXk6bm9uZX19QG1lZGlhIChob3Zlcjpob3Zlcil7Lmdyb3VwLWhvdmVyXDp0cmFuc2xhdGUteC0wOmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICopey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpdmFyKC0tdHctdHJhbnNsYXRlLXkpfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZ3JvdXAtaG92ZXJcOm9wYWNpdHktMDppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtvcGFjaXR5OjB9fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ncm91cC1ob3Zlclw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cCk6aG92ZXIgKil7b3BhY2l0eToxfX0ucGxhY2Vob2xkZXJcOnRleHQtd2hpdGVcLzQwOjpwbGFjZWhvbGRlcntjb2xvcjojZmZmNn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5wbGFjZWhvbGRlclw6dGV4dC13aGl0ZVwvNDA6OnBsYWNlaG9sZGVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtd2l0aGluXDpiZy13aGl0ZVwvMTA6Zm9jdXMtd2l0aGlue2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjFhfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmZvY3VzLXdpdGhpblw6Ymctd2hpdGVcLzEwOmZvY3VzLXdpdGhpbntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMCUsdHJhbnNwYXJlbnQpfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJvcmRlci1cW3JnYmFcKDI1NVwsMjU1XCwyNTVcLDBcLjE2XClcXTpob3Zlcntib3JkZXItY29sb3I6I2ZmZmZmZjI5fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJvcmRlci1cW3JnYmFcKDI1NVwsMjU1XCwyNTVcLDBcLjE4XClcXTpob3Zlcntib3JkZXItY29sb3I6I2ZmZmZmZjJlfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJvcmRlci13aGl0ZVwvMjA6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmYzfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmhvdmVyXDpib3JkZXItd2hpdGVcLzIwOmhvdmVye2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMjAlLHRyYW5zcGFyZW50KX19fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ob3Zlclw6Ym9yZGVyLXdoaXRlXC9cWzBcLjg4XF06aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmZmZmZlMH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ym9yZGVyLXdoaXRlXC9cWzBcLjg4XF06aG92ZXJ7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4OCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvODpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxNH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcLzg6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvMTI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXdoaXRlXC8xMjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxMiUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvMTg6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMmV9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXdoaXRlXC8xODpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxOCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvMjA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmM31Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcLzIwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTIwJSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJnLXdoaXRlXC8yNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY0MH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcLzI1OmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTI1JSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjA1XF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMGR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjA1XF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNSUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wNlxdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjBmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wNlxdOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTYlLHRyYW5zcGFyZW50KX19fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDdcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxMn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDdcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk3LjAlLHRyYW5zcGFyZW50KX19fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDlcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxN31Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDlcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk5JSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjg4XF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmZTB9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjg4XF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpODglLHRyYW5zcGFyZW50KX19fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5ob3Zlclw6dGV4dC1cW1wjMGEwYTBjXF06aG92ZXJ7Y29sb3I6IzBhMGEwY319QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDp0ZXh0LXdoaXRlOmhvdmVye2NvbG9yOnZhcigtLWNvbG9yLXdoaXRlKX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDp0ZXh0LXdoaXRlXC84NTpob3Zlcntjb2xvcjojZmZmZmZmZDl9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOnRleHQtd2hpdGVcLzg1OmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4NSUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDp0ZXh0LXdoaXRlXC85MDpob3Zlcntjb2xvcjojZmZmZmZmZTZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOnRleHQtd2hpdGVcLzkwOmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk5MCUsdHJhbnNwYXJlbnQpfX19LmZvY3VzXDpib3JkZXItXFtyZ2JhXCgyNTVcLDI1NVwsMjU1XCwwXC4yNFwpXF06Zm9jdXN7Ym9yZGVyLWNvbG9yOiNmZmZmZmYzZH0uZm9jdXNcOmJnLXdoaXRlXC9cWzBcLjA4XF06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMTR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZm9jdXNcOmJnLXdoaXRlXC9cWzBcLjA4XF06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOCUsdHJhbnNwYXJlbnQpfX0uZm9jdXNcOm91dGxpbmUtbm9uZTpmb2N1c3stLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9LmZvY3VzLXZpc2libGVcOmJnLXdoaXRlXC84OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMTR9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZm9jdXMtdmlzaWJsZVw6Ymctd2hpdGVcLzg6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4JSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvcGFjaXR5LTEwMDpmb2N1cy12aXNpYmxle29wYWNpdHk6MX0uZm9jdXMtdmlzaWJsZVw6XFtvdXRsaW5lXDoxXC41cHhfc29saWRfcmdiYVwoMTBcLDEzMlwsMjU1XCwwXC41NVwpXF06Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjEuNXB4IHNvbGlkICMwYTg0ZmY4Y30uZm9jdXMtdmlzaWJsZVw6b3V0bGluZTpmb2N1cy12aXNpYmxle291dGxpbmUtc3R5bGU6dmFyKC0tdHctb3V0bGluZS1zdHlsZSk7b3V0bGluZS13aWR0aDoxcHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtMjpmb2N1cy12aXNpYmxle291dGxpbmUtc3R5bGU6dmFyKC0tdHctb3V0bGluZS1zdHlsZSk7b3V0bGluZS13aWR0aDoycHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtb2Zmc2V0LTI6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDoycHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtb2Zmc2V0LTQ6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDo0cHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtd2hpdGVcLzYwOmZvY3VzLXZpc2libGV7b3V0bGluZS1jb2xvcjojZmZmOX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXdoaXRlXC82MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTYwJSx0cmFuc3BhcmVudCl9fS5hY3RpdmVcOnNjYWxlLVxbMFwuOTdcXTphY3RpdmV7c2NhbGU6Ljk3fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5lbmFibGVkXDpob3Zlclw6Ym9yZGVyLVxbcmdiYVwoMjU1XCwyNTVcLDI1NVwsMFwuMThcKVxdOmVuYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmZmZmYyZX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDpib3JkZXItd2hpdGVcLzIwOmVuYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmYzfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmVuYWJsZWRcOmhvdmVyXDpib3JkZXItd2hpdGVcLzIwOmVuYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkyMCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDpib3JkZXItd2hpdGVcL1xbMFwuODhcXTplbmFibGVkOmhvdmVye2JvcmRlci1jb2xvcjojZmZmZmZmZTB9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZW5hYmxlZFw6aG92ZXJcOmJvcmRlci13aGl0ZVwvXFswXC44OFxdOmVuYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4OCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDpiZy1cW1wjMmEyYTJjXF06ZW5hYmxlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMyYTJhMmN9fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5lbmFibGVkXDpob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDZcXTplbmFibGVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjBmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmVuYWJsZWRcOmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wNlxdOmVuYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNiUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wOVxdOmVuYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMTd9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZW5hYmxlZFw6aG92ZXJcOmJnLXdoaXRlXC9cWzBcLjA5XF06ZW5hYmxlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk5JSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZW5hYmxlZFw6aG92ZXJcOmJnLXdoaXRlXC9cWzBcLjIyXF06ZW5hYmxlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYzOH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5lbmFibGVkXDpob3Zlclw6Ymctd2hpdGVcL1xbMFwuMjJcXTplbmFibGVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTIyJSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZW5hYmxlZFw6aG92ZXJcOmJnLXdoaXRlXC9cWzBcLjg4XF06ZW5hYmxlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmZlMH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5lbmFibGVkXDpob3Zlclw6Ymctd2hpdGVcL1xbMFwuODhcXTplbmFibGVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTg4JSx0cmFuc3BhcmVudCl9fX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZW5hYmxlZFw6aG92ZXJcOnRleHQtXFtcIzBhMGEwY1xdOmVuYWJsZWQ6aG92ZXJ7Y29sb3I6IzBhMGEwY319QG1lZGlhIChob3Zlcjpob3Zlcil7LmVuYWJsZWRcOmhvdmVyXDp0ZXh0LXdoaXRlOmVuYWJsZWQ6aG92ZXJ7Y29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZW5hYmxlZFw6aG92ZXJcOmJyaWdodG5lc3MtXFsxXC4wOFxdOmVuYWJsZWQ6aG92ZXJ7LS10dy1icmlnaHRuZXNzOmJyaWdodG5lc3MoMS4wOCk7ZmlsdGVyOnZhcigtLXR3LWJsdXIsKXZhcigtLXR3LWJyaWdodG5lc3MsKXZhcigtLXR3LWNvbnRyYXN0LCl2YXIoLS10dy1ncmF5c2NhbGUsKXZhcigtLXR3LWh1ZS1yb3RhdGUsKXZhcigtLXR3LWludmVydCwpdmFyKC0tdHctc2F0dXJhdGUsKXZhcigtLXR3LXNlcGlhLCl2YXIoLS10dy1kcm9wLXNoYWRvdywpfX0uZGlzYWJsZWRcOmN1cnNvci1kZWZhdWx0OmRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5kaXNhYmxlZFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZGlzYWJsZWRcOnRleHQtd2hpdGVcLzQwOmRpc2FibGVke2NvbG9yOiNmZmY2fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRpc2FibGVkXDp0ZXh0LXdoaXRlXC80MDpkaXNhYmxlZHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNDAlLHRyYW5zcGFyZW50KX19LmRpc2FibGVkXDpvcGFjaXR5LTQwOmRpc2FibGVke29wYWNpdHk6LjR9LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9QG1lZGlhIChtYXgtd2lkdGg6ODk5Ljk5OXB4KXsubWF4LVxbOTAwcHhcXVw6aGlkZGVue2Rpc3BsYXk6bm9uZX19LlxbXCZcOlw6LW1vei1yYW5nZS1wcm9ncmVzc1xdXDpoLVxbNHB4XF06Oi1tb3otcmFuZ2UtcHJvZ3Jlc3N7aGVpZ2h0OjRweH0uXFtcJlw6XDotbW96LXJhbmdlLXByb2dyZXNzXF1cOnJvdW5kZWQtZnVsbDo6LW1vei1yYW5nZS1wcm9ncmVzc3tib3JkZXItcmFkaXVzOjMuNDAyODJlMzhweH0uXFtcJlw6XDotbW96LXJhbmdlLXByb2dyZXNzXF1cOmJnLVxbdmFyXCgtLXNsaWRlci1maWxsLWNvbG9yXClcXTo6LW1vei1yYW5nZS1wcm9ncmVzc3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXNsaWRlci1maWxsLWNvbG9yKX0uXFtcJlw6XDotbW96LXJhbmdlLXRodW1iXF1cOnNpemUtXFsxM3B4XF06Oi1tb3otcmFuZ2UtdGh1bWJ7d2lkdGg6MTNweDtoZWlnaHQ6MTNweH0uXFtcJlw6XDotbW96LXJhbmdlLXRodW1iXF1cOnJvdW5kZWQtZnVsbDo6LW1vei1yYW5nZS10aHVtYntib3JkZXItcmFkaXVzOjMuNDAyODJlMzhweH0uXFtcJlw6XDotbW96LXJhbmdlLXRodW1iXF1cOmJvcmRlci1ub25lOjotbW96LXJhbmdlLXRodW1iey0tdHctYm9yZGVyLXN0eWxlOm5vbmU7Ym9yZGVyLXN0eWxlOm5vbmV9LlxbXCZcOlw6LW1vei1yYW5nZS10aHVtYlxdXDpiZy13aGl0ZTo6LW1vei1yYW5nZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXdoaXRlKX0uXFtcJlw6XDotbW96LXJhbmdlLXRyYWNrXF1cOmgtXFs0cHhcXTo6LW1vei1yYW5nZS10cmFja3toZWlnaHQ6NHB4fS5cW1wmXDpcOi1tb3otcmFuZ2UtdHJhY2tcXVw6cm91bmRlZC1mdWxsOjotbW96LXJhbmdlLXRyYWNre2JvcmRlci1yYWRpdXM6My40MDI4MmUzOHB4fS5cW1wmXDpcOi1tb3otcmFuZ2UtdHJhY2tcXVw6Ymctd2hpdGVcLzIwOjotbW96LXJhbmdlLXRyYWNre2JhY2tncm91bmQtY29sb3I6I2ZmZjN9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuXFtcJlw6XDotbW96LXJhbmdlLXRyYWNrXF1cOmJnLXdoaXRlXC8yMDo6LW1vei1yYW5nZS10cmFja3tiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkyMCUsdHJhbnNwYXJlbnQpfX0uXFtcJlw6XDotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja1xdXDpoLVxbNHB4XF06Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNre2hlaWdodDo0cHh9LlxbXCZcOlw6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2tcXVw6cm91bmRlZC1mdWxsOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja3tib3JkZXItcmFkaXVzOjMuNDAyODJlMzhweH0uXFtcJlw6XDotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja1xdXDpcW2JhY2tncm91bmRcOmxpbmVhci1ncmFkaWVudFwodG9fcmlnaHRcLHZhclwoLS1zbGlkZXItZmlsbC1jb2xvclwpX3ZhclwoLS1zbGlkZXItZmlsbFwpXCxyZ2JhXCgyNTVcLDI1NVwsMjU1XCwwXC4yMlwpX3ZhclwoLS1zbGlkZXItZmlsbFwpXClcXTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2t7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsdmFyKC0tc2xpZGVyLWZpbGwtY29sb3IpdmFyKC0tc2xpZGVyLWZpbGwpLCNmZmZmZmYzOCB2YXIoLS1zbGlkZXItZmlsbCkpfS5cW1wmXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOi1tdC1cWzRcLjVweFxdOjotd2Via2l0LXNsaWRlci10aHVtYnttYXJnaW4tdG9wOi00LjVweH0uXFtcJlw6XDotd2Via2l0LXNsaWRlci10aHVtYlxdXDpzaXplLVxbMTNweFxdOjotd2Via2l0LXNsaWRlci10aHVtYnt3aWR0aDoxM3B4O2hlaWdodDoxM3B4fS5cW1wmXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOmFwcGVhcmFuY2Utbm9uZTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7YXBwZWFyYW5jZTpub25lfS5cW1wmXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOnJvdW5kZWQtZnVsbDo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXJhZGl1czozLjQwMjgyZTM4cHh9LlxbXCZcOlw6LXdlYmtpdC1zbGlkZXItdGh1bWJcXVw6Ymctd2hpdGU6Oi13ZWJraXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5cW1wmXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOnNoYWRvdy1cWzBfMXB4XzNweF9yZ2JhXCgwXCwwXCwwXCwwXC40NVwpXF06Oi13ZWJraXQtc2xpZGVyLXRodW1iey0tdHctc2hhZG93OjAgMXB4IDNweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDczKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LlxbXCZcOmRpc2FibGVkXDpcOi1tb3otcmFuZ2UtdGh1bWJcXVw6Ymctd2hpdGVcLzUwOmRpc2FibGVkOjotbW96LXJhbmdlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjgwfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LlxbXCZcOmRpc2FibGVkXDpcOi1tb3otcmFuZ2UtdGh1bWJcXVw6Ymctd2hpdGVcLzUwOmRpc2FibGVkOjotbW96LXJhbmdlLXRodW1ie2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTUwJSx0cmFuc3BhcmVudCl9fS5cW1wmXDpkaXNhYmxlZFw6XDotd2Via2l0LXNsaWRlci10aHVtYlxdXDpiZy13aGl0ZVwvNTA6ZGlzYWJsZWQ6Oi13ZWJraXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjgwfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LlxbXCZcOmRpc2FibGVkXDpcOi13ZWJraXQtc2xpZGVyLXRodW1iXF1cOmJnLXdoaXRlXC81MDpkaXNhYmxlZDo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNTAlLHRyYW5zcGFyZW50KX19fTpyb290ey0tYnVuY3NzLWxpZ2h0OiA7LS1idW5jc3MtZGFyazppbml0aWFsO2NvbG9yLXNjaGVtZTpkYXJrOy0tc2VydmUtc2ltLXBhbmVsLWJnOiMxODE4MTg7LS1zZXJ2ZS1zaW0tcGFuZWwtYmctdHJhbnNsdWNlbnQ6IzE4MTgxOGM3Oy0tc2VydmUtc2ltLXBhbmVsLWJnLXRyYW5zcGFyZW50OiMxODE4MTgwMH1Ac3VwcG9ydHMgKGludGVycG9sYXRlLXNpemU6IGFsbG93LWtleXdvcmRzKXs6cm9vdHtpbnRlcnBvbGF0ZS1zaXplOmFsbG93LWtleXdvcmRzfX1kZXRhaWxzLmxlbS1zZWN0aW9uOjpkZXRhaWxzLWNvbnRlbnR7b3ZlcmZsb3c6Y2xpcDt0cmFuc2l0aW9uOmhlaWdodCAuMjJzIGVhc2UsY29udGVudC12aXNpYmlsaXR5IC4yMnMgYWxsb3ctZGlzY3JldGU7aGVpZ2h0OjB9ZGV0YWlscy5sZW0tc2VjdGlvbltvcGVuXTo6ZGV0YWlscy1jb250ZW50e2hlaWdodDphdXRvfWRldGFpbHMubGVtLXNlY3Rpb24+c3VtbWFyeXtsaXN0LXN0eWxlOm5vbmV9ZGV0YWlscy5sZW0tc2VjdGlvbj5zdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2Vye2Rpc3BsYXk6bm9uZX1kZXRhaWxzLmxlbS1zZWN0aW9uPnN1bW1hcnk6aG92ZXJ7Y29sb3I6I2ZmZn1kZXRhaWxzLmxlbS1zZWN0aW9uPnN1bW1hcnk6aG92ZXIgLmxlbS1jaGV2cm9ue2NvbG9yOiNmZmZmZmZkOSFpbXBvcnRhbnR9LmxlbS1jaGV2cm9ue3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNnMsY29sb3IgLjEyc31AY29udGFpbmVyICh3aWR0aDw9MjEwcHgpe1tkYXRhLWxvY2F0aW9uLXN0YXR1cy10b3RhbF17ZGlzcGxheTpub25lfX1Aa2V5ZnJhbWVzIGdyaWQtc3Bpbnt0b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgc2VydmUtc2ltLXRvYXN0LWluZGV0ZXJtaW5hdGV7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgyNTAlKX19QGtleWZyYW1lcyBzZXJ2ZS1zaW0tdG9hc3QtcG9wLWluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMnB4KXNjYWxlKC45Nil9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApc2NhbGUoMSl9fUBrZXlmcmFtZXMgc2VydmUtc2ltLXRvYXN0LXBvcC1vdXR7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApc2NhbGUoMSl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDhweClzY2FsZSguOTYpfX0uc2VydmUtc2ltLXRvYXN0LWluZGV0ZXJtaW5hdGV7YW5pbWF0aW9uOnNlcnZlLXNpbS10b2FzdC1pbmRldGVybWluYXRlIDEuMXMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmdyaWQtc2h1dGRvd24tYnRue29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjEycyxiYWNrZ3JvdW5kIC4xMnMsY29sb3IgLjEyc30uZ3JpZC10aWxlOmhvdmVyIC5ncmlkLXNodXRkb3duLWJ0bntvcGFjaXR5OjF9LmdyaWQtc2h1dGRvd24tYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNWExZDFkO2JvcmRlci1jb2xvcjojYTMzfS5ncmlkLXRpbGU6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM1NTUhaW1wb3J0YW50fUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcm90YXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yb3RhdGUtentzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJvcmRlci1zdHlsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6c29saWR9QHByb3BlcnR5IC0tdHctbGVhZGluZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWZvbnQtd2VpZ2h0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctdHJhY2tpbmd7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1vcmRpbmFse3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2xhc2hlZC16ZXJve3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctbnVtZXJpYy1maWd1cmV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1udW1lcmljLXNwYWNpbmd7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1udW1lcmljLWZyYWN0aW9ue3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctc2hhZG93LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2hhZG93LWFscGhhe3N5bnRheDoiPHBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjEwMCV9QHByb3BlcnR5IC0tdHctaW5zZXQtc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctaW5zZXQtc2hhZG93LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW5zZXQtc2hhZG93LWFscGhhe3N5bnRheDoiPHBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjEwMCV9QHByb3BlcnR5IC0tdHctcmluZy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXJpbmctc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctaW5zZXQtcmluZy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXJpbmctc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctcmluZy1pbnNldHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LXdpZHRoe3N5bnRheDoiPGxlbmd0aD4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1yaW5nLW9mZnNldC1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6I2ZmZn1AcHJvcGVydHkgLS10dy1yaW5nLW9mZnNldC1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1vdXRsaW5lLXN0eWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTpzb2xpZH1AcHJvcGVydHkgLS10dy1ibHVye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYnJpZ2h0bmVzc3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWNvbnRyYXN0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZ3JheXNjYWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaHVlLXJvdGF0ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWludmVydHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zYXR1cmF0ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNlcGlhe3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvdy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93LWFscGhhe3N5bnRheDoiPHBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjEwMCV9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3ctc2l6ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWJsdXJ7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1icmlnaHRuZXNze3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtY29udHJhc3R7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1ncmF5c2NhbGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1odWUtcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtaW52ZXJ0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3Atb3BhY2l0eXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLXNhdHVyYXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3Atc2VwaWF7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kdXJhdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWVhc2V7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AbGF5ZXIgcHJvcGVydGllc3tAc3VwcG9ydHMgKCgtd2Via2l0LWh5cGhlbnM6IG5vbmUpIGFuZCAoIG5vdCAobWFyZ2luLXRyaW06IGlubGluZSkpKSBvciAoKC1tb3otb3JpZW50OiBpbmxpbmUpIGFuZCAoIG5vdCAoY29sb3I6cmdiKGZyb20gcmVkIHIgZyBiKSkpKXsqLDpiZWZvcmUsOmFmdGVyLDo6YmFja2Ryb3B7LS10dy10cmFuc2xhdGUteDowOy0tdHctdHJhbnNsYXRlLXk6MDstLXR3LXRyYW5zbGF0ZS16OjA7LS10dy1yb3RhdGUteDppbml0aWFsOy0tdHctcm90YXRlLXk6aW5pdGlhbDstLXR3LXJvdGF0ZS16OmluaXRpYWw7LS10dy1za2V3LXg6aW5pdGlhbDstLXR3LXNrZXcteTppbml0aWFsOy0tdHctYm9yZGVyLXN0eWxlOnNvbGlkOy0tdHctbGVhZGluZzppbml0aWFsOy0tdHctZm9udC13ZWlnaHQ6aW5pdGlhbDstLXR3LXRyYWNraW5nOmluaXRpYWw7LS10dy1vcmRpbmFsOmluaXRpYWw7LS10dy1zbGFzaGVkLXplcm86aW5pdGlhbDstLXR3LW51bWVyaWMtZmlndXJlOmluaXRpYWw7LS10dy1udW1lcmljLXNwYWNpbmc6aW5pdGlhbDstLXR3LW51bWVyaWMtZnJhY3Rpb246aW5pdGlhbDstLXR3LXNoYWRvdzowIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LXNoYWRvdy1hbHBoYToxMDAlOy0tdHctaW5zZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LWluc2V0LXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctaW5zZXQtc2hhZG93LWFscGhhOjEwMCU7LS10dy1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1pbnNldC1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1pbnNldC1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1yaW5nLWluc2V0OmluaXRpYWw7LS10dy1yaW5nLW9mZnNldC13aWR0aDowcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LW91dGxpbmUtc3R5bGU6c29saWQ7LS10dy1ibHVyOmluaXRpYWw7LS10dy1icmlnaHRuZXNzOmluaXRpYWw7LS10dy1jb250cmFzdDppbml0aWFsOy0tdHctZ3JheXNjYWxlOmluaXRpYWw7LS10dy1odWUtcm90YXRlOmluaXRpYWw7LS10dy1pbnZlcnQ6aW5pdGlhbDstLXR3LW9wYWNpdHk6aW5pdGlhbDstLXR3LXNhdHVyYXRlOmluaXRpYWw7LS10dy1zZXBpYTppbml0aWFsOy0tdHctZHJvcC1zaGFkb3c6aW5pdGlhbDstLXR3LWRyb3Atc2hhZG93LWNvbG9yOmluaXRpYWw7LS10dy1kcm9wLXNoYWRvdy1hbHBoYToxMDAlOy0tdHctZHJvcC1zaGFkb3ctc2l6ZTppbml0aWFsOy0tdHctYmFja2Ryb3AtYmx1cjppbml0aWFsOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczppbml0aWFsOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTppbml0aWFsOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTppbml0aWFsOy0tdHctYmFja2Ryb3AtaW52ZXJ0OmluaXRpYWw7LS10dy1iYWNrZHJvcC1vcGFjaXR5OmluaXRpYWw7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTppbml0aWFsOy0tdHctYmFja2Ryb3Atc2VwaWE6aW5pdGlhbDstLXR3LWR1cmF0aW9uOmluaXRpYWw7LS10dy1lYXNlOmluaXRpYWx9fX0KPC9zdHlsZT4KPC9oZWFkPjxib2R5Pgo8ZGl2IGlkPSJyb290Ij48L2Rpdj4KPCEtLV9fU0lNX1BSRVZJRVdfQ09ORklHX18tLT4KPHNjcmlwdCB0eXBlPSJtb2R1bGUiPnZhciBBMixzLEg4LEo3LGgwLEw4LEM4LEY4LG41LFg1LE0yLGs4LEozLHM1LHQ1LE04LEs1PXt9LFk1PVtdLFE3PS9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2ksVzI9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiB3MCgkLEope2Zvcih2YXIgUSBpbiBKKSRbUV09SltRXTtyZXR1cm4gJH1mdW5jdGlvbiBRMygkKXskJiYkLnBhcmVudE5vZGUmJiQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCgkKX1mdW5jdGlvbiB1MSgkLEosUSl7dmFyIFosSyxZLHE9e307Zm9yKFkgaW4gSilZPT0ia2V5Ij9aPUpbWV06WT09InJlZiI/Sz1KW1ldOnFbWV09SltZXTtpZihhcmd1bWVudHMubGVuZ3RoPjImJihxLmNoaWxkcmVuPWFyZ3VtZW50cy5sZW5ndGg+Mz9BMi5jYWxsKGFyZ3VtZW50cywyKTpRKSx0eXBlb2YgJD09ImZ1bmN0aW9uIiYmJC5kZWZhdWx0UHJvcHMhPW51bGwpZm9yKFkgaW4gJC5kZWZhdWx0UHJvcHMpcVtZXT09PXZvaWQgMCYmKHFbWV09JC5kZWZhdWx0UHJvcHNbWV0pO3JldHVybiBPMigkLHEsWixLLG51bGwpfWZ1bmN0aW9uIE8yKCQsSixRLFosSyl7dmFyIFk9e3R5cGU6JCxwcm9wczpKLGtleTpRLHJlZjpaLF9fazpudWxsLF9fOm51bGwsX19iOjAsX19lOm51bGwsX19jOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjpLPT1udWxsPysrSDg6SyxfX2k6LTEsX191OjB9O3JldHVybiBLPT1udWxsJiZzLnZub2RlIT1udWxsJiZzLnZub2RlKFkpLFl9ZnVuY3Rpb24gXzIoKXtyZXR1cm57Y3VycmVudDpudWxsfX1mdW5jdGlvbiBaMSgkKXtyZXR1cm4gJC5jaGlsZHJlbn1mdW5jdGlvbiBvMSgkLEope3RoaXMucHJvcHM9JCx0aGlzLmNvbnRleHQ9Sn1mdW5jdGlvbiBlMCgkLEope2lmKEo9PW51bGwpcmV0dXJuICQuX18/ZTAoJC5fXywkLl9faSsxKTpudWxsO2Zvcih2YXIgUTtKPCQuX19rLmxlbmd0aDtKKyspaWYoKFE9JC5fX2tbSl0pIT1udWxsJiZRLl9fZSE9bnVsbClyZXR1cm4gUS5fX2U7cmV0dXJuIHR5cGVvZiAkLnR5cGU9PSJmdW5jdGlvbiI/ZTAoJCk6bnVsbH1mdW5jdGlvbiBaNygkKXtpZigkLl9fUCYmJC5fX2Qpe3ZhciBKPSQuX192LFE9Si5fX2UsWj1bXSxLPVtdLFk9dzAoe30sSik7WS5fX3Y9Si5fX3YrMSxzLnZub2RlJiZzLnZub2RlKFkpLFozKCQuX19QLFksSiwkLl9fbiwkLl9fUC5uYW1lc3BhY2VVUkksMzImSi5fX3U/W1FdOm51bGwsWixRPT1udWxsP2UwKEopOlEsISEoMzImSi5fX3UpLEspLFkuX192PUouX192LFkuX18uX19rW1kuX19pXT1ZLF84KFosWSxLKSxKLl9fZT1KLl9fPW51bGwsWS5fX2UhPVEmJk84KFkpfX1mdW5jdGlvbiBPOCgkKXtpZigoJD0kLl9fKSE9bnVsbCYmJC5fX2MhPW51bGwpcmV0dXJuICQuX19lPSQuX19jLmJhc2U9bnVsbCwkLl9fay5zb21lKGZ1bmN0aW9uKEope2lmKEohPW51bGwmJkouX19lIT1udWxsKXJldHVybiAkLl9fZT0kLl9fYy5iYXNlPUouX19lfSksTzgoJCl9ZnVuY3Rpb24gZTUoJCl7KCEkLl9fZCYmKCQuX19kPSEwKSYmaDAucHVzaCgkKSYmIXE1Ll9fcisrfHxMOCE9cy5kZWJvdW5jZVJlbmRlcmluZykmJigoTDg9cy5kZWJvdW5jZVJlbmRlcmluZyl8fEM4KShxNSl9ZnVuY3Rpb24gcTUoKXt0cnl7Zm9yKHZhciAkLEo9MTtoMC5sZW5ndGg7KWgwLmxlbmd0aD5KJiZoMC5zb3J0KEY4KSwkPWgwLnNoaWZ0KCksSj1oMC5sZW5ndGgsWjcoJCl9ZmluYWxseXtoMC5sZW5ndGg9cTUuX19yPTB9fWZ1bmN0aW9uIEE4KCQsSixRLFosSyxZLHEsRyxOLEIsTCl7dmFyIFYsVSx6LGssSCxDLEYsTz1aJiZaLl9fa3x8WTUsST1KLmxlbmd0aDtmb3IoTj1YNyhRLEosTyxOLEkpLFY9MDtWPEk7VisrKSh6PVEuX19rW1ZdKSE9bnVsbCYmKFU9ei5fX2khPS0xJiZPW3ouX19pXXx8SzUsei5fX2k9VixDPVozKCQseixVLEssWSxxLEcsTixCLEwpLGs9ei5fX2Usei5yZWYmJlUucmVmIT16LnJlZiYmKFUucmVmJiZYMyhVLnJlZixudWxsLHopLEwucHVzaCh6LnJlZix6Ll9fY3x8ayx6KSksSD09bnVsbCYmayE9bnVsbCYmKEg9ayksKEY9ISEoNCZ6Ll9fdSkpfHxVLl9faz09PXouX19rPyhOPVc4KHosTiwkLEYpLEYmJlUuX19lJiYoVS5fX2U9bnVsbCkpOnR5cGVvZiB6LnR5cGU9PSJmdW5jdGlvbiImJkMhPT12b2lkIDA/Tj1DOmsmJihOPWsubmV4dFNpYmxpbmcpLHouX191Jj0tNyk7cmV0dXJuIFEuX19lPUgsTn1mdW5jdGlvbiBYNygkLEosUSxaLEspe3ZhciBZLHEsRyxOLEIsTD1RLmxlbmd0aCxWPUwsVT0wO2ZvcigkLl9faz1BcnJheShLKSxZPTA7WTxLO1krKykocT1KW1ldKSE9bnVsbCYmdHlwZW9mIHEhPSJib29sZWFuIiYmdHlwZW9mIHEhPSJmdW5jdGlvbiI/KHR5cGVvZiBxPT0ic3RyaW5nInx8dHlwZW9mIHE9PSJudW1iZXIifHx0eXBlb2YgcT09ImJpZ2ludCJ8fHEuY29uc3RydWN0b3I9PVN0cmluZz9xPSQuX19rW1ldPU8yKG51bGwscSxudWxsLG51bGwsbnVsbCk6VzIocSk/cT0kLl9fa1tZXT1PMihaMSx7Y2hpbGRyZW46cX0sbnVsbCxudWxsLG51bGwpOnEuY29uc3RydWN0b3I9PT12b2lkIDAmJnEuX19iPjA/cT0kLl9fa1tZXT1PMihxLnR5cGUscS5wcm9wcyxxLmtleSxxLnJlZj9xLnJlZjpudWxsLHEuX192KTokLl9fa1tZXT1xLE49WStVLHEuX189JCxxLl9fYj0kLl9fYisxLEc9bnVsbCwoQj1xLl9faT1LNyhxLFEsTixWKSkhPS0xJiYoVi0tLChHPVFbQl0pJiYoRy5fX3V8PTIpKSxHPT1udWxsfHxHLl9fdj09bnVsbD8oQj09LTEmJihLPkw/VS0tOks8TCYmVSsrKSx0eXBlb2YgcS50eXBlIT0iZnVuY3Rpb24iJiYocS5fX3V8PTQpKTpCIT1OJiYoQj09Ti0xP1UtLTpCPT1OKzE/VSsrOihCPk4/VS0tOlUrKyxxLl9fdXw9NCkpKTokLl9fa1tZXT1udWxsO2lmKFYpZm9yKFk9MDtZPEw7WSsrKShHPVFbWV0pIT1udWxsJiYoMiZHLl9fdSk9PTAmJihHLl9fZT09WiYmKFo9ZTAoRykpLEQ4KEcsRykpO3JldHVybiBafWZ1bmN0aW9uIFc4KCQsSixRLFope3ZhciBLLFk7aWYodHlwZW9mICQudHlwZT09ImZ1bmN0aW9uIil7Zm9yKEs9JC5fX2ssWT0wO0smJlk8Sy5sZW5ndGg7WSsrKUtbWV0mJihLW1ldLl9fPSQsSj1XOChLW1ldLEosUSxaKSk7cmV0dXJuIEp9JC5fX2UhPUomJihaJiYoSiYmJC50eXBlJiYhSi5wYXJlbnROb2RlJiYoSj1lMCgkKSksUS5pbnNlcnRCZWZvcmUoJC5fX2UsSnx8bnVsbCkpLEo9JC5fX2UpO2RvIEo9SiYmSi5uZXh0U2libGluZzt3aGlsZShKIT1udWxsJiZKLm5vZGVUeXBlPT04KTtyZXR1cm4gSn1mdW5jdGlvbiBYMCgkLEope3JldHVybiBKPUp8fFtdLCQ9PW51bGx8fHR5cGVvZiAkPT0iYm9vbGVhbiJ8fChXMigkKT8kLnNvbWUoZnVuY3Rpb24oUSl7WDAoUSxKKX0pOkoucHVzaCgkKSksSn1mdW5jdGlvbiBLNygkLEosUSxaKXt2YXIgSyxZLHEsRz0kLmtleSxOPSQudHlwZSxCPUpbUV0sTD1CIT1udWxsJiYoMiZCLl9fdSk9PTA7aWYoQj09PW51bGwmJkc9PW51bGx8fEwmJkc9PUIua2V5JiZOPT1CLnR5cGUpcmV0dXJuIFE7aWYoWj4oTD8xOjApKXtmb3IoSz1RLTEsWT1RKzE7Sz49MHx8WTxKLmxlbmd0aDspaWYoKEI9SltxPUs+PTA/Sy0tOlkrK10pIT1udWxsJiYoMiZCLl9fdSk9PTAmJkc9PUIua2V5JiZOPT1CLnR5cGUpcmV0dXJuIHF9cmV0dXJuLTF9ZnVuY3Rpb24gejgoJCxKLFEpe0pbMF09PSItIj8kLnNldFByb3BlcnR5KEosUT09bnVsbD8iIjpRKTokW0pdPVE9PW51bGw/IiI6dHlwZW9mIFEhPSJudW1iZXIifHxRNy50ZXN0KEopP1E6USsicHgifWZ1bmN0aW9uIFo1KCQsSixRLFosSyl7dmFyIFkscTskOmlmKEo9PSJzdHlsZSIpaWYodHlwZW9mIFE9PSJzdHJpbmciKSQuc3R5bGUuY3NzVGV4dD1RO2Vsc2V7aWYodHlwZW9mIFo9PSJzdHJpbmciJiYoJC5zdHlsZS5jc3NUZXh0PVo9IiIpLFopZm9yKEogaW4gWilRJiZKIGluIFF8fHo4KCQuc3R5bGUsSiwiIik7aWYoUSlmb3IoSiBpbiBRKVomJlFbSl09PVpbSl18fHo4KCQuc3R5bGUsSixRW0pdKX1lbHNlIGlmKEpbMF09PSJvIiYmSlsxXT09Im4iKVk9SiE9KEo9Si5yZXBsYWNlKGs4LCIkMSIpKSxxPUoudG9Mb3dlckNhc2UoKSxKPXEgaW4gJHx8Sj09Im9uRm9jdXNPdXQifHxKPT0ib25Gb2N1c0luIj9xLnNsaWNlKDIpOkouc2xpY2UoMiksJC5sfHwoJC5sPXt9KSwkLmxbSitZXT1RLFE/Wj9RW00yXT1aW00yXTooUVtNMl09SjMsJC5hZGRFdmVudExpc3RlbmVyKEosWT90NTpzNSxZKSk6JC5yZW1vdmVFdmVudExpc3RlbmVyKEosWT90NTpzNSxZKTtlbHNle2lmKEs9PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIpSj1KLnJlcGxhY2UoL3hsaW5rKEh8OmgpLywiaCIpLnJlcGxhY2UoL3NOYW1lJC8sInMiKTtlbHNlIGlmKEohPSJ3aWR0aCImJkohPSJoZWlnaHQiJiZKIT0iaHJlZiImJkohPSJsaXN0IiYmSiE9ImZvcm0iJiZKIT0idGFiSW5kZXgiJiZKIT0iZG93bmxvYWQiJiZKIT0icm93U3BhbiImJkohPSJjb2xTcGFuIiYmSiE9InJvbGUiJiZKIT0icG9wb3ZlciImJkogaW4gJCl0cnl7JFtKXT1RPT1udWxsPyIiOlE7YnJlYWsgJH1jYXRjaChHKXt9dHlwZW9mIFE9PSJmdW5jdGlvbiJ8fChRPT1udWxsfHxRPT09ITEmJkpbNF0hPSItIj8kLnJlbW92ZUF0dHJpYnV0ZShKKTokLnNldEF0dHJpYnV0ZShKLEo9PSJwb3BvdmVyIiYmUT09MT8iIjpRKSl9fWZ1bmN0aW9uIFU4KCQpe3JldHVybiBmdW5jdGlvbihKKXtpZih0aGlzLmwpe3ZhciBRPXRoaXMubFtKLnR5cGUrJF07aWYoSltYNV09PW51bGwpSltYNV09SjMrKztlbHNlIGlmKEpbWDVdPFFbTTJdKXJldHVybjtyZXR1cm4gUShzLmV2ZW50P3MuZXZlbnQoSik6Sil9fX1mdW5jdGlvbiBaMygkLEosUSxaLEssWSxxLEcsTixCKXt2YXIgTCxWLFUseixrLEgsQyxGLE8sSSx3LFMsaiwkMSxtLGM9Si50eXBlO2lmKEouY29uc3RydWN0b3IhPT12b2lkIDApcmV0dXJuIG51bGw7MTI4JlEuX191JiYoTj0hISgzMiZRLl9fdSksWT1bRz1KLl9fZT1RLl9fZV0pLChMPXMuX19iKSYmTChKKTskOmlmKHR5cGVvZiBjPT0iZnVuY3Rpb24iKXRyeXtpZihGPUoucHJvcHMsTz1jLnByb3RvdHlwZSYmYy5wcm90b3R5cGUucmVuZGVyLEk9KEw9Yy5jb250ZXh0VHlwZSkmJlpbTC5fX2NdLHc9TD9JP0kucHJvcHMudmFsdWU6TC5fXzpaLFEuX19jP0M9KFY9Si5fX2M9US5fX2MpLl9fPVYuX19FOihPP0ouX19jPVY9bmV3IGMoRix3KTooSi5fX2M9Vj1uZXcgbzEoRix3KSxWLmNvbnN0cnVjdG9yPWMsVi5yZW5kZXI9cTcpLEkmJkkuc3ViKFYpLFYuc3RhdGV8fChWLnN0YXRlPXt9KSxWLl9fbj1aLFU9Vi5fX2Q9ITAsVi5fX2g9W10sVi5fc2I9W10pLE8mJlYuX19zPT1udWxsJiYoVi5fX3M9Vi5zdGF0ZSksTyYmYy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMhPW51bGwmJihWLl9fcz09Vi5zdGF0ZSYmKFYuX19zPXcwKHt9LFYuX19zKSksdzAoVi5fX3MsYy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoRixWLl9fcykpKSx6PVYucHJvcHMsaz1WLnN0YXRlLFYuX192PUosVSlPJiZjLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz09bnVsbCYmVi5jb21wb25lbnRXaWxsTW91bnQhPW51bGwmJlYuY29tcG9uZW50V2lsbE1vdW50KCksTyYmVi5jb21wb25lbnREaWRNb3VudCE9bnVsbCYmVi5fX2gucHVzaChWLmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKE8mJmMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT1udWxsJiZGIT09eiYmVi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT1udWxsJiZWLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoRix3KSxKLl9fdj09US5fX3Z8fCFWLl9fZSYmVi5zaG91bGRDb21wb25lbnRVcGRhdGUhPW51bGwmJlYuc2hvdWxkQ29tcG9uZW50VXBkYXRlKEYsVi5fX3Msdyk9PT0hMSl7Si5fX3YhPVEuX192JiYoVi5wcm9wcz1GLFYuc3RhdGU9Vi5fX3MsVi5fX2Q9ITEpLEouX19lPVEuX19lLEouX19rPVEuX19rLEouX19rLnNvbWUoZnVuY3Rpb24obil7biYmKG4uX189Sil9KSxZNS5wdXNoLmFwcGx5KFYuX19oLFYuX3NiKSxWLl9zYj1bXSxWLl9faC5sZW5ndGgmJnEucHVzaChWKTticmVhayAkfVYuY29tcG9uZW50V2lsbFVwZGF0ZSE9bnVsbCYmVi5jb21wb25lbnRXaWxsVXBkYXRlKEYsVi5fX3MsdyksTyYmVi5jb21wb25lbnREaWRVcGRhdGUhPW51bGwmJlYuX19oLnB1c2goZnVuY3Rpb24oKXtWLmNvbXBvbmVudERpZFVwZGF0ZSh6LGssSCl9KX1pZihWLmNvbnRleHQ9dyxWLnByb3BzPUYsVi5fX1A9JCxWLl9fZT0hMSxTPXMuX19yLGo9MCxPKVYuc3RhdGU9Vi5fX3MsVi5fX2Q9ITEsUyYmUyhKKSxMPVYucmVuZGVyKFYucHJvcHMsVi5zdGF0ZSxWLmNvbnRleHQpLFk1LnB1c2guYXBwbHkoVi5fX2gsVi5fc2IpLFYuX3NiPVtdO2Vsc2UgZG8gVi5fX2Q9ITEsUyYmUyhKKSxMPVYucmVuZGVyKFYucHJvcHMsVi5zdGF0ZSxWLmNvbnRleHQpLFYuc3RhdGU9Vi5fX3M7d2hpbGUoVi5fX2QmJisrajwyNSk7Vi5zdGF0ZT1WLl9fcyxWLmdldENoaWxkQ29udGV4dCE9bnVsbCYmKFo9dzAodzAoe30sWiksVi5nZXRDaGlsZENvbnRleHQoKSkpLE8mJiFVJiZWLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIT1udWxsJiYoSD1WLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHosaykpLCQxPUwhPW51bGwmJkwudHlwZT09PVoxJiZMLmtleT09bnVsbD9QOChMLnByb3BzLmNoaWxkcmVuKTpMLEc9QTgoJCxXMigkMSk/JDE6WyQxXSxKLFEsWixLLFkscSxHLE4sQiksVi5iYXNlPUouX19lLEouX191Jj0tMTYxLFYuX19oLmxlbmd0aCYmcS5wdXNoKFYpLEMmJihWLl9fRT1WLl9fPW51bGwpfWNhdGNoKG4pe2lmKEouX192PW51bGwsTnx8WSE9bnVsbClpZihuLnRoZW4pe2ZvcihKLl9fdXw9Tj8xNjA6MTI4O0cmJkcubm9kZVR5cGU9PTgmJkcubmV4dFNpYmxpbmc7KUc9Ry5uZXh0U2libGluZztZW1kuaW5kZXhPZihHKV09bnVsbCxKLl9fZT1HfWVsc2V7Zm9yKG09WS5sZW5ndGg7bS0tOylRMyhZW21dKTskMyhKKX1lbHNlIEouX19lPVEuX19lLEouX19rPVEuX19rLG4udGhlbnx8JDMoSik7cy5fX2UobixKLFEpfWVsc2UgWT09bnVsbCYmSi5fX3Y9PVEuX192PyhKLl9faz1RLl9fayxKLl9fZT1RLl9fZSk6Rz1KLl9fZT1ZNyhRLl9fZSxKLFEsWixLLFkscSxOLEIpO3JldHVybihMPXMuZGlmZmVkKSYmTChKKSwxMjgmSi5fX3U/dm9pZCAwOkd9ZnVuY3Rpb24gJDMoJCl7JCYmKCQuX19jJiYoJC5fX2MuX19lPSEwKSwkLl9fayYmJC5fX2suc29tZSgkMykpfWZ1bmN0aW9uIF84KCQsSixRKXtmb3IodmFyIFo9MDtaPFEubGVuZ3RoO1orKylYMyhRW1pdLFFbKytaXSxRWysrWl0pO3MuX19jJiZzLl9fYyhKLCQpLCQuc29tZShmdW5jdGlvbihLKXt0cnl7JD1LLl9faCxLLl9faD1bXSwkLnNvbWUoZnVuY3Rpb24oWSl7WS5jYWxsKEspfSl9Y2F0Y2goWSl7cy5fX2UoWSxLLl9fdil9fSl9ZnVuY3Rpb24gUDgoJCl7cmV0dXJuIHR5cGVvZiAkIT0ib2JqZWN0Inx8JD09bnVsbHx8JC5fX2I+MD8kOlcyKCQpPyQubWFwKFA4KTp3MCh7fSwkKX1mdW5jdGlvbiBZNygkLEosUSxaLEssWSxxLEcsTil7dmFyIEIsTCxWLFUseixrLEgsQz1RLnByb3BzfHxLNSxGPUoucHJvcHMsTz1KLnR5cGU7aWYoTz09InN2ZyI/Sz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOk89PSJtYXRoIj9LPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIjpLfHwoSz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpLFkhPW51bGwpe2ZvcihCPTA7QjxZLmxlbmd0aDtCKyspaWYoKHo9WVtCXSkmJiJzZXRBdHRyaWJ1dGUiaW4gej09ISFPJiYoTz96LmxvY2FsTmFtZT09Tzp6Lm5vZGVUeXBlPT0zKSl7JD16LFlbQl09bnVsbDticmVha319aWYoJD09bnVsbCl7aWYoTz09bnVsbClyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoRik7JD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoSyxPLEYuaXMmJkYpLEcmJihzLl9fbSYmcy5fX20oSixZKSxHPSExKSxZPW51bGx9aWYoTz09bnVsbClDPT09Rnx8RyYmJC5kYXRhPT1GfHwoJC5kYXRhPUYpO2Vsc2V7aWYoWT1ZJiZBMi5jYWxsKCQuY2hpbGROb2RlcyksIUcmJlkhPW51bGwpZm9yKEM9e30sQj0wO0I8JC5hdHRyaWJ1dGVzLmxlbmd0aDtCKyspQ1soej0kLmF0dHJpYnV0ZXNbQl0pLm5hbWVdPXoudmFsdWU7Zm9yKEIgaW4gQyl6PUNbQl0sQj09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj9WPXo6Qj09ImNoaWxkcmVuInx8KEIgaW4gRil8fEI9PSJ2YWx1ZSImJigiZGVmYXVsdFZhbHVlImluIEYpfHxCPT0iY2hlY2tlZCImJigiZGVmYXVsdENoZWNrZWQiaW4gRil8fFo1KCQsQixudWxsLHosSyk7Zm9yKEIgaW4gRil6PUZbQl0sQj09ImNoaWxkcmVuIj9VPXo6Qj09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj9MPXo6Qj09InZhbHVlIj9rPXo6Qj09ImNoZWNrZWQiP0g9ejpHJiZ0eXBlb2YgeiE9ImZ1bmN0aW9uInx8Q1tCXT09PXp8fFo1KCQsQix6LENbQl0sSyk7aWYoTClHfHxWJiYoTC5fX2h0bWw9PVYuX19odG1sfHxMLl9faHRtbD09JC5pbm5lckhUTUwpfHwoJC5pbm5lckhUTUw9TC5fX2h0bWwpLEouX19rPVtdO2Vsc2UgaWYoViYmKCQuaW5uZXJIVE1MPSIiKSxBOChKLnR5cGU9PSJ0ZW1wbGF0ZSI/JC5jb250ZW50OiQsVzIoVSk/VTpbVV0sSixRLFosTz09ImZvcmVpZ25PYmplY3QiPyJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjpLLFkscSxZP1lbMF06US5fX2smJmUwKFEsMCksRyxOKSxZIT1udWxsKWZvcihCPVkubGVuZ3RoO0ItLTspUTMoWVtCXSk7R3x8KEI9InZhbHVlIixPPT0icHJvZ3Jlc3MiJiZrPT1udWxsPyQucmVtb3ZlQXR0cmlidXRlKCJ2YWx1ZSIpOmshPW51bGwmJihrIT09JFtCXXx8Tz09InByb2dyZXNzIiYmIWt8fE89PSJvcHRpb24iJiZrIT1DW0JdKSYmWjUoJCxCLGssQ1tCXSxLKSxCPSJjaGVja2VkIixIIT1udWxsJiZIIT0kW0JdJiZaNSgkLEIsSCxDW0JdLEspKX1yZXR1cm4gJH1mdW5jdGlvbiBYMygkLEosUSl7dHJ5e2lmKHR5cGVvZiAkPT0iZnVuY3Rpb24iKXt2YXIgWj10eXBlb2YgJC5fX3U9PSJmdW5jdGlvbiI7WiYmJC5fX3UoKSxaJiZKPT1udWxsfHwoJC5fX3U9JChKKSl9ZWxzZSAkLmN1cnJlbnQ9Sn1jYXRjaChLKXtzLl9fZShLLFEpfX1mdW5jdGlvbiBEOCgkLEosUSl7dmFyIFosSztpZihzLnVubW91bnQmJnMudW5tb3VudCgkKSwoWj0kLnJlZikmJihaLmN1cnJlbnQmJlouY3VycmVudCE9JC5fX2V8fFgzKFosbnVsbCxKKSksKFo9JC5fX2MpIT1udWxsKXtpZihaLmNvbXBvbmVudFdpbGxVbm1vdW50KXRyeXtaLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goWSl7cy5fX2UoWSxKKX1aLmJhc2U9Wi5fX1A9bnVsbH1pZihaPSQuX19rKWZvcihLPTA7SzxaLmxlbmd0aDtLKyspWltLXSYmRDgoWltLXSxKLFF8fHR5cGVvZiAkLnR5cGUhPSJmdW5jdGlvbiIpO1F8fFEzKCQuX19lKSwkLl9fYz0kLl9fPSQuX19lPXZvaWQgMH1mdW5jdGlvbiBxNygkLEosUSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IoJCxRKX1mdW5jdGlvbiB4MCgkLEosUSl7dmFyIFosSyxZLHE7Sj09ZG9jdW1lbnQmJihKPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkscy5fXyYmcy5fXygkLEopLEs9KFo9dHlwZW9mIFE9PSJmdW5jdGlvbiIpP251bGw6USYmUS5fX2t8fEouX19rLFk9W10scT1bXSxaMyhKLCQ9KCFaJiZRfHxKKS5fX2s9dTEoWjEsbnVsbCxbJF0pLEt8fEs1LEs1LEoubmFtZXNwYWNlVVJJLCFaJiZRP1tRXTpLP251bGw6Si5maXJzdENoaWxkP0EyLmNhbGwoSi5jaGlsZE5vZGVzKTpudWxsLFksIVomJlE/UTpLP0suX19lOkouZmlyc3RDaGlsZCxaLHEpLF84KFksJCxxKX1mdW5jdGlvbiBHNSgkLEope3gwKCQsSixHNSl9ZnVuY3Rpb24gSzMoJCxKLFEpe3ZhciBaLEssWSxxLEc9dzAoe30sJC5wcm9wcyk7Zm9yKFkgaW4gJC50eXBlJiYkLnR5cGUuZGVmYXVsdFByb3BzJiYocT0kLnR5cGUuZGVmYXVsdFByb3BzKSxKKVk9PSJrZXkiP1o9SltZXTpZPT0icmVmIj9LPUpbWV06R1tZXT1KW1ldPT09dm9pZCAwJiZxIT1udWxsP3FbWV06SltZXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4yJiYoRy5jaGlsZHJlbj1hcmd1bWVudHMubGVuZ3RoPjM/QTIuY2FsbChhcmd1bWVudHMsMik6USksTzIoJC50eXBlLEcsWnx8JC5rZXksS3x8JC5yZWYsbnVsbCl9ZnVuY3Rpb24gejAoJCl7ZnVuY3Rpb24gSihRKXt2YXIgWixLO3JldHVybiB0aGlzLmdldENoaWxkQ29udGV4dHx8KFo9bmV3IFNldCwoSz17fSlbSi5fX2NdPXRoaXMsdGhpcy5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gS30sdGhpcy5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe1o9bnVsbH0sdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oWSl7dGhpcy5wcm9wcy52YWx1ZSE9WS52YWx1ZSYmWi5mb3JFYWNoKGZ1bmN0aW9uKHEpe3EuX19lPSEwLGU1KHEpfSl9LHRoaXMuc3ViPWZ1bmN0aW9uKFkpe1ouYWRkKFkpO3ZhciBxPVkuY29tcG9uZW50V2lsbFVubW91bnQ7WS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe1omJlouZGVsZXRlKFkpLHEmJnEuY2FsbChZKX19KSxRLmNoaWxkcmVufXJldHVybiBKLl9fYz0iX19jQyIrTTgrKyxKLl9fPSQsSi5Qcm92aWRlcj1KLl9fbD0oSi5Db25zdW1lcj1mdW5jdGlvbihRLFope3JldHVybiBRLmNoaWxkcmVuKFopfSkuY29udGV4dFR5cGU9SixKfUEyPVk1LnNsaWNlLHM9e19fZTpmdW5jdGlvbigkLEosUSxaKXtmb3IodmFyIEssWSxxO0o9Si5fXzspaWYoKEs9Si5fX2MpJiYhSy5fXyl0cnl7aWYoKFk9Sy5jb25zdHJ1Y3RvcikmJlkuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIT1udWxsJiYoSy5zZXRTdGF0ZShZLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcigkKSkscT1LLl9fZCksSy5jb21wb25lbnREaWRDYXRjaCE9bnVsbCYmKEsuY29tcG9uZW50RGlkQ2F0Y2goJCxafHx7fSkscT1LLl9fZCkscSlyZXR1cm4gSy5fX0U9S31jYXRjaChHKXskPUd9dGhyb3cgJH19LEg4PTAsSjc9ZnVuY3Rpb24oJCl7cmV0dXJuICQhPW51bGwmJiQuY29uc3RydWN0b3I9PT12b2lkIDB9LG8xLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbigkLEope3ZhciBRO1E9dGhpcy5fX3MhPW51bGwmJnRoaXMuX19zIT10aGlzLnN0YXRlP3RoaXMuX19zOnRoaXMuX19zPXcwKHt9LHRoaXMuc3RhdGUpLHR5cGVvZiAkPT0iZnVuY3Rpb24iJiYoJD0kKHcwKHt9LFEpLHRoaXMucHJvcHMpKSwkJiZ3MChRLCQpLCQhPW51bGwmJnRoaXMuX192JiYoSiYmdGhpcy5fc2IucHVzaChKKSxlNSh0aGlzKSl9LG8xLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbigkKXt0aGlzLl9fdiYmKHRoaXMuX19lPSEwLCQmJnRoaXMuX19oLnB1c2goJCksZTUodGhpcykpfSxvMS5wcm90b3R5cGUucmVuZGVyPVoxLGgwPVtdLEM4PXR5cGVvZiBQcm9taXNlPT0iZnVuY3Rpb24iP1Byb21pc2UucHJvdG90eXBlLnRoZW4uYmluZChQcm9taXNlLnJlc29sdmUoKSk6c2V0VGltZW91dCxGOD1mdW5jdGlvbigkLEope3JldHVybiAkLl9fdi5fX2ItSi5fX3YuX19ifSxxNS5fX3I9MCxuNT1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDgpLFg1PSJfX2QiK241LE0yPSJfX2EiK241LGs4PS8oUG9pbnRlckNhcHR1cmUpJHxDYXB0dXJlJC9pLEozPTAsczU9VTgoITEpLHQ1PVU4KCEwKSxNOD0wO3ZhciBnMCxiMSxZMyx3OCwkMj0wLGo4PVtdLFIxPXMsVDg9UjEuX19iLEk4PVIxLl9fcixFOD1SMS5kaWZmZWQseTg9UjEuX19jLGI4PVIxLnVubW91bnQsUzg9UjEuX187ZnVuY3Rpb24gSjIoJCxKKXtSMS5fX2gmJlIxLl9faChiMSwkLCQyfHxKKSwkMj0wO3ZhciBRPWIxLl9fSHx8KGIxLl9fSD17X186W10sX19oOltdfSk7cmV0dXJuICQ+PVEuX18ubGVuZ3RoJiZRLl9fLnB1c2goe30pLFEuX19bJF19ZnVuY3Rpb24gQSgkKXtyZXR1cm4gJDI9MSxkMCh2OCwkKX1mdW5jdGlvbiBkMCgkLEosUSl7dmFyIFo9SjIoZzArKywyKTtpZihaLnQ9JCwhWi5fX2MmJihaLl9fPVtRP1EoSik6djgodm9pZCAwLEopLGZ1bmN0aW9uKEcpe3ZhciBOPVouX19OP1ouX19OWzBdOlouX19bMF0sQj1aLnQoTixHKTtOIT09QiYmKFouX19OPVtCLFouX19bMV1dLFouX19jLnNldFN0YXRlKHt9KSl9XSxaLl9fYz1iMSwhYjEuX19mKSl7dmFyIEs9ZnVuY3Rpb24oRyxOLEIpe2lmKCFaLl9fYy5fX0gpcmV0dXJuITA7dmFyIEw9Wi5fX2MuX19ILl9fLmZpbHRlcihmdW5jdGlvbihVKXtyZXR1cm4gVS5fX2N9KTtpZihMLmV2ZXJ5KGZ1bmN0aW9uKFUpe3JldHVybiFVLl9fTn0pKXJldHVybiFZfHxZLmNhbGwodGhpcyxHLE4sQik7dmFyIFY9Wi5fX2MucHJvcHMhPT1HO3JldHVybiBMLnNvbWUoZnVuY3Rpb24oVSl7aWYoVS5fX04pe3ZhciB6PVUuX19bMF07VS5fXz1VLl9fTixVLl9fTj12b2lkIDAseiE9PVUuX19bMF0mJihWPSEwKX19KSxZJiZZLmNhbGwodGhpcyxHLE4sQil8fFZ9O2IxLl9fZj0hMDt2YXJ7c2hvdWxkQ29tcG9uZW50VXBkYXRlOlksY29tcG9uZW50V2lsbFVwZGF0ZTpxfT1iMTtiMS5jb21wb25lbnRXaWxsVXBkYXRlPWZ1bmN0aW9uKEcsTixCKXtpZih0aGlzLl9fZSl7dmFyIEw9WTtZPXZvaWQgMCxLKEcsTixCKSxZPUx9cSYmcS5jYWxsKHRoaXMsRyxOLEIpfSxiMS5zaG91bGRDb21wb25lbnRVcGRhdGU9S31yZXR1cm4gWi5fX058fFouX199ZnVuY3Rpb24gYigkLEope3ZhciBRPUoyKGcwKyssMyk7IVIxLl9fcyYmRzMoUS5fX0gsSikmJihRLl9fPSQsUS51PUosYjEuX19ILl9faC5wdXNoKFEpKX1mdW5jdGlvbiBUMCgkLEope3ZhciBRPUoyKGcwKyssNCk7IVIxLl9fcyYmRzMoUS5fX0gsSikmJihRLl9fPSQsUS51PUosYjEuX19oLnB1c2goUSkpfWZ1bmN0aW9uIFQoJCl7cmV0dXJuICQyPTUsVDEoZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDokfX0sW10pfWZ1bmN0aW9uIEI1KCQsSixRKXskMj02LFQwKGZ1bmN0aW9uKCl7aWYodHlwZW9mICQ9PSJmdW5jdGlvbiIpe3ZhciBaPSQoSigpKTtyZXR1cm4gZnVuY3Rpb24oKXskKG51bGwpLFomJnR5cGVvZiBaPT0iZnVuY3Rpb24iJiZaKCl9fWlmKCQpcmV0dXJuICQuY3VycmVudD1KKCksZnVuY3Rpb24oKXtyZXR1cm4gJC5jdXJyZW50PW51bGx9fSxRPT1udWxsP1E6US5jb25jYXQoJCkpfWZ1bmN0aW9uIFQxKCQsSil7dmFyIFE9SjIoZzArKyw3KTtyZXR1cm4gRzMoUS5fX0gsSikmJihRLl9fPSQoKSxRLl9fSD1KLFEuX19oPSQpLFEuX199ZnVuY3Rpb24gRCgkLEope3JldHVybiAkMj04LFQxKGZ1bmN0aW9uKCl7cmV0dXJuICR9LEopfWZ1bmN0aW9uIFUwKCQpe3ZhciBKPWIxLmNvbnRleHRbJC5fX2NdLFE9SjIoZzArKyw5KTtyZXR1cm4gUS5jPSQsSj8oUS5fXz09bnVsbCYmKFEuX189ITAsSi5zdWIoYjEpKSxKLnByb3BzLnZhbHVlKTokLl9ffWZ1bmN0aW9uIE41KCQsSil7UjEudXNlRGVidWdWYWx1ZSYmUjEudXNlRGVidWdWYWx1ZShKP0ooJCk6JCl9ZnVuY3Rpb24gUTIoKXt2YXIgJD1KMihnMCsrLDExKTtpZighJC5fXyl7Zm9yKHZhciBKPWIxLl9fdjtKIT09bnVsbCYmIUouX19tJiZKLl9fIT09bnVsbDspSj1KLl9fO3ZhciBRPUouX19tfHwoSi5fX209WzAsMF0pOyQuX189IlAiK1FbMF0rIi0iK1FbMV0rK31yZXR1cm4gJC5fX31mdW5jdGlvbiBHNygpe2Zvcih2YXIgJDskPWo4LnNoaWZ0KCk7KXt2YXIgSj0kLl9fSDtpZigkLl9fUCYmSil0cnl7Si5fX2guc29tZShWNSksSi5fX2guc29tZShxMyksSi5fX2g9W119Y2F0Y2goUSl7Si5fX2g9W10sUjEuX19lKFEsJC5fX3YpfX19UjEuX19iPWZ1bmN0aW9uKCQpe2IxPW51bGwsVDgmJlQ4KCQpfSxSMS5fXz1mdW5jdGlvbigkLEopeyQmJkouX19rJiZKLl9fay5fX20mJigkLl9fbT1KLl9fay5fX20pLFM4JiZTOCgkLEopfSxSMS5fX3I9ZnVuY3Rpb24oJCl7STgmJkk4KCQpLGcwPTA7dmFyIEo9KGIxPSQuX19jKS5fX0g7SiYmKFkzPT09YjE/KEouX19oPVtdLGIxLl9faD1bXSxKLl9fLnNvbWUoZnVuY3Rpb24oUSl7US5fX04mJihRLl9fPVEuX19OKSxRLnU9US5fX049dm9pZCAwfSkpOihKLl9faC5zb21lKFY1KSxKLl9faC5zb21lKHEzKSxKLl9faD1bXSxnMD0wKSksWTM9YjF9LFIxLmRpZmZlZD1mdW5jdGlvbigkKXtFOCYmRTgoJCk7dmFyIEo9JC5fX2M7SiYmSi5fX0gmJihKLl9fSC5fX2gubGVuZ3RoJiYoajgucHVzaChKKSE9PTEmJnc4PT09UjEucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHwoKHc4PVIxLnJlcXVlc3RBbmltYXRpb25GcmFtZSl8fFY3KShHNykpLEouX19ILl9fLnNvbWUoZnVuY3Rpb24oUSl7US51JiYoUS5fX0g9US51KSxRLnU9dm9pZCAwfSkpLFkzPWIxPW51bGx9LFIxLl9fYz1mdW5jdGlvbigkLEope0ouc29tZShmdW5jdGlvbihRKXt0cnl7US5fX2guc29tZShWNSksUS5fX2g9US5fX2guZmlsdGVyKGZ1bmN0aW9uKFope3JldHVybiFaLl9ffHxxMyhaKX0pfWNhdGNoKFope0ouc29tZShmdW5jdGlvbihLKXtLLl9faCYmKEsuX19oPVtdKX0pLEo9W10sUjEuX19lKFosUS5fX3YpfX0pLHk4JiZ5OCgkLEopfSxSMS51bm1vdW50PWZ1bmN0aW9uKCQpe2I4JiZiOCgkKTt2YXIgSixRPSQuX19jO1EmJlEuX19IJiYoUS5fX0guX18uc29tZShmdW5jdGlvbihaKXt0cnl7VjUoWil9Y2F0Y2goSyl7Sj1LfX0pLFEuX19IPXZvaWQgMCxKJiZSMS5fX2UoSixRLl9fdikpfTt2YXIgeDg9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT09ImZ1bmN0aW9uIjtmdW5jdGlvbiBWNygkKXt2YXIgSixRPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KFopLHg4JiZjYW5jZWxBbmltYXRpb25GcmFtZShKKSxzZXRUaW1lb3V0KCQpfSxaPXNldFRpbWVvdXQoUSwzNSk7eDgmJihKPXJlcXVlc3RBbmltYXRpb25GcmFtZShRKSl9ZnVuY3Rpb24gVjUoJCl7dmFyIEo9YjEsUT0kLl9fYzt0eXBlb2YgUT09ImZ1bmN0aW9uIiYmKCQuX19jPXZvaWQgMCxRKCkpLGIxPUp9ZnVuY3Rpb24gcTMoJCl7dmFyIEo9YjE7JC5fX2M9JC5fXygpLGIxPUp9ZnVuY3Rpb24gRzMoJCxKKXtyZXR1cm4hJHx8JC5sZW5ndGghPT1KLmxlbmd0aHx8Si5zb21lKGZ1bmN0aW9uKFEsWil7cmV0dXJuIFEhPT0kW1pdfSl9ZnVuY3Rpb24gdjgoJCxKKXtyZXR1cm4gdHlwZW9mIEo9PSJmdW5jdGlvbiI/SigkKTpKfWZ1bmN0aW9uIEI3KCQsSil7Zm9yKHZhciBRIGluIEopJFtRXT1KW1FdO3JldHVybiAkfWZ1bmN0aW9uIFI4KCQsSil7Zm9yKHZhciBRIGluICQpaWYoUSE9PSJfX3NvdXJjZSImJiEoUSBpbiBKKSlyZXR1cm4hMDtmb3IodmFyIFogaW4gSilpZihaIT09Il9fc291cmNlIiYmJFtaXSE9PUpbWl0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gaDgoJCxKKXt0aGlzLnByb3BzPSQsdGhpcy5jb250ZXh0PUp9KGg4LnByb3RvdHlwZT1uZXcgbzEpLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLGg4LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oJCxKKXtyZXR1cm4gUjgodGhpcy5wcm9wcywkKXx8UjgodGhpcy5zdGF0ZSxKKX07dmFyIGc4PXMuX19iO3MuX19iPWZ1bmN0aW9uKCQpeyQudHlwZSYmJC50eXBlLl9fZiYmJC5yZWYmJigkLnByb3BzLnJlZj0kLnJlZiwkLnJlZj1udWxsKSxnOCYmZzgoJCl9O3ZhciBONz1zLl9fZTtzLl9fZT1mdW5jdGlvbigkLEosUSxaKXtpZigkLnRoZW4pe2Zvcih2YXIgSyxZPUo7WT1ZLl9fOylpZigoSz1ZLl9fYykmJksuX19jKXJldHVybiBKLl9fZT09bnVsbCYmKEouX19lPVEuX19lLEouX19rPVEuX19rKSxLLl9fYygkLEopfU43KCQsSixRLFopfTt2YXIgZjg9cy51bm1vdW50O2Z1bmN0aW9uIGM4KCQsSixRKXtyZXR1cm4gJCYmKCQuX19jJiYkLl9fYy5fX0gmJigkLl9fYy5fX0guX18uZm9yRWFjaChmdW5jdGlvbihaKXt0eXBlb2YgWi5fX2M9PSJmdW5jdGlvbiImJlouX19jKCl9KSwkLl9fYy5fX0g9bnVsbCksKCQ9Qjcoe30sJCkpLl9fYyE9bnVsbCYmKCQuX19jLl9fUD09PVEmJigkLl9fYy5fX1A9SiksJC5fX2MuX19lPSEwLCQuX19jPW51bGwpLCQuX19rPSQuX19rJiYkLl9fay5tYXAoZnVuY3Rpb24oWil7cmV0dXJuIGM4KFosSixRKX0pKSwkfWZ1bmN0aW9uIG84KCQsSixRKXtyZXR1cm4gJCYmUSYmKCQuX192PW51bGwsJC5fX2s9JC5fX2smJiQuX19rLm1hcChmdW5jdGlvbihaKXtyZXR1cm4gbzgoWixKLFEpfSksJC5fX2MmJiQuX19jLl9fUD09PUomJigkLl9fZSYmUS5hcHBlbmRDaGlsZCgkLl9fZSksJC5fX2MuX19lPSEwLCQuX19jLl9fUD1RKSksJH1mdW5jdGlvbiBWMygpe3RoaXMuX191PTAsdGhpcy5vPW51bGwsdGhpcy5fX2I9bnVsbH1mdW5jdGlvbiByOCgkKXt2YXIgSj0kLl9fJiYkLl9fLl9fYztyZXR1cm4gSiYmSi5fX2EmJkouX19hKCQpfWZ1bmN0aW9uIEw1KCl7dGhpcy5pPW51bGwsdGhpcy5sPW51bGx9cy51bm1vdW50PWZ1bmN0aW9uKCQpe3ZhciBKPSQuX19jO0omJihKLl9fej0hMCksSiYmSi5fX1ImJkouX19SKCksSiYmMzImJC5fX3UmJigkLnR5cGU9bnVsbCksZjgmJmY4KCQpfSwoVjMucHJvdG90eXBlPW5ldyBvMSkuX19jPWZ1bmN0aW9uKCQsSil7dmFyIFE9Si5fX2MsWj10aGlzO1oubz09bnVsbCYmKFoubz1bXSksWi5vLnB1c2goUSk7dmFyIEs9cjgoWi5fX3YpLFk9ITEscT1mdW5jdGlvbigpe1l8fFouX196fHwoWT0hMCxRLl9fUj1udWxsLEs/SyhOKTpOKCkpfTtRLl9fUj1xO3ZhciBHPVEuX19QO1EuX19QPW51bGw7dmFyIE49ZnVuY3Rpb24oKXtpZighLS1aLl9fdSl7aWYoWi5zdGF0ZS5fX2Epe3ZhciBCPVouc3RhdGUuX19hO1ouX192Ll9fa1swXT1vOChCLEIuX19jLl9fUCxCLl9fYy5fX08pfXZhciBMO2ZvcihaLnNldFN0YXRlKHtfX2E6Wi5fX2I9bnVsbH0pO0w9Wi5vLnBvcCgpOylMLl9fUD1HLEwuZm9yY2VVcGRhdGUoKX19O1ouX191Kyt8fDMyJkouX191fHxaLnNldFN0YXRlKHtfX2E6Wi5fX2I9Wi5fX3YuX19rWzBdfSksJC50aGVuKHEscSl9LFYzLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMubz1bXX0sVjMucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigkLEope2lmKHRoaXMuX19iKXtpZih0aGlzLl9fdi5fX2spe3ZhciBRPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLFo9dGhpcy5fX3YuX19rWzBdLl9fYzt0aGlzLl9fdi5fX2tbMF09YzgodGhpcy5fX2IsUSxaLl9fTz1aLl9fUCl9dGhpcy5fX2I9bnVsbH12YXIgSz1KLl9fYSYmdTEoWjEsbnVsbCwkLmZhbGxiYWNrKTtyZXR1cm4gSyYmKEsuX191Jj0tMzMpLFt1MShaMSxudWxsLEouX19hP251bGw6JC5jaGlsZHJlbiksS119O3ZhciBtOD1mdW5jdGlvbigkLEosUSl7aWYoKytRWzFdPT09UVswXSYmJC5sLmRlbGV0ZShKKSwkLnByb3BzLnJldmVhbE9yZGVyJiYoJC5wcm9wcy5yZXZlYWxPcmRlclswXSE9PSJ0Inx8ISQubC5zaXplKSlmb3IoUT0kLmk7UTspe2Zvcig7US5sZW5ndGg+MzspUS5wb3AoKSgpO2lmKFFbMV08UVswXSlicmVhazskLmk9UT1RWzJdfX07KEw1LnByb3RvdHlwZT1uZXcgbzEpLl9fYT1mdW5jdGlvbigkKXt2YXIgSj10aGlzLFE9cjgoSi5fX3YpLFo9Si5sLmdldCgkKTtyZXR1cm4gWlswXSsrLGZ1bmN0aW9uKEspe3ZhciBZPWZ1bmN0aW9uKCl7Si5wcm9wcy5yZXZlYWxPcmRlcj8oWi5wdXNoKEspLG04KEosJCxaKSk6SygpfTtRP1EoWSk6WSgpfX0sTDUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigkKXt0aGlzLmk9bnVsbCx0aGlzLmw9bmV3IE1hcDt2YXIgSj1YMCgkLmNoaWxkcmVuKTskLnJldmVhbE9yZGVyJiYkLnJldmVhbE9yZGVyWzBdPT09ImIiJiZKLnJldmVyc2UoKTtmb3IodmFyIFE9Si5sZW5ndGg7US0tOyl0aGlzLmwuc2V0KEpbUV0sdGhpcy5pPVsxLDAsdGhpcy5pXSk7cmV0dXJuICQuY2hpbGRyZW59LEw1LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9TDUucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyICQ9dGhpczt0aGlzLmwuZm9yRWFjaChmdW5jdGlvbihKLFEpe204KCQsUSxKKX0pfTt2YXIgTDc9dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDMsejc9L14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxpbWFnZSghUyl8bGV0dGVyfGxpZ2h0aW5nfG1hcmtlcig/IUh8V3xVKXxvdmVybGluZXxwYWludHxwb2ludGVyfHNoYXBlfHN0b3B8c3RyaWtldGhyb3VnaHxzdHJva2V8dGV4dCg/IUwpfHRyYW5zZm9ybXx1bmRlcmxpbmV8dW5pY29kZXx1bml0c3x2fHZlY3Rvcnx2ZXJ0fHdvcmR8d3JpdGluZ3x4KD8hQykpW0EtWl0vLFU3PS9eb24oQW5pfFRyYXxUb3V8QmVmb3JlSW5wfENvbXBvKS8sSDc9L1tBLVowLTldL2csQzc9dHlwZW9mIGRvY3VtZW50PCJ1IixGNz1mdW5jdGlvbigkKXtyZXR1cm4odHlwZW9mIFN5bWJvbDwidSImJnR5cGVvZiBTeW1ib2woKT09InN5bWJvbCI/L2ZpbHxjaGV8cmFkLzovZmlsfGNoZXxyYS8pLnRlc3QoJCl9O2Z1bmN0aW9uIGk4KCQsSixRKXtyZXR1cm4gSi5fX2s9PW51bGwmJihKLnRleHRDb250ZW50PSIiKSx4MCgkLEopLHR5cGVvZiBRPT0iZnVuY3Rpb24iJiZRKCksJD8kLl9fYzpudWxsfW8xLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PSEwLFsiY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsImNvbXBvbmVudFdpbGxVcGRhdGUiXS5mb3JFYWNoKGZ1bmN0aW9uKCQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvMS5wcm90b3R5cGUsJCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzWyJVTlNBRkVfIiskXX0sc2V0OmZ1bmN0aW9uKEope09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCQse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpKfSl9fSl9KTt2YXIgcDg9cy5ldmVudDtzLmV2ZW50PWZ1bmN0aW9uKCQpe3JldHVybiBwOCYmKCQ9cDgoJCkpLCQucGVyc2lzdD1mdW5jdGlvbigpe30sJC5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbmNlbEJ1YmJsZX0sJC5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0UHJldmVudGVkfSwkLm5hdGl2ZUV2ZW50PSR9O3ZhciBhOCxrNz17Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsYXNzfX0sdTg9cy52bm9kZTtzLnZub2RlPWZ1bmN0aW9uKCQpe3R5cGVvZiAkLnR5cGU9PSJzdHJpbmciJiZmdW5jdGlvbihKKXt2YXJ7cHJvcHM6USx0eXBlOlp9PUosSz17fSxZPVouaW5kZXhPZigiLSIpPT0tMTtmb3IodmFyIHEgaW4gUSl7dmFyIEc9UVtxXTtpZighKHE9PT0idmFsdWUiJiYoImRlZmF1bHRWYWx1ZSJpbiBRKSYmRz09bnVsbHx8QzcmJnE9PT0iY2hpbGRyZW4iJiZaPT09Im5vc2NyaXB0Inx8cT09PSJjbGFzcyJ8fHE9PT0iY2xhc3NOYW1lIikpe3ZhciBOPXEudG9Mb3dlckNhc2UoKTtxPT09ImRlZmF1bHRWYWx1ZSImJiJ2YWx1ZSJpbiBRJiZRLnZhbHVlPT1udWxsP3E9InZhbHVlIjpxPT09ImRvd25sb2FkIiYmRz09PSEwP0c9IiI6Tj09PSJ0cmFuc2xhdGUiJiZHPT09Im5vIj9HPSExOk5bMF09PT0ibyImJk5bMV09PT0ibiI/Tj09PSJvbmRvdWJsZWNsaWNrIj9xPSJvbmRibGNsaWNrIjpOIT09Im9uY2hhbmdlInx8WiE9PSJpbnB1dCImJlohPT0idGV4dGFyZWEifHxGNyhRLnR5cGUpP049PT0ib25mb2N1cyI/cT0ib25mb2N1c2luIjpOPT09Im9uYmx1ciI/cT0ib25mb2N1c291dCI6VTcudGVzdChxKSYmKHE9Tik6Tj1xPSJvbmlucHV0IjpZJiZ6Ny50ZXN0KHEpP3E9cS5yZXBsYWNlKEg3LCItJCYiKS50b0xvd2VyQ2FzZSgpOkc9PT1udWxsJiYoRz12b2lkIDApLE49PT0ib25pbnB1dCImJktbcT1OXSYmKHE9Im9uaW5wdXRDYXB0dXJlIiksS1txXT1HfX1aPT0ic2VsZWN0IiYmKEsubXVsdGlwbGUmJkFycmF5LmlzQXJyYXkoSy52YWx1ZSkmJihLLnZhbHVlPVgwKFEuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24oQil7Qi5wcm9wcy5zZWxlY3RlZD1LLnZhbHVlLmluZGV4T2YoQi5wcm9wcy52YWx1ZSkhPS0xfSkpLEsuZGVmYXVsdFZhbHVlIT1udWxsJiYoSy52YWx1ZT1YMChRLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKEIpe0IucHJvcHMuc2VsZWN0ZWQ9Sy5tdWx0aXBsZT9LLmRlZmF1bHRWYWx1ZS5pbmRleE9mKEIucHJvcHMudmFsdWUpIT0tMTpLLmRlZmF1bHRWYWx1ZT09Qi5wcm9wcy52YWx1ZX0pKSksUS5jbGFzcyYmIVEuY2xhc3NOYW1lPyhLLmNsYXNzPVEuY2xhc3MsT2JqZWN0LmRlZmluZVByb3BlcnR5KEssImNsYXNzTmFtZSIsazcpKTpRLmNsYXNzTmFtZSYmKEsuY2xhc3M9Sy5jbGFzc05hbWU9US5jbGFzc05hbWUpLEoucHJvcHM9S30oJCksJC4kJHR5cGVvZj1MNyx1OCYmdTgoJCl9O3ZhciBsOD1zLl9fcjtzLl9fcj1mdW5jdGlvbigkKXtsOCYmbDgoJCksYTg9JC5fX2N9O3ZhciBkOD1zLmRpZmZlZDtzLmRpZmZlZD1mdW5jdGlvbigkKXtkOCYmZDgoJCk7dmFye3Byb3BzOkosX19lOlF9PSQ7USE9bnVsbCYmJC50eXBlPT09InRleHRhcmVhIiYmInZhbHVlImluIEomJkoudmFsdWUhPT1RLnZhbHVlJiYoUS52YWx1ZT1KLnZhbHVlPT1udWxsPyIiOkoudmFsdWUpLGE4PW51bGx9O2Z1bmN0aW9uIG44KCQpe3JldHVybiEhJC5fX2smJih4MChudWxsLCQpLCEwKX1mdW5jdGlvbiBzOCgkKXtyZXR1cm57cmVuZGVyOmZ1bmN0aW9uKEope2k4KEosJCl9LHVubW91bnQ6ZnVuY3Rpb24oKXtuOCgkKX19fWZ1bmN0aW9uIFk5KCQsSil7Zm9yKHZhciBRIGluIEopJFtRXT1KW1FdO3JldHVybiAkfWZ1bmN0aW9uIE4zKCQsSil7Zm9yKHZhciBRIGluICQpaWYoUSE9PSJfX3NvdXJjZSImJiEoUSBpbiBKKSlyZXR1cm4hMDtmb3IodmFyIFogaW4gSilpZihaIT09Il9fc291cmNlIiYmJFtaXSE9PUpbWl0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcTkoJCxKKXt2YXIgUT1KKCksWj1BKHt0OntfXzpRLHU6Sn19KSxLPVpbMF0udCxZPVpbMV07cmV0dXJuIFQwKGZ1bmN0aW9uKCl7Sy5fXz1RLEsudT1KLEIzKEspJiZZKHt0Okt9KX0sWyQsUSxKXSksYihmdW5jdGlvbigpe3JldHVybiBCMyhLKSYmWSh7dDpLfSksJChmdW5jdGlvbigpe0IzKEspJiZZKHt0Okt9KX0pfSxbJF0pLFF9ZnVuY3Rpb24gQjMoJCl7dHJ5e3JldHVybiEoKEo9JC5fXyk9PT0oUT0kLnUoKSkmJihKIT09MHx8MS9KPT0xL1EpfHxKIT1KJiZRIT1RKX1jYXRjaChaKXtyZXR1cm4hMH12YXIgSixRfWZ1bmN0aW9uIEc5KCQpeyQoKX1mdW5jdGlvbiBWOSgkKXtyZXR1cm4gJH1mdW5jdGlvbiBCOSgpe3JldHVyblshMSxHOV19dmFyIE45PVQwO2Z1bmN0aW9uIEwzKCQsSil7dGhpcy5wcm9wcz0kLHRoaXMuY29udGV4dD1KfWZ1bmN0aW9uIGMwKCQsSil7ZnVuY3Rpb24gUShLKXt2YXIgWT10aGlzLnByb3BzLnJlZjtyZXR1cm4gWSE9Sy5yZWYmJlkmJih0eXBlb2YgWT09ImZ1bmN0aW9uIj9ZKG51bGwpOlkuY3VycmVudD1udWxsKSxKPyFKKHRoaXMucHJvcHMsSyl8fFkhPUsucmVmOk4zKHRoaXMucHJvcHMsSyl9ZnVuY3Rpb24gWihLKXtyZXR1cm4gdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGU9USx1MSgkLEspfXJldHVybiBaLmRpc3BsYXlOYW1lPSJNZW1vKCIrKCQuZGlzcGxheU5hbWV8fCQubmFtZSkrIikiLFouX19mPVoucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9ITAsWi50eXBlPSQsWn0oTDMucHJvdG90eXBlPW5ldyBvMSkuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITAsTDMucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbigkLEope3JldHVybiBOMyh0aGlzLnByb3BzLCQpfHxOMyh0aGlzLnN0YXRlLEopfTt2YXIgdDg9cy5fX2I7cy5fX2I9ZnVuY3Rpb24oJCl7JC50eXBlJiYkLnR5cGUuX19mJiYkLnJlZiYmKCQucHJvcHMucmVmPSQucmVmLCQucmVmPW51bGwpLHQ4JiZ0OCgkKX07dmFyIE03PXR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpfHwzOTExO2Z1bmN0aW9uIFcwKCQpe2Z1bmN0aW9uIEooUSl7dmFyIFo9WTkoe30sUSk7cmV0dXJuIGRlbGV0ZSBaLnJlZiwkKFosUS5yZWZ8fG51bGwpfXJldHVybiBKLiQkdHlwZW9mPU03LEoucmVuZGVyPSQsSi5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD1KLl9fZj0hMCxKLmRpc3BsYXlOYW1lPSJGb3J3YXJkUmVmKCIrKCQuZGlzcGxheU5hbWV8fCQubmFtZSkrIikiLEp9dmFyIGU4PWZ1bmN0aW9uKCQsSil7cmV0dXJuICQ9PW51bGw/bnVsbDpYMChYMCgkKS5tYXAoSikpfSxPNz17bWFwOmU4LGZvckVhY2g6ZTgsY291bnQ6ZnVuY3Rpb24oJCl7cmV0dXJuICQ/WDAoJCkubGVuZ3RoOjB9LG9ubHk6ZnVuY3Rpb24oJCl7dmFyIEo9WDAoJCk7aWYoSi5sZW5ndGghPT0xKXRocm93IkNoaWxkcmVuLm9ubHkiO3JldHVybiBKWzBdfSx0b0FycmF5OlgwfSxBNz1zLl9fZTtzLl9fZT1mdW5jdGlvbigkLEosUSxaKXtpZigkLnRoZW4pe2Zvcih2YXIgSyxZPUo7WT1ZLl9fOylpZigoSz1ZLl9fYykmJksuX19jKXJldHVybiBKLl9fZT09bnVsbCYmKEouX19lPVEuX19lLEouX19rPVEuX19rKSxLLl9fYygkLEopfUE3KCQsSixRLFopfTt2YXIgJDk9cy51bm1vdW50O2Z1bmN0aW9uIEw5KCQsSixRKXtyZXR1cm4gJCYmKCQuX19jJiYkLl9fYy5fX0gmJigkLl9fYy5fX0guX18uZm9yRWFjaChmdW5jdGlvbihaKXt0eXBlb2YgWi5fX2M9PSJmdW5jdGlvbiImJlouX19jKCl9KSwkLl9fYy5fX0g9bnVsbCksKCQ9WTkoe30sJCkpLl9fYyE9bnVsbCYmKCQuX19jLl9fUD09PVEmJigkLl9fYy5fX1A9SiksJC5fX2MuX19lPSEwLCQuX19jPW51bGwpLCQuX19rPSQuX19rJiYkLl9fay5tYXAoZnVuY3Rpb24oWil7cmV0dXJuIEw5KFosSixRKX0pKSwkfWZ1bmN0aW9uIHo5KCQsSixRKXtyZXR1cm4gJCYmUSYmKCQuX192PW51bGwsJC5fX2s9JC5fX2smJiQuX19rLm1hcChmdW5jdGlvbihaKXtyZXR1cm4gejkoWixKLFEpfSksJC5fX2MmJiQuX19jLl9fUD09PUomJigkLl9fZSYmUS5hcHBlbmRDaGlsZCgkLl9fZSksJC5fX2MuX19lPSEwLCQuX19jLl9fUD1RKSksJH1mdW5jdGlvbiB6NSgpe3RoaXMuX191PTAsdGhpcy5vPW51bGwsdGhpcy5fX2I9bnVsbH1mdW5jdGlvbiBVOSgkKXt2YXIgSj0kLl9fJiYkLl9fLl9fYztyZXR1cm4gSiYmSi5fX2EmJkouX19hKCQpfWZ1bmN0aW9uIFc3KCQpe3ZhciBKLFEsWixLPW51bGw7ZnVuY3Rpb24gWShxKXtpZihKfHwoSj0kKCkpLnRoZW4oZnVuY3Rpb24oRyl7RyYmKEs9Ry5kZWZhdWx0fHxHKSxaPSEwfSxmdW5jdGlvbihHKXtRPUcsWj0hMH0pLFEpdGhyb3cgUTtpZighWil0aHJvdyBKO3JldHVybiBLP3UxKEsscSk6bnVsbH1yZXR1cm4gWS5kaXNwbGF5TmFtZT0iTGF6eSIsWS5fX2Y9ITAsWX1mdW5jdGlvbiBQMigpe3RoaXMuaT1udWxsLHRoaXMubD1udWxsfXMudW5tb3VudD1mdW5jdGlvbigkKXt2YXIgSj0kLl9fYztKJiYoSi5fX3o9ITApLEomJkouX19SJiZKLl9fUigpLEomJjMyJiQuX191JiYoJC50eXBlPW51bGwpLCQ5JiYkOSgkKX0sKHo1LnByb3RvdHlwZT1uZXcgbzEpLl9fYz1mdW5jdGlvbigkLEope3ZhciBRPUouX19jLFo9dGhpcztaLm89PW51bGwmJihaLm89W10pLFouby5wdXNoKFEpO3ZhciBLPVU5KFouX192KSxZPSExLHE9ZnVuY3Rpb24oKXtZfHxaLl9fenx8KFk9ITAsUS5fX1I9bnVsbCxLP0soTik6TigpKX07US5fX1I9cTt2YXIgRz1RLl9fUDtRLl9fUD1udWxsO3ZhciBOPWZ1bmN0aW9uKCl7aWYoIS0tWi5fX3Upe2lmKFouc3RhdGUuX19hKXt2YXIgQj1aLnN0YXRlLl9fYTtaLl9fdi5fX2tbMF09ejkoQixCLl9fYy5fX1AsQi5fX2MuX19PKX12YXIgTDtmb3IoWi5zZXRTdGF0ZSh7X19hOlouX19iPW51bGx9KTtMPVouby5wb3AoKTspTC5fX1A9RyxMLmZvcmNlVXBkYXRlKCl9fTtaLl9fdSsrfHwzMiZKLl9fdXx8Wi5zZXRTdGF0ZSh7X19hOlouX19iPVouX192Ll9fa1swXX0pLCQudGhlbihxLHEpfSx6NS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt0aGlzLm89W119LHo1LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oJCxKKXtpZih0aGlzLl9fYil7aWYodGhpcy5fX3YuX19rKXt2YXIgUT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxaPXRoaXMuX192Ll9fa1swXS5fX2M7dGhpcy5fX3YuX19rWzBdPUw5KHRoaXMuX19iLFEsWi5fX089Wi5fX1ApfXRoaXMuX19iPW51bGx9dmFyIEs9Si5fX2EmJnUxKFoxLG51bGwsJC5mYWxsYmFjayk7cmV0dXJuIEsmJihLLl9fdSY9LTMzKSxbdTEoWjEsbnVsbCxKLl9fYT9udWxsOiQuY2hpbGRyZW4pLEtdfTt2YXIgSjk9ZnVuY3Rpb24oJCxKLFEpe2lmKCsrUVsxXT09PVFbMF0mJiQubC5kZWxldGUoSiksJC5wcm9wcy5yZXZlYWxPcmRlciYmKCQucHJvcHMucmV2ZWFsT3JkZXJbMF0hPT0idCJ8fCEkLmwuc2l6ZSkpZm9yKFE9JC5pO1E7KXtmb3IoO1EubGVuZ3RoPjM7KVEucG9wKCkoKTtpZihRWzFdPFFbMF0pYnJlYWs7JC5pPVE9UVsyXX19O2Z1bmN0aW9uIF83KCQpe3JldHVybiB0aGlzLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiAkLmNvbnRleHR9LCQuY2hpbGRyZW59ZnVuY3Rpb24gUDcoJCl7dmFyIEo9dGhpcyxRPSQuaDtpZihKLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7eDAobnVsbCxKLnYpLEoudj1udWxsLEouaD1udWxsfSxKLmgmJkouaCE9PVEmJkouY29tcG9uZW50V2lsbFVubW91bnQoKSwhSi52KXtmb3IodmFyIFo9Si5fX3Y7WiE9PW51bGwmJiFaLl9fbSYmWi5fXyE9PW51bGw7KVo9Wi5fXztKLmg9USxKLnY9e25vZGVUeXBlOjEscGFyZW50Tm9kZTpRLGNoaWxkTm9kZXM6W10sX19rOntfX206Wi5fX219LGNvbnRhaW5zOmZ1bmN0aW9uKCl7cmV0dXJuITB9LG5hbWVzcGFjZVVSSTpRLm5hbWVzcGFjZVVSSSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oSyxZKXt0aGlzLmNoaWxkTm9kZXMucHVzaChLKSxKLmguaW5zZXJ0QmVmb3JlKEssWSl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKEspe3RoaXMuY2hpbGROb2Rlcy5zcGxpY2UodGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoSyk+Pj4xLDEpLEouaC5yZW1vdmVDaGlsZChLKX19fXgwKHUxKF83LHtjb250ZXh0OkouY29udGV4dH0sJC5fX3YpLEoudil9ZnVuY3Rpb24gejMoJCxKKXt2YXIgUT11MShQNyx7X192OiQsaDpKfSk7cmV0dXJuIFEuY29udGFpbmVySW5mbz1KLFF9KFAyLnByb3RvdHlwZT1uZXcgbzEpLl9fYT1mdW5jdGlvbigkKXt2YXIgSj10aGlzLFE9VTkoSi5fX3YpLFo9Si5sLmdldCgkKTtyZXR1cm4gWlswXSsrLGZ1bmN0aW9uKEspe3ZhciBZPWZ1bmN0aW9uKCl7Si5wcm9wcy5yZXZlYWxPcmRlcj8oWi5wdXNoKEspLEo5KEosJCxaKSk6SygpfTtRP1EoWSk6WSgpfX0sUDIucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigkKXt0aGlzLmk9bnVsbCx0aGlzLmw9bmV3IE1hcDt2YXIgSj1YMCgkLmNoaWxkcmVuKTskLnJldmVhbE9yZGVyJiYkLnJldmVhbE9yZGVyWzBdPT09ImIiJiZKLnJldmVyc2UoKTtmb3IodmFyIFE9Si5sZW5ndGg7US0tOyl0aGlzLmwuc2V0KEpbUV0sdGhpcy5pPVsxLDAsdGhpcy5pXSk7cmV0dXJuICQuY2hpbGRyZW59LFAyLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9UDIucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyICQ9dGhpczt0aGlzLmwuZm9yRWFjaChmdW5jdGlvbihKLFEpe0o5KCQsUSxKKX0pfTt2YXIgSDk9dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDMsRDc9L14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxpbWFnZSghUyl8bGV0dGVyfGxpZ2h0aW5nfG1hcmtlcig/IUh8V3xVKXxvdmVybGluZXxwYWludHxwb2ludGVyfHNoYXBlfHN0b3B8c3RyaWtldGhyb3VnaHxzdHJva2V8dGV4dCg/IUwpfHRyYW5zZm9ybXx1bmRlcmxpbmV8dW5pY29kZXx1bml0c3x2fHZlY3Rvcnx2ZXJ0fHdvcmR8d3JpdGluZ3x4KD8hQykpW0EtWl0vLHc3PS9eb24oQW5pfFRyYXxUb3V8QmVmb3JlSW5wfENvbXBvKS8sVDc9L1tBLVowLTldL2csSTc9dHlwZW9mIGRvY3VtZW50PCJ1IixFNz1mdW5jdGlvbigkKXtyZXR1cm4odHlwZW9mIFN5bWJvbDwidSImJnR5cGVvZiBTeW1ib2woKT09InN5bWJvbCI/L2ZpbHxjaGV8cmFkLzovZmlsfGNoZXxyYS8pLnRlc3QoJCl9O2Z1bmN0aW9uIHk3KCQsSixRKXtyZXR1cm4gSi5fX2s9PW51bGwmJihKLnRleHRDb250ZW50PSIiKSx4MCgkLEopLHR5cGVvZiBRPT0iZnVuY3Rpb24iJiZRKCksJD8kLl9fYzpudWxsfWZ1bmN0aW9uIGI3KCQsSixRKXtyZXR1cm4gRzUoJCxKKSx0eXBlb2YgUT09ImZ1bmN0aW9uIiYmUSgpLCQ/JC5fX2M6bnVsbH1vMS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD0hMCxbImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJjb21wb25lbnRXaWxsVXBkYXRlIl0uZm9yRWFjaChmdW5jdGlvbigkKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobzEucHJvdG90eXBlLCQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1siVU5TQUZFXyIrJF19LHNldDpmdW5jdGlvbihKKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywkLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Sn0pfX0pfSk7dmFyIFE5PXMuZXZlbnQ7cy5ldmVudD1mdW5jdGlvbigkKXtyZXR1cm4gUTkmJigkPVE5KCQpKSwkLnBlcnNpc3Q9ZnVuY3Rpb24oKXt9LCQuaXNQcm9wYWdhdGlvblN0b3BwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWxCdWJibGV9LCQuaXNEZWZhdWx0UHJldmVudGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFByZXZlbnRlZH0sJC5uYXRpdmVFdmVudD0kfTt2YXIgVTMsUzc9e2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbGFzc319LFo5PXMudm5vZGU7cy52bm9kZT1mdW5jdGlvbigkKXt0eXBlb2YgJC50eXBlPT0ic3RyaW5nIiYmZnVuY3Rpb24oSil7dmFye3Byb3BzOlEsdHlwZTpafT1KLEs9e30sWT1aLmluZGV4T2YoIi0iKT09LTE7Zm9yKHZhciBxIGluIFEpe3ZhciBHPVFbcV07aWYoIShxPT09InZhbHVlIiYmKCJkZWZhdWx0VmFsdWUiaW4gUSkmJkc9PW51bGx8fEk3JiZxPT09ImNoaWxkcmVuIiYmWj09PSJub3NjcmlwdCJ8fHE9PT0iY2xhc3MifHxxPT09ImNsYXNzTmFtZSIpKXt2YXIgTj1xLnRvTG93ZXJDYXNlKCk7cT09PSJkZWZhdWx0VmFsdWUiJiYidmFsdWUiaW4gUSYmUS52YWx1ZT09bnVsbD9xPSJ2YWx1ZSI6cT09PSJkb3dubG9hZCImJkc9PT0hMD9HPSIiOk49PT0idHJhbnNsYXRlIiYmRz09PSJubyI/Rz0hMTpOWzBdPT09Im8iJiZOWzFdPT09Im4iP049PT0ib25kb3VibGVjbGljayI/cT0ib25kYmxjbGljayI6TiE9PSJvbmNoYW5nZSJ8fFohPT0iaW5wdXQiJiZaIT09InRleHRhcmVhInx8RTcoUS50eXBlKT9OPT09Im9uZm9jdXMiP3E9Im9uZm9jdXNpbiI6Tj09PSJvbmJsdXIiP3E9Im9uZm9jdXNvdXQiOnc3LnRlc3QocSkmJihxPU4pOk49cT0ib25pbnB1dCI6WSYmRDcudGVzdChxKT9xPXEucmVwbGFjZShUNywiLSQmIikudG9Mb3dlckNhc2UoKTpHPT09bnVsbCYmKEc9dm9pZCAwKSxOPT09Im9uaW5wdXQiJiZLW3E9Tl0mJihxPSJvbmlucHV0Q2FwdHVyZSIpLEtbcV09R319Wj09InNlbGVjdCImJihLLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KEsudmFsdWUpJiYoSy52YWx1ZT1YMChRLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKEIpe0IucHJvcHMuc2VsZWN0ZWQ9Sy52YWx1ZS5pbmRleE9mKEIucHJvcHMudmFsdWUpIT0tMX0pKSxLLmRlZmF1bHRWYWx1ZSE9bnVsbCYmKEsudmFsdWU9WDAoUS5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbihCKXtCLnByb3BzLnNlbGVjdGVkPUsubXVsdGlwbGU/Sy5kZWZhdWx0VmFsdWUuaW5kZXhPZihCLnByb3BzLnZhbHVlKSE9LTE6Sy5kZWZhdWx0VmFsdWU9PUIucHJvcHMudmFsdWV9KSkpLFEuY2xhc3MmJiFRLmNsYXNzTmFtZT8oSy5jbGFzcz1RLmNsYXNzLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLLCJjbGFzc05hbWUiLFM3KSk6US5jbGFzc05hbWUmJihLLmNsYXNzPUsuY2xhc3NOYW1lPVEuY2xhc3NOYW1lKSxKLnByb3BzPUt9KCQpLCQuJCR0eXBlb2Y9SDksWjkmJlo5KCQpfTt2YXIgWDk9cy5fX3I7cy5fX3I9ZnVuY3Rpb24oJCl7WDkmJlg5KCQpLFUzPSQuX19jfTt2YXIgSzk9cy5kaWZmZWQ7cy5kaWZmZWQ9ZnVuY3Rpb24oJCl7SzkmJks5KCQpO3Zhcntwcm9wczpKLF9fZTpRfT0kO1EhPW51bGwmJiQudHlwZT09PSJ0ZXh0YXJlYSImJiJ2YWx1ZSJpbiBKJiZKLnZhbHVlIT09US52YWx1ZSYmKFEudmFsdWU9Si52YWx1ZT09bnVsbD8iIjpKLnZhbHVlKSxVMz1udWxsfTt2YXIgeDc9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6e2N1cnJlbnQ6e3JlYWRDb250ZXh0OmZ1bmN0aW9uKCQpe3JldHVybiBVMy5fX25bJC5fX2NdLnByb3BzLnZhbHVlfSx1c2VDYWxsYmFjazpELHVzZUNvbnRleHQ6VTAsdXNlRGVidWdWYWx1ZTpONSx1c2VEZWZlcnJlZFZhbHVlOlY5LHVzZUVmZmVjdDpiLHVzZUlkOlEyLHVzZUltcGVyYXRpdmVIYW5kbGU6QjUsdXNlSW5zZXJ0aW9uRWZmZWN0Ok45LHVzZUxheW91dEVmZmVjdDpUMCx1c2VNZW1vOlQxLHVzZVJlZHVjZXI6ZDAsdXNlUmVmOlQsdXNlU3RhdGU6QSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpxOSx1c2VUcmFuc2l0aW9uOkI5fX19O2Z1bmN0aW9uIGo3KCQpe3JldHVybiB1MS5iaW5kKG51bGwsJCl9ZnVuY3Rpb24gVTUoJCl7cmV0dXJuISEkJiYkLiQkdHlwZW9mPT09SDl9ZnVuY3Rpb24gdjcoJCl7cmV0dXJuIFU1KCQpJiYkLnR5cGU9PT1aMX1mdW5jdGlvbiBSNygkKXtyZXR1cm4hISQmJnR5cGVvZiAkLmRpc3BsYXlOYW1lPT0ic3RyaW5nIiYmJC5kaXNwbGF5TmFtZS5pbmRleE9mKCJNZW1vKCIpPT0wfWZ1bmN0aW9uIGg3KCQpe3JldHVybiBVNSgkKT9LMy5hcHBseShudWxsLGFyZ3VtZW50cyk6JH1mdW5jdGlvbiBnNygkKXtyZXR1cm4hISQuX19rJiYoeDAobnVsbCwkKSwhMCl9ZnVuY3Rpb24gZjcoJCl7cmV0dXJuICQmJigkLmJhc2V8fCQubm9kZVR5cGU9PT0xJiYkKXx8bnVsbH12YXIgbTc9ZnVuY3Rpb24oJCxKKXtyZXR1cm4gJChKKX0scDc9ZnVuY3Rpb24oJCxKKXt2YXIgUT1zLmRlYm91bmNlUmVuZGVyaW5nO3MuZGVib3VuY2VSZW5kZXJpbmc9ZnVuY3Rpb24oSyl7cmV0dXJuIEsoKX07dmFyIFo9JChKKTtyZXR1cm4gcy5kZWJvdW5jZVJlbmRlcmluZz1RLFp9LHU3PVU1LGY9e3VzZVN0YXRlOkEsdXNlSWQ6UTIsdXNlUmVkdWNlcjpkMCx1c2VFZmZlY3Q6Yix1c2VMYXlvdXRFZmZlY3Q6VDAsdXNlSW5zZXJ0aW9uRWZmZWN0Ok45LHVzZVRyYW5zaXRpb246QjksdXNlRGVmZXJyZWRWYWx1ZTpWOSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpxOSxzdGFydFRyYW5zaXRpb246RzksdXNlUmVmOlQsdXNlSW1wZXJhdGl2ZUhhbmRsZTpCNSx1c2VNZW1vOlQxLHVzZUNhbGxiYWNrOkQsdXNlQ29udGV4dDpVMCx1c2VEZWJ1Z1ZhbHVlOk41LHZlcnNpb246IjE4LjMuMSIsQ2hpbGRyZW46TzcscmVuZGVyOnk3LGh5ZHJhdGU6YjcsdW5tb3VudENvbXBvbmVudEF0Tm9kZTpnNyxjcmVhdGVQb3J0YWw6ejMsY3JlYXRlRWxlbWVudDp1MSxjcmVhdGVDb250ZXh0OnowLGNyZWF0ZUZhY3Rvcnk6ajcsY2xvbmVFbGVtZW50Omg3LGNyZWF0ZVJlZjpfMixGcmFnbWVudDpaMSxpc1ZhbGlkRWxlbWVudDpVNSxpc0VsZW1lbnQ6dTcsaXNGcmFnbWVudDp2Nyxpc01lbW86UjcsZmluZERPTU5vZGU6ZjcsQ29tcG9uZW50Om8xLFB1cmVDb21wb25lbnQ6TDMsbWVtbzpjMCxmb3J3YXJkUmVmOlcwLGZsdXNoU3luYzpwNyx1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczptNyxTdHJpY3RNb2RlOloxLFN1c3BlbnNlOno1LFN1c3BlbnNlTGlzdDpQMixsYXp5Olc3LF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOng3fTt2YXIgRDI9e3BvcnRyYWl0OiJsYW5kc2NhcGVfbGVmdCIsbGFuZHNjYXBlX2xlZnQ6InBvcnRyYWl0X3Vwc2lkZV9kb3duIixwb3J0cmFpdF91cHNpZGVfZG93bjoibGFuZHNjYXBlX3JpZ2h0IixsYW5kc2NhcGVfcmlnaHQ6InBvcnRyYWl0In0sSDM9e3BvcnRyYWl0OiJsYW5kc2NhcGVfcmlnaHQiLGxhbmRzY2FwZV9yaWdodDoicG9ydHJhaXRfdXBzaWRlX2Rvd24iLHBvcnRyYWl0X3Vwc2lkZV9kb3duOiJsYW5kc2NhcGVfbGVmdCIsbGFuZHNjYXBlX2xlZnQ6InBvcnRyYWl0In07dmFyIFoyPTM7ZnVuY3Rpb24gQzMoJCl7cmV0dXJuICQ+PTAuOTM/Mzp2b2lkIDB9ZnVuY3Rpb24gRjMoJCl7cmV0dXJuICQ9PT0ibGFuZHNjYXBlX2xlZnQifHwkPT09ImxhbmRzY2FwZV9yaWdodCJ9ZnVuY3Rpb24gZjAoJCl7cmV0dXJuISEkJiYoRjMoJC5vcmllbnRhdGlvbil8fCQud2lkdGg+JC5oZWlnaHQpfWZ1bmN0aW9uIFgyKCQpe2lmKCEkfHwkLndpZHRoPD0wfHwkLmhlaWdodDw9MClyZXR1cm4gbnVsbDtsZXQgSj1GMygkLm9yaWVudGF0aW9uKXx8JC53aWR0aD4kLmhlaWdodCxRPUo/TWF0aC5tYXgoJC53aWR0aCwkLmhlaWdodCk6TWF0aC5taW4oJC53aWR0aCwkLmhlaWdodCksWj1KP01hdGgubWluKCQud2lkdGgsJC5oZWlnaHQpOk1hdGgubWF4KCQud2lkdGgsJC5oZWlnaHQpO2lmKFE9PT0kLndpZHRoJiZaPT09JC5oZWlnaHQpcmV0dXJuICQ7cmV0dXJuey4uLiQsd2lkdGg6USxoZWlnaHQ6Wn19ZnVuY3Rpb24gSzIoJCl7bGV0IEo9WDIoJCksUT1DOSgkPy5vcmllbnRhdGlvbiksWj1NYXRoLmFicyhRKT09PTkwLEs9ISEkJiYkLndpZHRoPiQuaGVpZ2h0LFk9UT09PTE4MHx8WiYmIUs7cmV0dXJue2Rpc3BsYXlDb25maWc6Sixyb3RhdGlvbkRlZ3JlZXM6WT9ROjAsbmVlZHNDc3NSb3RhdGlvbjpZLGlucHV0T3JpZW50YXRpb246WT8kPy5vcmllbnRhdGlvbjp2b2lkIDB9fWZ1bmN0aW9uIEM5KCQpe3N3aXRjaCgkKXtjYXNlImxhbmRzY2FwZV9sZWZ0IjpyZXR1cm4gOTA7Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnJldHVybi05MDtjYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpyZXR1cm4gMTgwO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIFkyKCQsSixRKXtzd2l0Y2goJCl7Y2FzZSJsYW5kc2NhcGVfbGVmdCI6cmV0dXJue3g6USx5OjEtSn07Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnJldHVybnt4OjEtUSx5Okp9O2Nhc2UicG9ydHJhaXRfdXBzaWRlX2Rvd24iOnJldHVybnt4OjEtSix5OjEtUX07ZGVmYXVsdDpyZXR1cm57eDpKLHk6UX19fWZ1bmN0aW9uIEY5KCQsSixRKXtzd2l0Y2goJCl7Y2FzZSJsYW5kc2NhcGVfbGVmdCI6cmV0dXJue2R4OlEsZHk6LUp9O2Nhc2UibGFuZHNjYXBlX3JpZ2h0IjpyZXR1cm57ZHg6LVEsZHk6Sn07Y2FzZSJwb3J0cmFpdF91cHNpZGVfZG93biI6cmV0dXJue2R4Oi1KLGR5Oi1RfTtkZWZhdWx0OnJldHVybntkeDpKLGR5OlF9fX1mdW5jdGlvbiBrMygkLEope3N3aXRjaCgkKXtjYXNlImxhbmRzY2FwZV9sZWZ0Ijpzd2l0Y2goSil7Y2FzZSAxOnJldHVybiAzO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDI6cmV0dXJuIDE7Y2FzZSAzOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIEp9Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnN3aXRjaChKKXtjYXNlIDE6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiAzO2Nhc2UgMjpyZXR1cm4gNDtjYXNlIDM6cmV0dXJuIDE7ZGVmYXVsdDpyZXR1cm4gSn1jYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpzd2l0Y2goSil7Y2FzZSAxOnJldHVybiA0O2Nhc2UgNDpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDM7Y2FzZSAzOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIEp9ZGVmYXVsdDpyZXR1cm4gSn19dmFyIGs5PTE2O2Z1bmN0aW9uIHcyKCQsSixRKXtpZighTnVtYmVyLmlzRmluaXRlKCQpKXJldHVybiBudWxsO2xldCBaPU51bWJlci5pc0Zpbml0ZShRKSYmUT4wP1E6MSxLPUo9PT0xPyQqMTY6Sj09PTI/JCpaOiQsWT1NYXRoLm1heCgtMjAwLE1hdGgubWluKDIwMCxLKSk7cmV0dXJuIE1hdGguYWJzKFkpPDAuMDE/bnVsbDpZfWZ1bmN0aW9uIE0zKCQsSixRKXtpZighTnVtYmVyLmlzRmluaXRlKCQpKXJldHVybiAwO2xldCBaPU51bWJlci5pc0Zpbml0ZShRKSYmUT4wP1E6MTtpZihKPT09MSlyZXR1cm4gJCprOTtpZihKPT09MilyZXR1cm4gJCpaO3JldHVybiAkfWZ1bmN0aW9uIE05KCQsSixRKXtpZighSnx8Si53aWR0aDw9MHx8Si5oZWlnaHQ8PTApcmV0dXJuIG51bGw7bGV0IFo9Si5vcmllbnRhdGlvbj09PXZvaWQgMCYmJD8ub3JpZW50YXRpb24/ey4uLkosb3JpZW50YXRpb246JC5vcmllbnRhdGlvbn06SjtpZigkJiYkLndpZHRoPT09Wi53aWR0aCYmJC5oZWlnaHQ9PT1aLmhlaWdodCYmJC5vcmllbnRhdGlvbj09PVoub3JpZW50YXRpb24pcmV0dXJuIG51bGw7cmV0dXJue2NvbmZpZzpaLG5vdGlmeVBhcmVudDpRIT09ImV4dGVybmFsIn19ZnVuY3Rpb24gTzkoe3N0cmVhbU1vZGU6JCxhdmNjU3VwcG9ydGVkOkosaGFzRXh0ZXJuYWxJbnB1dDpRLGhhc0V4dGVybmFsRnJhbWVzOlp9KXtsZXQgSz0kPT09ImF2Y2MiJiYhSj8ibWpwZWciOiQsWT1LPT09IndlYnJ0YyIscT1LPT09ImF2Y2MiLEc9Sz09PSJtanBlZyImJlo7cmV0dXJue2VmZmVjdGl2ZVN0cmVhbU1vZGU6Syx1c2VXZWJSdGM6WSx1c2VBdmNjOnEsZXh0ZXJuYWxJbnB1dDpRLGV4dGVybmFsTWpwZWc6RyxvcGVuRGlyZWN0Q29udHJvbFNvY2tldDohUSxvcGVuRGlyZWN0TWpwZWc6Sz09PSJtanBlZyImJiFHfX12YXIgbDc9e1sxXToiZGVzY3JpcHRpb24iLFsyXToia2V5ZnJhbWUiLFszXToiZGVsdGEiLFs0XToic2VlZCJ9O2NsYXNzIEg1e2J1ZmZlcj1uZXcgVWludDhBcnJheSg2NTUzNik7bGVuPTA7c3RhcnQ9MDthcHBlbmQoJCl7aWYodGhpcy5sZW4rJC5sZW5ndGg+dGhpcy5idWZmZXIubGVuZ3RoKXtpZih0aGlzLnN0YXJ0PjApdGhpcy5idWZmZXIuY29weVdpdGhpbigwLHRoaXMuc3RhcnQsdGhpcy5sZW4pLHRoaXMubGVuLT10aGlzLnN0YXJ0LHRoaXMuc3RhcnQ9MDtpZih0aGlzLmxlbiskLmxlbmd0aD50aGlzLmJ1ZmZlci5sZW5ndGgpe2xldCBKPXRoaXMuYnVmZmVyLmxlbmd0aDt3aGlsZShKPHRoaXMubGVuKyQubGVuZ3RoKUoqPTI7bGV0IFE9bmV3IFVpbnQ4QXJyYXkoSik7US5zZXQodGhpcy5idWZmZXIuc3ViYXJyYXkoMCx0aGlzLmxlbikpLHRoaXMuYnVmZmVyPVF9fXRoaXMuYnVmZmVyLnNldCgkLHRoaXMubGVuKSx0aGlzLmxlbis9JC5sZW5ndGh9cHVzaCgkKXtpZigkLmxlbmd0aD4wKXRoaXMuYXBwZW5kKCQpO2xldCBKPVtdLFE9dGhpcy5idWZmZXI7d2hpbGUodGhpcy5sZW4tdGhpcy5zdGFydD49NCl7bGV0IFo9dGhpcy5zdGFydCxLPShRW1pdPDwyNHxRW1orMV08PDE2fFFbWisyXTw8OHxRW1orM10pPj4+MDtpZih0aGlzLmxlbi1aLTQ8SylicmVhaztpZihLPDEpe3RoaXMuc3RhcnQrPTQ7Y29udGludWV9bGV0IFk9UVtaKzRdLHE9bDdbWV07aWYocSlKLnB1c2goe3R5cGU6cSxwYXlsb2FkOlEuc2xpY2UoWis1LForNCtLKX0pO3RoaXMuc3RhcnQrPTQrS31pZih0aGlzLnN0YXJ0PjApe2lmKHRoaXMuc3RhcnQ8dGhpcy5sZW4pdGhpcy5idWZmZXIuY29weVdpdGhpbigwLHRoaXMuc3RhcnQsdGhpcy5sZW4pO3RoaXMubGVuLT10aGlzLnN0YXJ0LHRoaXMuc3RhcnQ9MH1yZXR1cm4gSn1yZXNldCgpe3RoaXMubGVuPTAsdGhpcy5zdGFydD0wfX1mdW5jdGlvbiBPMygkKXtpZigkLmxlbmd0aDw0KXJldHVybiJhdmMxLjQyRTAxRSI7bGV0IEo9KFEpPT5RLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIik7cmV0dXJuImF2YzEuIitKKCRbMV0pK0ooJFsyXSkrSigkWzNdKX1mdW5jdGlvbiBvMCgpe3JldHVybiB0eXBlb2YgZ2xvYmFsVGhpczwidSImJnR5cGVvZiBnbG9iYWxUaGlzLlZpZGVvRGVjb2RlcjwidSJ9dmFyIGQ3PTEwMDAsYzc9MTY2Njc7ZnVuY3Rpb24gQTMoe3VybDokLGVuYWJsZWQ6SixjYW52YXNSZWY6USxvbkZpcnN0RnJhbWU6WixvbkZyYW1lOkssb25EZWNvZGVkRnJhbWU6WSxvbkVycm9yOnEsb25EZWNvZGVyRXJyb3I6R30pe2xldCBOPVQoe29uRmlyc3RGcmFtZTpaLG9uRnJhbWU6SyxvbkRlY29kZWRGcmFtZTpZLG9uRXJyb3I6cSxvbkRlY29kZXJFcnJvcjpHfSk7Ti5jdXJyZW50PXtvbkZpcnN0RnJhbWU6WixvbkZyYW1lOkssb25EZWNvZGVkRnJhbWU6WSxvbkVycm9yOnEsb25EZWNvZGVyRXJyb3I6R30sYigoKT0+e2lmKCFKfHwhJHx8IW8wKCkpcmV0dXJuO2xldCBCPW5ldyBBYm9ydENvbnRyb2xsZXIsTD1uZXcgSDUsVj0hMSxVPSExLHo9ITEsaz0wLEg9bnVsbCxDPW51bGwsRj0oKT0+IVYmJiFCLnNpZ25hbC5hYm9ydGVkLE89KG8pPT57aWYoTi5jdXJyZW50Lm9uRGVjb2RlckVycm9yKU4uY3VycmVudC5vbkRlY29kZXJFcnJvcigpO2Vsc2UgTi5jdXJyZW50Lm9uRXJyb3I/LihvKX0sST0obyxyLFExLE4xKT0+e2lmKCFGKCkpcmV0dXJuO2xldCBkPVEuY3VycmVudDtpZighZClyZXR1cm47aWYoZC53aWR0aCE9PXJ8fGQuaGVpZ2h0IT09UTEpZC53aWR0aD1yLGQuaGVpZ2h0PVExO2xldCB4PWQuZ2V0Q29udGV4dCgiMmQiKTtpZigheClyZXR1cm47aWYoeC5kcmF3SW1hZ2UobywwLDAscixRMSksTi5jdXJyZW50Lm9uRnJhbWU/LigpLE4xJiYheil6PSEwLE4uY3VycmVudC5vbkRlY29kZWRGcmFtZT8uKCk7aWYoIVUpVT0hMCxOLmN1cnJlbnQub25GaXJzdEZyYW1lPy4oKX0sdz0oKT0+bmV3IFZpZGVvRGVjb2Rlcih7b3V0cHV0OihvKT0+e3RyeXtpZihGKCkpSShvLG8uZGlzcGxheVdpZHRoLG8uZGlzcGxheUhlaWdodCwhMCl9ZmluYWxseXtvLmNsb3NlKCl9fSxlcnJvcjoobyk9Pk8oYGRlY29kZXI6ICR7by5tZXNzYWdlfWApfSksUz1hc3luYyhvKT0+e2xldCByPWF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFtvXSx7dHlwZToiaW1hZ2UvanBlZyJ9KSk7dHJ5e2lmKEYoKSlJKHIsci53aWR0aCxyLmhlaWdodCwhMSl9ZmluYWxseXtyLmNsb3NlKCl9fSxqPShvKT0+e2lmKCFDfHxDLnN0YXRlPT09ImNsb3NlZCIpQz13KCk7dHJ5e0MuY29uZmlndXJlKHtjb2RlYzpPMyhvKSxkZXNjcmlwdGlvbjpvLG9wdGltaXplRm9yOiJsYXRlbmN5IixoYXJkd2FyZUFjY2VsZXJhdGlvbjoicHJlZmVyLWhhcmR3YXJlIn0pfWNhdGNoKHIpe08oYGNvbmZpZzogJHtyLm1lc3NhZ2V9YCl9fSwkMT0obyxyKT0+e2lmKEM/LnN0YXRlIT09ImNvbmZpZ3VyZWQiKXJldHVybjt0cnl7Qy5kZWNvZGUobmV3IEVuY29kZWRWaWRlb0NodW5rKHt0eXBlOm89PT0ia2V5ZnJhbWUiPyJrZXkiOiJkZWx0YSIsdGltZXN0YW1wOmssZGF0YTpyfSkpLGsrPWM3fWNhdGNoe319LG09KG8scik9Pntzd2l0Y2gobyl7Y2FzZSJzZWVkIjpTKHIpLmNhdGNoKCgpPT57fSk7cmV0dXJuO2Nhc2UiZGVzY3JpcHRpb24iOmoocik7cmV0dXJuO2Nhc2Uia2V5ZnJhbWUiOmNhc2UiZGVsdGEiOiQxKG8scik7cmV0dXJufX0sYz0oKT0+e2lmKCFGKCl8fEgpcmV0dXJuO0g9c2V0VGltZW91dCgoKT0+e0g9bnVsbCxuKCl9LGQ3KX0sbj1hc3luYygpPT57TC5yZXNldCgpO3RyeXtsZXQgcj0oYXdhaXQgZmV0Y2goYCR7JH0vc3RyZWFtLmF2Y2NgLHtzaWduYWw6Qi5zaWduYWx9KSkuYm9keT8uZ2V0UmVhZGVyKCk7aWYoIXIpcmV0dXJuO2Zvcig7Oyl7bGV0e2RvbmU6UTEsdmFsdWU6TjF9PWF3YWl0IHIucmVhZCgpO2lmKFExKWJyZWFrO2lmKCFOMSljb250aW51ZTtmb3IobGV0IGQgb2YgTC5wdXNoKE4xKSltKGQudHlwZSxkLnBheWxvYWQpfX1jYXRjaHt9ZmluYWxseXtpZihGKCkpYygpfX07cmV0dXJuIG4oKSwoKT0+e2lmKFY9ITAsSCljbGVhclRpbWVvdXQoSCk7aWYoQi5hYm9ydCgpLEwucmVzZXQoKSxDJiZDLnN0YXRlIT09ImNsb3NlZCIpdHJ5e0MuY2xvc2UoKX1jYXRjaHt9Qz1udWxsfX0sWyQsSixRXSl9ZnVuY3Rpb24gQTkoJCxKKXtsZXQgUT0wLFo9MCxLPSgpPT57bGV0e3ZpZGVvV2lkdGg6WSx2aWRlb0hlaWdodDpxfT0kO2lmKFk8PTB8fHE8PTB8fFk9PT1RJiZxPT09WilyZXR1cm47UT1ZLFo9cSxKKHt3aWR0aDpZLGhlaWdodDpxfSl9O3JldHVybiAkLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIixLKSwkLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsSyksSygpLHtjaGVjazpLLGRpc2Nvbm5lY3QoKXskLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIixLKSwkLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsSyl9fX12YXIgbzc9MDtmdW5jdGlvbiBYKCQsSixRLFosSyxZKXtKfHwoSj17fSk7dmFyIHEsRyxOPUo7aWYoInJlZiJpbiBOKWZvcihHIGluIE49e30sSilHPT0icmVmIj9xPUpbR106TltHXT1KW0ddO3ZhciBCPXt0eXBlOiQscHJvcHM6TixrZXk6USxyZWY6cSxfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fYzpudWxsLGNvbnN0cnVjdG9yOnZvaWQgMCxfX3Y6LS1vNyxfX2k6LTEsX191OjAsX19zb3VyY2U6SyxfX3NlbGY6WX07aWYodHlwZW9mICQ9PSJmdW5jdGlvbiImJihxPSQuZGVmYXVsdFByb3BzKSlmb3IoRyBpbiBxKU5bR109PT12b2lkIDAmJihOW0ddPXFbR10pO3JldHVybiBzLnZub2RlJiZzLnZub2RlKEIpLEJ9dmFyIFc5PWB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnJTNFJTNDY2lyY2xlIGN4PScxMicgY3k9JzEyJyByPSc5JyBmaWxsPSdyZ2JhKDI1NSwyNTUsMjU1LDAuNDUpJyBzdHJva2U9J3JnYmEoMCwwLDAsMC41NSknIHN0cm9rZS13aWR0aD0nMS4yNScgZmlsdGVyPSdkcm9wLXNoYWRvdygwIDFweCAycHggcmdiYSgwLDAsMCwwLjQ1KSknLyUzRSUzQy9zdmclM0UiKSAxMiAxMiwgcG9pbnRlcmAscjc9MS4wMDQsaTc9MyxhNz00LG43PTUsczc9MTAsdDc9MTE7ZnVuY3Rpb24gQzUoe3VybDokLHdzVXJsOkosc3R5bGU6USxpbWFnZVN0eWxlOlosY2xhc3NOYW1lOkssb25Ib21lUHJlc3M6WSxvblN0cmVhbVRvdWNoOnEsb25TdHJlYW1NdWx0aVRvdWNoOkcsb25TdHJlYW1CdXR0b246TixvblN0cmVhbURpZ2l0YWxDcm93bjpCLG9uU3RyZWFtU2Nyb2xsOkwsZW5hYmxlRGlnaXRhbENyb3duOlYsc3Vic2NyaWJlRnJhbWU6VSxzdHJlYW1GcmFtZTp6LHN0cmVhbUNvbmZpZzprLG9uU2NyZWVuQ29uZmlnQ2hhbmdlOkgsaGlkZUNvbnRyb2xzOkMsb25TdHJlYW1pbmdDaGFuZ2U6Rixjb25uZWN0aW9uUXVhbGl0eTpPLHN0cmVhbU1vZGU6ST0iYXZjYyIsd2ViUnRjU3RyZWFtOncsb25XZWJSdGNGcmFtZTpTLHN0cmVhbUVycm9yOmosb25BdmNjRXJyb3I6JDEsb25BdmNjRGVjb2RlZEZyYW1lOm19KXtsZXR7dXNlV2ViUnRjOmMsdXNlQXZjYzpuLGV4dGVybmFsSW5wdXQ6byxleHRlcm5hbE1qcGVnOnIsb3BlbkRpcmVjdENvbnRyb2xTb2NrZXQ6UTEsb3BlbkRpcmVjdE1qcGVnOk4xfT1POSh7c3RyZWFtTW9kZTpJLGF2Y2NTdXBwb3J0ZWQ6bzAoKSxoYXNFeHRlcm5hbElucHV0OiEhcSxoYXNFeHRlcm5hbEZyYW1lczohIVV9KSxkPVQobnVsbCkseD1UKG51bGwpLGE9VChudWxsKSxLMT1UKG51bGwpLEwxPVQobnVsbCksSjE9VChudWxsKSxZMT1UKG51bGwpLFtDMSx5XT1BKCExKSxbZyxfXT1BKG51bGwpLFtwLHVdPUEobnVsbCksdj1UKG51bGwpLEcxPVQoITEpLHoxPVQoSCk7ejEuY3VycmVudD1IO2xldCBBMT1UKG51bGwpLFtXMSxpMV09QShudWxsKTtiKCgpPT57bGV0IFc9QTEuY3VycmVudDtpZighV3x8dHlwZW9mIFJlc2l6ZU9ic2VydmVyPiJ1IilyZXR1cm47bGV0IE09bmV3IFJlc2l6ZU9ic2VydmVyKChFKT0+e2xldCBSPUVbMF0/LmNvbnRlbnRSZWN0O2lmKFIpaTEoe3dpZHRoOlIud2lkdGgsaGVpZ2h0OlIuaGVpZ2h0fSl9KTtyZXR1cm4gTS5vYnNlcnZlKFcpLCgpPT5NLmRpc2Nvbm5lY3QoKX0sW10pO2xldFtPMSxqMV09QSgwKSxfMT1UKDApLFtsMSxVMV09QSghMSksSTE9RCgoVyxNPSJyZXBvcnRlZCIpPT57aWYoTT09PSJtZWRpYSImJkcxLmN1cnJlbnQpcmV0dXJuO2lmKE0hPT0ibWVkaWEiJiZXJiZXLndpZHRoPjAmJlcuaGVpZ2h0PjApRzEuY3VycmVudD0hMDtsZXQgRT1NOSh2LmN1cnJlbnQsVyxNKTtpZighRSlyZXR1cm47aWYodi5jdXJyZW50PUUuY29uZmlnLHUoRS5jb25maWcpLEUubm90aWZ5UGFyZW50KXoxLmN1cnJlbnQ/LihFLmNvbmZpZyl9LFtdKTtiKCgpPT57aWYoIWMpcmV0dXJuO2lmKGopeSghMSksXyhqKTtlbHNlIF8obnVsbCl9LFtqLGNdKTtsZXQgZDE9VChudWxsKTtiKCgpPT57aWYoTz09PSJwb29yIil7aWYoVTEoITApLGQxLmN1cnJlbnQpY2xlYXJUaW1lb3V0KGQxLmN1cnJlbnQpO2QxLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e1UxKCExKSxkMS5jdXJyZW50PW51bGx9LDMwMDApfWVsc2UgaWYoVTEoITEpLGQxLmN1cnJlbnQpY2xlYXJUaW1lb3V0KGQxLmN1cnJlbnQpLGQxLmN1cnJlbnQ9bnVsbDtyZXR1cm4oKT0+e2lmKGQxLmN1cnJlbnQpY2xlYXJUaW1lb3V0KGQxLmN1cnJlbnQpfX0sW09dKTtsZXQgdDE9YCR7JH0vc3RyZWFtLm1qcGVnYDtiKCgpPT57aWYoIWMpcmV0dXJuO2xldCBXPWEuY3VycmVudDtpZighVylyZXR1cm47bGV0IE09ITEsRT0hMSxSPTAsdD1udWxsLHExPSgpPT57aWYoRXx8TSlyZXR1cm47dD8uY2hlY2soKSxNPSEwLFM/LigpLHkoITApLF8obnVsbCl9LEgxPSgpPT57aWYoRSlyZXR1cm47dD8uY2hlY2soKSxuMS5jdXJyZW50PURhdGUubm93KCksXzEuY3VycmVudCsrLHExKCkseSghMCksUj1XLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soSDEpfSxQMT0oKT0+e2lmKEUpcmV0dXJuO3Q/LmNoZWNrKCksbjEuY3VycmVudD1EYXRlLm5vdygpLHExKCkseSghMCl9O2lmKFcuc3JjT2JqZWN0PXc/P251bGwsdyl7aWYodD1BOShXLChSMCk9PntJMShSMCwibWVkaWEiKX0pLHkoITEpLFcuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkZGF0YSIscTEse29uY2U6ITB9KSx0eXBlb2YgVy5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrPT09ImZ1bmN0aW9uIilSPVcucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhIMSk7ZWxzZSBXLmFkZEV2ZW50TGlzdGVuZXIoInRpbWV1cGRhdGUiLFAxKTtXLnBsYXkoKS5jYXRjaCgoKT0+e30pfWVsc2UgeSghMSk7cmV0dXJuKCk9PntpZihFPSEwLFcucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZGVkZGF0YSIscTEpLFcucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGltZXVwZGF0ZSIsUDEpLHQ/LmRpc2Nvbm5lY3QoKSxSJiZ0eXBlb2YgVy5jYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2s9PT0iZnVuY3Rpb24iKVcuY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrKFIpO1cuc3JjT2JqZWN0PW51bGx9fSxbYyx3LFMsSTFdKSxiKCgpPT57RzEuY3VycmVudD0hMSx2LmN1cnJlbnQ9bnVsbCx1KG51bGwpfSxbJCxKXSk7bGV0IGgxPVQoRik7aDEuY3VycmVudD1GLGIoKCk9PntoMS5jdXJyZW50Py4oQzEpfSxbQzFdKSxiKCgpPT57aWYoaylJMShrLCJleHRlcm5hbCIpfSxbayxJMSwkXSk7bGV0IGExPVQoITEpO2ExLmN1cnJlbnQ9QzE7bGV0ICQwPVQobnVsbCksVjA9VChudWxsKTtiKCgpPT57aWYoIXJ8fCFVKXJldHVybjtsZXQgTT1zZXRUaW1lb3V0KCgpPT57aWYoIWExLmN1cnJlbnQpXygiU3RyZWFtIGlzIG5vdCBwcm9kdWNpbmcgZnJhbWVzLiBUaGUgc2ltdWxhdG9yIG1heSBoYXZlIHN0b3BwZWQg4oCUIHRyeSByZWNvbm5lY3RpbmcuIil9LDYwMDApLEU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uIHQoKXtsZXQgcTE9JDAuY3VycmVudDtpZihxMSl7JDAuY3VycmVudD1udWxsO2xldCBIMT1LMS5jdXJyZW50O2lmKEgxKXtpZihWMC5jdXJyZW50KVVSTC5yZXZva2VPYmplY3RVUkwoVjAuY3VycmVudCk7VjAuY3VycmVudD1xMSxIMS5zcmM9cTEsXzEuY3VycmVudCsrfWVsc2UgVVJMLnJldm9rZU9iamVjdFVSTChxMSl9RT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCl9KSxSPVUoKHQpPT57aWYobjEuY3VycmVudD1EYXRlLm5vdygpLCQwLmN1cnJlbnQpVVJMLnJldm9rZU9iamVjdFVSTCgkMC5jdXJyZW50KTtpZigkMC5jdXJyZW50PXQsIWExLmN1cnJlbnQpY2xlYXJUaW1lb3V0KE0pLHkoITApLF8obnVsbCl9KTtyZXR1cm4oKT0+e2lmKGNsZWFyVGltZW91dChNKSxjYW5jZWxBbmltYXRpb25GcmFtZShFKSxSPy4oKSwkMC5jdXJyZW50KVVSTC5yZXZva2VPYmplY3RVUkwoJDAuY3VycmVudCksJDAuY3VycmVudD1udWxsO2lmKFYwLmN1cnJlbnQpVVJMLnJldm9rZU9iamVjdFVSTChWMC5jdXJyZW50KSxWMC5jdXJyZW50PW51bGx9fSxbcixVXSk7bGV0IHMxPUQoKCk9PntuMS5jdXJyZW50PURhdGUubm93KCkseSghMCksXyhudWxsKX0sW10pLHYwPUQoKCk9PntpZihfMS5jdXJyZW50KyssbjEuY3VycmVudD1EYXRlLm5vdygpLCFhMS5jdXJyZW50KXkoITApLF8obnVsbCl9LFtdKTtBMyh7dXJsOiQsZW5hYmxlZDpuLGNhbnZhc1JlZjp4LG9uRmlyc3RGcmFtZTpzMSxvbkZyYW1lOnYwLG9uRGVjb2RlZEZyYW1lOm0sb25FcnJvcjpfLG9uRGVjb2RlckVycm9yOiQxfSk7bGV0IG0xPUQoKFcpPT57bGV0IE09SzIodi5jdXJyZW50KS5pbnB1dE9yaWVudGF0aW9uLEU9WTIoTSxXLngsVy55KSxSPVcuZWRnZT09PXZvaWQgMD92b2lkIDA6azMoTSxXLmVkZ2UpLHQ9Uj09PXZvaWQgMD97dHlwZTpXLnR5cGUsLi4uRX06e3R5cGU6Vy50eXBlLC4uLkUsZWRnZTpSfTtpZihvKXtxPy4odCk7cmV0dXJufWxldCBxMT1ZMS5jdXJyZW50O2lmKCFxMXx8cTEucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5PUEVOKXJldHVybjtsZXQgSDE9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHQpKSxQMT1uZXcgVWludDhBcnJheSgxK0gxLmxlbmd0aCk7UDFbMF09aTcsUDEuc2V0KEgxLDEpLHExLnNlbmQoUDEpfSxbbyxxXSkscTA9RCgoVyk9PntpZihvKXtOPy4oVyk7cmV0dXJufWxldCBNPVkxLmN1cnJlbnQ7aWYoIU18fE0ucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5PUEVOKXJldHVybjtsZXQgRT1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoe2J1dHRvbjpXfSkpLFI9bmV3IFVpbnQ4QXJyYXkoMStFLmxlbmd0aCk7UlswXT1hNyxSLnNldChFLDEpLE0uc2VuZChSKX0sW28sTl0pLEowPUQoKFcpPT57aWYoIU51bWJlci5pc0Zpbml0ZShXKXx8Vz09PTApcmV0dXJuO2lmKG8pe0I/LihXKTtyZXR1cm59bGV0IE09WTEuY3VycmVudDtpZighTXx8TS5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pcmV0dXJuO2xldCBFPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeSh7ZGVsdGE6V30pKSxSPW5ldyBVaW50OEFycmF5KDErRS5sZW5ndGgpO1JbMF09czcsUi5zZXQoRSwxKSxNLnNlbmQoUil9LFtvLEJdKSxfMD1EKChXLE0sRSxSKT0+e2lmKCFOdW1iZXIuaXNGaW5pdGUoVyl8fCFOdW1iZXIuaXNGaW5pdGUoTSl8fFc9PT0wJiZNPT09MClyZXR1cm47bGV0IHQ9SzIodi5jdXJyZW50KS5pbnB1dE9yaWVudGF0aW9uLHExPUY5KHQsVyxNKSxIMT1ZMih0LEUsUiksUDE9e2R4OnExLmR4LGR5OnExLmR5LHg6SDEueCx5OkgxLnl9O2lmKG8pe0w/LihQMSk7cmV0dXJufWxldCBBMD1ZMS5jdXJyZW50O2lmKCFBMHx8QTAucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5PUEVOKXJldHVybjtsZXQgUjA9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KFAxKSksbDA9bmV3IFVpbnQ4QXJyYXkoMStSMC5sZW5ndGgpO2wwWzBdPXQ3LGwwLnNldChSMCwxKSxBMC5zZW5kKGwwKX0sW28sTF0pLGMxPUQoKFcpPT57bGV0IE09SzIodi5jdXJyZW50KS5pbnB1dE9yaWVudGF0aW9uLEU9WTIoTSxXLngxLFcueTEpLFI9WTIoTSxXLngyLFcueTIpLHQ9e3R5cGU6Vy50eXBlLHgxOkUueCx5MTpFLnkseDI6Ui54LHkyOlIueX07aWYobyl7Rz8uKHQpO3JldHVybn1sZXQgcTE9WTEuY3VycmVudDtpZighcTF8fHExLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTilyZXR1cm47bGV0IEgxPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeSh0KSksUDE9bmV3IFVpbnQ4QXJyYXkoMStIMS5sZW5ndGgpO1AxWzBdPW43LFAxLnNldChIMSwxKSxxMS5zZW5kKFAxKX0sW28sR10pO2IoKCk9PntpZighUTEmJiFOMSYmIW4pcmV0dXJuO2xldCBXPW51bGw7aWYoUTEpe2xldCBxMT1KPz8kLnJlcGxhY2UoL15odHRwLywid3MiKSsiL3dzIjtXPW5ldyBXZWJTb2NrZXQocTEpLFcuYmluYXJ5VHlwZT0iYXJyYXlidWZmZXIiLFkxLmN1cnJlbnQ9VyxXLm9ubWVzc2FnZT0oSDEpPT57aWYoIShIMS5kYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybjtsZXQgUDE9bmV3IFVpbnQ4QXJyYXkoSDEuZGF0YSk7aWYoUDEubGVuZ3RoPDF8fFAxWzBdIT09MTMwKXJldHVybjt0cnl7STEoSlNPTi5wYXJzZShuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoUDEuc3ViYXJyYXkoMSkpKSl9Y2F0Y2h7fX0sVy5vbm9wZW49KCk9Pl8obnVsbCksVy5vbmNsb3NlPSgpPT55KCExKSxXLm9uZXJyb3I9KCk9PntfKCJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQiKSx5KCExKX19bGV0IE09bnx8TjE/c2V0SW50ZXJ2YWwoKCk9PntqMShfMS5jdXJyZW50KSxfMS5jdXJyZW50PTB9LDEwMDApOm51bGwsRT1OMT9uZXcgQWJvcnRDb250cm9sbGVyOm51bGwsUj0hMSx0PU4xP3NldFRpbWVvdXQoKCk9PntpZighUilfKCJTdHJlYW0gaXMgbm90IHByb2R1Y2luZyBmcmFtZXMuIFRoZSBzaW11bGF0b3IgbWF5IGhhdmUgc3RvcHBlZCDigJQgdHJ5IHJlY29ubmVjdGluZy4iKX0sNjAwMCk6bnVsbDtpZihOMSYmRSkoYXN5bmMoKT0+e3RyeXtsZXQgSDE9KGF3YWl0IGZldGNoKHQxLHtzaWduYWw6RS5zaWduYWx9KSkuYm9keT8uZ2V0UmVhZGVyKCk7aWYoIUgxKXJldHVybjtsZXQgUDE9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKCItLWZyYW1lIik7d2hpbGUoITApe2xldHtkb25lOkEwLHZhbHVlOlIwfT1hd2FpdCBIMS5yZWFkKCk7aWYoQTApYnJlYWs7aWYoUjApZm9yKGxldCBsMD0wO2wwPD1SMC5sZW5ndGgtUDEubGVuZ3RoO2wwKyspe2xldCBOOD0hMDtmb3IobGV0IFE1PTA7UTU8UDEubGVuZ3RoO1E1KyspaWYoUjBbbDArUTVdIT09UDFbUTVdKXtOOD0hMTticmVha31pZihOOCl7aWYoXzEuY3VycmVudCsrLCFSKXtpZihSPSEwLHQpY2xlYXJUaW1lb3V0KHQpO3koITApLF8obnVsbCl9fX19fWNhdGNoe319KSgpO3JldHVybigpPT57aWYoRT8uYWJvcnQoKSxNKWNsZWFySW50ZXJ2YWwoTSk7aWYodCljbGVhclRpbWVvdXQodCk7aWYoVz8uY2xvc2UoKSxZMS5jdXJyZW50PT09VylZMS5jdXJyZW50PW51bGx9fSxbUTEsTjEsdDEsSTEsJCxuLEpdKSxiKCgpPT57aWYoIWMpcmV0dXJuO2xldCBXPXNldEludGVydmFsKCgpPT57ajEoXzEuY3VycmVudCksXzEuY3VycmVudD0wO2xldCBNPW4xLmN1cnJlbnQ7aWYoIWRvY3VtZW50LmhpZGRlbiYmTSYmRGF0ZS5ub3coKS1NPjMwMDApeSghMSl9LDEwMDApO3JldHVybigpPT5jbGVhckludGVydmFsKFcpfSxbY10pO2xldCBuMT1UKDApO2IoKCk9PntpZighcilyZXR1cm47bGV0IFc9MjAwMCxNPSgpPT57bGV0IHQ9bjEuY3VycmVudDtpZighdHx8IWExLmN1cnJlbnQpcmV0dXJuO2lmKERhdGUubm93KCktdD5XKXkoITEpfSxFPXNldEludGVydmFsKCgpPT57ajEoXzEuY3VycmVudCksXzEuY3VycmVudD0wLE0oKX0sMTAwMCksUj0oKT0+e2lmKCFkb2N1bWVudC5oaWRkZW4pTSgpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsUiksKCk9PntjbGVhckludGVydmFsKEUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLFIpfX0sW3JdKTtsZXQgUDA9RCgoKT0+e2lmKGMpcmV0dXJuIGEuY3VycmVudDtpZihuKXJldHVybiB4LmN1cnJlbnQ7cmV0dXJuIHI/SzEuY3VycmVudDpkLmN1cnJlbnR9LFtyLG4sY10pLHYxPUQoKCk9PntyZXR1cm4gTDEuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/P1AwKCk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPz9udWxsfSxbUDBdKSxDMD1EKChXLE0pPT57bGV0IEU9djEoKTtpZighRSlyZXR1cm47bGV0IFI9KE0uY2xpZW50WC1FLmxlZnQpL0Uud2lkdGgsdD0oTS5jbGllbnRZLUUudG9wKS9FLmhlaWdodDttMSh7dHlwZTpXLHg6Uix5OnR9KX0sW3YxLG0xXSksQjA9RCgoVyxNKT0+e2xldCBSPXYxKCk/LmhlaWdodHx8MSx0PXcyKFcsTSxSKTtpZih0PT09bnVsbClyZXR1cm4hMTtyZXR1cm4gSjAodCksITB9LFt2MSxKMF0pLEQxPVQoITEpLHkxPVQoITEpLFEwPVQoITEpLEYwPVQoe2R4OjAsZHk6MH0pLE4wPVQoITEpLFtrMCxYMV09QSghMSksUD1UKHt4OjAuNSx5OjAuNX0pLFtsLGldPUEobnVsbCk7YigoKT0+e2xldCBXPShFKT0+e2lmKEUua2V5PT09IkFsdCIpWDEoITApfSxNPShFKT0+e2lmKEUua2V5PT09IkFsdCIpe2lmKFgxKCExKSwheTEuY3VycmVudClpKG51bGwpfX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixXKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLE0pLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLFcpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsTSl9fSxbXSksYigoKT0+e2lmKGswJiYheTEuY3VycmVudCl7bGV0IFc9UC5jdXJyZW50O2koe3gxOlcueCx5MTpXLnkseDI6MS1XLngseTI6MS1XLnl9KX1lbHNlIGlmKCFrMCYmIXkxLmN1cnJlbnQpaShudWxsKX0sW2swXSk7bGV0IGsxPVQobnVsbCksVjE9VCghMSksQjE9VCgwKSxnMT1EKChXLE0pPT57VjEuY3VycmVudD0hMDtsZXQgRT1rMS5jdXJyZW50O2lmKEUpY2FuY2VsQW5pbWF0aW9uRnJhbWUoQjEuY3VycmVudCksQjEuY3VycmVudD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntFLnN0eWxlLmxlZnQ9YCR7VyoxMDB9JWAsRS5zdHlsZS50b3A9YCR7TSoxMDB9JWAsRS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9KX0sW10pLHAxPUQoKFcsTSk9PntpZighVjEuY3VycmVudClyZXR1cm47bGV0IEU9azEuY3VycmVudDtpZihFKWNhbmNlbEFuaW1hdGlvbkZyYW1lKEIxLmN1cnJlbnQpLEIxLmN1cnJlbnQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57RS5zdHlsZS5sZWZ0PWAke1cqMTAwfSVgLEUuc3R5bGUudG9wPWAke00qMTAwfSVgfSl9LFtdKSx4MT1EKCgpPT57VjEuY3VycmVudD0hMTtsZXQgVz1rMS5jdXJyZW50O2lmKFcpY2FuY2VsQW5pbWF0aW9uRnJhbWUoQjEuY3VycmVudCksVy5zdHlsZS5kaXNwbGF5PSJub25lIn0sW10pLE0wPUQoKFcpPT57aWYoVjEuY3VycmVudHx8eTEuY3VycmVudClyZXR1cm4hMTtsZXQgTT12MSgpO2lmKCFNKXJldHVybiExO2xldCBFPU0zKFcuZGVsdGFYLFcuZGVsdGFNb2RlLE0ud2lkdGgpLFI9TTMoVy5kZWx0YVksVy5kZWx0YU1vZGUsTS5oZWlnaHQpO2lmKEU9PT0wJiZSPT09MClyZXR1cm4hMTtsZXQgdD1NYXRoLm1pbihNYXRoLm1heCgoVy5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCwwKSwxKSxxMT1NYXRoLm1pbihNYXRoLm1heCgoVy5jbGllbnRZLU0udG9wKS9NLmhlaWdodCwwKSwxKTtyZXR1cm4gXzAoRS9NLndpZHRoLFIvTS5oZWlnaHQsdCxxMSksITB9LFt2MSxfMF0pO2IoKCk9PntsZXQgVz1KMS5jdXJyZW50O2lmKCFXKXJldHVybjtsZXQgTT0oRSk9PntpZighKFY/QjAoRS5kZWx0YVksRS5kZWx0YU1vZGUpOk0wKEUpKSlyZXR1cm47RS5wcmV2ZW50RGVmYXVsdCgpLEUuc3RvcFByb3BhZ2F0aW9uKCl9O3JldHVybiBXLmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIixNLHtwYXNzaXZlOiExfSksKCk9PlcucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2hlZWwiLE0pfSxbVixCMCxNMF0pO2xldCBaMD1UKDApLHcxPVQobnVsbCksTDA9RCgoKT0+e2xldCBXPURhdGUubm93KCksTT1XLVowLmN1cnJlbnQ7aWYoWjAuY3VycmVudD1XLE08MzAwKXtpZih3MS5jdXJyZW50KWNsZWFyVGltZW91dCh3MS5jdXJyZW50KSx3MS5jdXJyZW50PW51bGw7aWYoWSlZKCk7ZWxzZSBxMCgiYXBwX3N3aXRjaGVyIil9ZWxzZSB3MS5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntpZihZKVkoKTtlbHNlIHEwKCJob21lIik7dzEuY3VycmVudD1udWxsfSwzMDApfSxbcTAsWV0pLEQwPUsyKHApLFMwPUQwLmRpc3BsYXlDb25maWcsTzA9KCgpPT57aWYoIVMwfHwhVzEpcmV0dXJuIG51bGw7aWYoVzEud2lkdGg9PT0wfHxXMS5oZWlnaHQ9PT0wKXJldHVybiBudWxsO2xldCBXPU1hdGgubWluKFcxLndpZHRoL1MwLndpZHRoLFcxLmhlaWdodC9TMC5oZWlnaHQpO3JldHVybnt3aWR0aDpTMC53aWR0aCpXLGhlaWdodDpTMC5oZWlnaHQqV319KSgpLGsyPUQwLnJvdGF0aW9uRGVncmVlcywkNT1EMC5uZWVkc0Nzc1JvdGF0aW9uJiZNYXRoLmFicyhrMik9PT05MCxKNT1aLGg9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiI1MCUiLGxlZnQ6IjUwJSIsd2lkdGg6JDUmJk8wP2Ake08wLmhlaWdodH1weGA6IjEwMCUiLGhlaWdodDokNSYmTzA/YCR7TzAud2lkdGh9cHhgOiIxMDAlIix0cmFuc2Zvcm06YHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSR7azI9PT0wPyIiOmAgcm90YXRlKCR7azJ9ZGVnKWB9YCx0cmFuc2Zvcm1PcmlnaW46ImNlbnRlciBjZW50ZXIiLGN1cnNvcjpXOSxkaXNwbGF5OiJibG9jayIsdXNlclNlbGVjdDoibm9uZSIsV2Via2l0VXNlclNlbGVjdDoibm9uZSIsdG91Y2hBY3Rpb246Im5vbmUiLC4uLlosLi4uazI9PT0wP3t9Ontib3JkZXJSYWRpdXM6MCxjb3JuZXJTaGFwZTp2b2lkIDB9fSxlPXsuLi5oLHRyYW5zZm9ybTpgJHtoLnRyYW5zZm9ybT8/IiJ9IHNjYWxlKCR7cjd9KWB9O3JldHVybiBYKCJkaXYiLHtzdHlsZTp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixmbGV4OjEsLi4uQz97fTp7Ym9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSJ9LG92ZXJmbG93OiJoaWRkZW4iLG1pbldpZHRoOjAsbWluSGVpZ2h0OjAsLi4uUX0sY2xhc3NOYW1lOkssY2hpbGRyZW46W1goImRpdiIse3JlZjpBMSxzdHlsZTp7cG9zaXRpb246InJlbGF0aXZlIixmbGV4OjEsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIifSxjaGlsZHJlbjpYKCJkaXYiLHtyZWY6TDEsc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsd2lkdGg6TzA/YCR7TzAud2lkdGh9cHhgOiIxMDAlIixoZWlnaHQ6TzA/YCR7TzAuaGVpZ2h0fXB4YDoiMTAwJSIsb3ZlcmZsb3c6ImhpZGRlbiIsYm9yZGVyUmFkaXVzOko1Py5ib3JkZXJSYWRpdXMsY29ybmVyU2hhcGU6SjU/LmNvcm5lclNoYXBlfSxjaGlsZHJlbjpbYz9YKCJ2aWRlbyIse3JlZjphLG11dGVkOiEwLHBsYXlzSW5saW5lOiEwLGF1dG9QbGF5OiEwLHN0eWxlOmh9KTpuP1goImNhbnZhcyIse3JlZjp4LHN0eWxlOmV9KTpYKCJpbWciLHtyZWY6ZCxzcmM6cj92b2lkIDA6dDEsZHJhZ2dhYmxlOiExLG9uTG9hZDooVyk9PntsZXQgTT1XLmN1cnJlbnRUYXJnZXQ7aWYoTS5uYXR1cmFsV2lkdGg+MCYmTS5uYXR1cmFsSGVpZ2h0PjApSTEoe3dpZHRoOk0ubmF0dXJhbFdpZHRoLGhlaWdodDpNLm5hdHVyYWxIZWlnaHR9LCJtZWRpYSIpfSxzdHlsZTpyP3tkaXNwbGF5OiJub25lIn06aH0pLHImJlgoImltZyIse3JlZjpLMSxkcmFnZ2FibGU6ITEsb25Mb2FkOihXKT0+e2xldCBNPVcuY3VycmVudFRhcmdldDtpZihNLm5hdHVyYWxXaWR0aD4wJiZNLm5hdHVyYWxIZWlnaHQ+MClJMSh7d2lkdGg6TS5uYXR1cmFsV2lkdGgsaGVpZ2h0Ok0ubmF0dXJhbEhlaWdodH0sIm1lZGlhIil9LHN0eWxlOmh9KSxYKCJkaXYiLHtyZWY6SjEsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaW5zZXQ6MCxjdXJzb3I6VzksdG91Y2hBY3Rpb246Im5vbmUifSxvbk1vdXNlRG93bjooVyk9PntXLnByZXZlbnREZWZhdWx0KCk7bGV0IE09djEoKTtpZighTSlyZXR1cm47bGV0IEU9KFcuY2xpZW50WC1NLmxlZnQpL00ud2lkdGgsUj0oVy5jbGllbnRZLU0udG9wKS9NLmhlaWdodDtpZihXLmFsdEtleSl7eTEuY3VycmVudD0hMCxRMC5jdXJyZW50PVcuc2hpZnRLZXk7bGV0IHExPXt4MTpFLHkxOlIseDI6MS1FLHkyOjEtUn07RjAuY3VycmVudD17ZHg6MS1FLUUsZHk6MS1SLVJ9LGkocTEpLGMxKHt0eXBlOiJiZWdpbiIsLi4ucTF9KTtyZXR1cm59ZzEoRSxSKTtsZXQgdD1DMyhSKTtpZih0IT09dm9pZCAwKUQxLmN1cnJlbnQ9ITAsbTEoe3R5cGU6ImJlZ2luIix4OkUseTpSLGVkZ2U6dH0pO2Vsc2UgRDEuY3VycmVudD0hMSxDMCgiYmVnaW4iLFcpfSxvbk1vdXNlTW92ZTooVyk9PntsZXQgTT12MSgpO2lmKCFNKXJldHVybjtsZXQgRT0oVy5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCxSPShXLmNsaWVudFktTS50b3ApL00uaGVpZ2h0O2lmKFAuY3VycmVudD17eDpFLHk6Un0sVy5idXR0b25zPT09MCl7aWYoVy5hbHRLZXkpaSh7eDE6RSx5MTpSLHgyOjEtRSx5MjoxLVJ9KTtyZXR1cm59aWYoeTEuY3VycmVudCl7bGV0IHQ7aWYoUTAuY3VycmVudCl7bGV0IHExPUYwLmN1cnJlbnQ7dD17eDE6RSx5MTpSLHgyOkUrcTEuZHgseTI6UitxMS5keX19ZWxzZSB0PXt4MTpFLHkxOlIseDI6MS1FLHkyOjEtUn07aSh0KSxjMSh7dHlwZToibW92ZSIsLi4udH0pO3JldHVybn1pZihwMShFLFIpLEQxLmN1cnJlbnQpbTEoe3R5cGU6Im1vdmUiLHg6RSx5OlIsZWRnZTpaMn0pO2Vsc2UgQzAoIm1vdmUiLFcpfSxvbk1vdXNlVXA6KFcpPT57aWYoeTEuY3VycmVudCl7bGV0IE09djEoKTtpZihNKXtsZXQgRT0oVy5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCxSPShXLmNsaWVudFktTS50b3ApL00uaGVpZ2h0O2lmKFEwLmN1cnJlbnQpe2xldCB0PUYwLmN1cnJlbnQ7YzEoe3R5cGU6ImVuZCIseDE6RSx5MTpSLHgyOkUrdC5keCx5MjpSK3QuZHl9KX1lbHNlIGMxKHt0eXBlOiJlbmQiLHgxOkUseTE6Uix4MjoxLUUseTI6MS1SfSl9aWYoeTEuY3VycmVudD0hMSwhVy5hbHRLZXkpaShudWxsKTtyZXR1cm59aWYoeDEoKSxEMS5jdXJyZW50KXtsZXQgTT12MSgpO2lmKE0pe2xldCBFPShXLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLFI9KFcuY2xpZW50WS1NLnRvcCkvTS5oZWlnaHQ7bTEoe3R5cGU6ImVuZCIseDpFLHk6UixlZGdlOloyfSl9RDEuY3VycmVudD0hMTtyZXR1cm59QzAoImVuZCIsVyl9LG9uTW91c2VMZWF2ZTooVyk9PntpZih5MS5jdXJyZW50KXtpZihsKWMxKHt0eXBlOiJlbmQiLC4uLmx9KTt5MS5jdXJyZW50PSExLGkobnVsbCk7cmV0dXJufWlmKHgxKCksRDEuY3VycmVudCl7bGV0IE09djEoKTtpZihNKXtsZXQgRT0oVy5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCxSPShXLmNsaWVudFktTS50b3ApL00uaGVpZ2h0O20xKHt0eXBlOiJlbmQiLHg6RSx5OlIsZWRnZTpaMn0pfUQxLmN1cnJlbnQ9ITE7cmV0dXJufWlmKFcuYnV0dG9ucz4wKUMwKCJlbmQiLFcpO2kobnVsbCl9LG9uVG91Y2hTdGFydDooVyk9PntXLnByZXZlbnREZWZhdWx0KCk7bGV0IE09djEoKTtpZighTSlyZXR1cm47aWYoVy50b3VjaGVzLmxlbmd0aD49Mil7eDEoKTtsZXQgSDE9Vy50b3VjaGVzWzBdLFAxPVcudG91Y2hlc1sxXSxBMD17eDE6KEgxLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLHkxOihIMS5jbGllbnRZLU0udG9wKS9NLmhlaWdodCx4MjooUDEuY2xpZW50WC1NLmxlZnQpL00ud2lkdGgseTI6KFAxLmNsaWVudFktTS50b3ApL00uaGVpZ2h0fTtpZighTjAuY3VycmVudCYmIUQxLmN1cnJlbnQpbTEoe3R5cGU6ImVuZCIseDpBMC54MSx5OkEwLnkxfSk7TjAuY3VycmVudD0hMCx5MS5jdXJyZW50PSEwLEQxLmN1cnJlbnQ9ITEsaShBMCksYzEoe3R5cGU6ImJlZ2luIiwuLi5BMH0pO3JldHVybn1sZXQgRT1XLnRvdWNoZXNbMF07aWYoIUUpcmV0dXJuO2xldCBSPShFLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLHQ9KEUuY2xpZW50WS1NLnRvcCkvTS5oZWlnaHQ7ZzEoUix0KTtsZXQgcTE9QzModCk7aWYocTEhPT12b2lkIDApRDEuY3VycmVudD0hMCxtMSh7dHlwZToiYmVnaW4iLHg6Uix5OnQsZWRnZTpxMX0pO2Vsc2UgRDEuY3VycmVudD0hMSxtMSh7dHlwZToiYmVnaW4iLHg6Uix5OnR9KX0sb25Ub3VjaE1vdmU6KFcpPT57Vy5wcmV2ZW50RGVmYXVsdCgpO2xldCBNPXYxKCk7aWYoIU0pcmV0dXJuO2lmKE4wLmN1cnJlbnQmJlcudG91Y2hlcy5sZW5ndGg+PTIpe2xldCBxMT1XLnRvdWNoZXNbMF0sSDE9Vy50b3VjaGVzWzFdLFAxPXt4MToocTEuY2xpZW50WC1NLmxlZnQpL00ud2lkdGgseTE6KHExLmNsaWVudFktTS50b3ApL00uaGVpZ2h0LHgyOihIMS5jbGllbnRYLU0ubGVmdCkvTS53aWR0aCx5MjooSDEuY2xpZW50WS1NLnRvcCkvTS5oZWlnaHR9O2koUDEpLGMxKHt0eXBlOiJtb3ZlIiwuLi5QMX0pO3JldHVybn1sZXQgRT1XLnRvdWNoZXNbMF07aWYoIUUpcmV0dXJuO2xldCBSPShFLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLHQ9KEUuY2xpZW50WS1NLnRvcCkvTS5oZWlnaHQ7aWYocDEoUix0KSxEMS5jdXJyZW50KW0xKHt0eXBlOiJtb3ZlIix4OlIseTp0LGVkZ2U6WjJ9KTtlbHNlIG0xKHt0eXBlOiJtb3ZlIix4OlIseTp0fSl9LG9uVG91Y2hFbmQ6KFcpPT57Vy5wcmV2ZW50RGVmYXVsdCgpO2xldCBNPXYxKCk7aWYoIU0pcmV0dXJuO2lmKE4wLmN1cnJlbnQpe2lmKFcudG91Y2hlcy5sZW5ndGg8Mil7bGV0IHExPVcuY2hhbmdlZFRvdWNoZXNbMF0sSDE9bDtpZihxMSYmSDEpYzEoe3R5cGU6ImVuZCIseDE6KHExLmNsaWVudFgtTS5sZWZ0KS9NLndpZHRoLHkxOihxMS5jbGllbnRZLU0udG9wKS9NLmhlaWdodCx4MjpIMS54Mix5MjpIMS55Mn0pO2Vsc2UgaWYoSDEpYzEoe3R5cGU6ImVuZCIsLi4uSDF9KTtOMC5jdXJyZW50PSExLHkxLmN1cnJlbnQ9ITEsaShudWxsKX1yZXR1cm59bGV0IEU9Vy5jaGFuZ2VkVG91Y2hlc1swXTtpZighRSlyZXR1cm47bGV0IFI9KEUuY2xpZW50WC1NLmxlZnQpL00ud2lkdGgsdD0oRS5jbGllbnRZLU0udG9wKS9NLmhlaWdodDtpZih4MSgpLEQxLmN1cnJlbnQpbTEoe3R5cGU6ImVuZCIseDpSLHk6dCxlZGdlOloyfSksRDEuY3VycmVudD0hMTtlbHNlIG0xKHt0eXBlOiJlbmQiLHg6Uix5OnR9KX19KSxYKCJkaXYiLHtyZWY6azEsImRhdGEtdGVzdGlkIjoidG91Y2gtaW5kaWNhdG9yIixzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIix3aWR0aDoyNCxoZWlnaHQ6MjQsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6InJnYmEoNTksMTMwLDI0NiwwLjUpIixib3hTaGFkb3c6IjAgMCA4cHggcmdiYSg1OSwxMzAsMjQ2LDAuMykiLHRyYW5zZm9ybToidHJhbnNsYXRlKC01MCUsIC01MCUpIixwb2ludGVyRXZlbnRzOiJub25lIn19KSxsJiZYKFoxLHtjaGlsZHJlbjpbWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZmluZ2VyLWRvdCIsc3R5bGU6RDkobC54MSxsLnkxKX0pLFgoImRpdiIseyJkYXRhLXRlc3RpZCI6ImZpbmdlci1kb3QiLHN0eWxlOkQ5KGwueDIsbC55Mil9KV19KSwhQzEmJiFnJiZYKCJkaXYiLHtzdHlsZTp7Li4uXzksLi4uWnx8e319LGNoaWxkcmVuOlgoInNwYW4iLHtzdHlsZTp7Y29sb3I6IiM4ODgiLGZvbnRTaXplOjE0fSxjaGlsZHJlbjoiQ29ubmVjdGluZy4uLiJ9KX0pLGcmJlgoImRpdiIse3N0eWxlOl85LGNoaWxkcmVuOlgoInNwYW4iLHtzdHlsZTp7Y29sb3I6IiNmNDQiLGZvbnRTaXplOjE0LHBhZGRpbmc6MjAsdGV4dEFsaWduOiJjZW50ZXIifSxjaGlsZHJlbjpnfSl9KSxsMSYmWCgiZGl2Iix7c3R5bGU6ZTcsY2hpbGRyZW46WCgic3BhbiIse3N0eWxlOntjb2xvcjoiI2ZiYmYyNCIsZm9udFNpemU6MTMsZm9udEZhbWlseToibW9ub3NwYWNlIn0sY2hpbGRyZW46IlNsb3cgY29ubmVjdGlvbiJ9KX0pXX0pfSksIUMmJlgoImRpdiIse3N0eWxlOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixwYWRkaW5nOiI0cHggOHB4Iixib3JkZXJUb3A6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIn0sY2hpbGRyZW46W1goImJ1dHRvbiIse29uQ2xpY2s6TDAsc3R5bGU6e2JhY2tncm91bmQ6Im5vbmUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4yKSIsY29sb3I6IiNhYWEiLGZvbnRTaXplOjExLGZvbnRGYW1pbHk6Im1vbm9zcGFjZSIscGFkZGluZzoiMnB4IDEwcHgiLGN1cnNvcjoicG9pbnRlciIsYm9yZGVyUmFkaXVzOjR9LGNoaWxkcmVuOiJIb21lIn0pLFgoInNwYW4iLHtzdHlsZTp7Y29sb3I6TzE+MD8iIzRmNCI6IiM4ODgiLGZvbnRTaXplOjEyLGZvbnRGYW1pbHk6Im1vbm9zcGFjZSIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6Nn0sY2hpbGRyZW46W08mJlgoInNwYW4iLHsiZGF0YS10ZXN0aWQiOiJxdWFsaXR5LWRvdCIsc3R5bGU6e3dpZHRoOjgsaGVpZ2h0OjgsYm9yZGVyUmFkaXVzOiI1MCUiLGRpc3BsYXk6ImlubGluZS1ibG9jayIsYmFja2dyb3VuZDpPPT09Imdvb2QiPyIjNGFkZTgwIjpPPT09ImRlZ3JhZGVkIj8iI2ZhY2MxNSI6IiNlZjQ0NDQifX0pLE8xLCIgZnBzIl19KV19KV19KX12YXIgZTc9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjgsbGVmdDoiNTAlIix0cmFuc2Zvcm06InRyYW5zbGF0ZVgoLTUwJSkiLGJhY2tncm91bmQ6InJnYmEoMCwwLDAsMC43KSIsYm9yZGVyUmFkaXVzOjYscGFkZGluZzoiNHB4IDEycHgiLHBvaW50ZXJFdmVudHM6Im5vbmUifSxfOT17cG9zaXRpb246ImFic29sdXRlIixpbnNldDowLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYmFja2dyb3VuZDoicmdiYSgwLDAsMCwwLjgpIn0sUDk9MjA7ZnVuY3Rpb24gRDkoJCxKKXtyZXR1cm57cG9zaXRpb246ImFic29sdXRlIixsZWZ0OmAkeyQqMTAwfSVgLHRvcDpgJHtKKjEwMH0lYCx3aWR0aDpQOSxoZWlnaHQ6UDksYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6InJnYmEoMjU1LDI1NSwyNTUsMC40NSkiLGJvcmRlcjoiMS4yNXB4IHNvbGlkIHJnYmEoMCwwLDAsMC41NSkiLGJveFNoYWRvdzoiMCAxcHggM3B4IHJnYmEoMCwwLDAsMC40NSkiLHRyYW5zZm9ybToidHJhbnNsYXRlKC01MCUsIC01MCUpIixwb2ludGVyRXZlbnRzOiJub25lIn19ZnVuY3Rpb24gSTAoJCl7aWYoISQpcmV0dXJuImlwaG9uZSI7bGV0IEo9JC50b0xvd2VyQ2FzZSgpO2lmKEouaW5jbHVkZXMoImlwYWQiKSlyZXR1cm4iaXBhZCI7aWYoSi5pbmNsdWRlcygid2F0Y2giKSlyZXR1cm4id2F0Y2giO2lmKEouaW5jbHVkZXMoInZpc2lvbiIpKXJldHVybiJ2aXNpb24iO3JldHVybiJpcGhvbmUifXZhciBTMT17aXBob25lOnt3aWR0aDo0MjcsaGVpZ2h0Ojg4MSxiZXplbFg6MTgsYmV6ZWxZOjE4LGlubmVyUmFkaXVzOjU1fSxpcGFkOnt3aWR0aDo0MzAsaGVpZ2h0OjYwNSxiZXplbFg6MTYsYmV6ZWxZOjE2LGlubmVyUmFkaXVzOjEyfSx3YXRjaDp7d2lkdGg6Mjc0LGhlaWdodDozMjIsYmV6ZWxYOjEyLGJlemVsWToxMixpbm5lclJhZGl1czo3OX0sdmlzaW9uOnt3aWR0aDo2NDAsaGVpZ2h0OjQwMCxiZXplbFg6MTIsYmV6ZWxZOjEyLGlubmVyUmFkaXVzOjMyfX0sQlg9UzEuaXBob25lLndpZHRoLE5YPVMxLmlwaG9uZS5oZWlnaHQsTFg9UzEuaXBob25lLmJlemVsWCx6WD1TMS5pcGhvbmUuYmV6ZWxZLFVYPVMxLmlwaG9uZS5pbm5lclJhZGl1cyx3OT17ImlQaG9uZSAxNyBQcm8gTWF4Ijp7d2lkdGg6MTMyMCxoZWlnaHQ6Mjg2OH0sImlQaG9uZSAxNyBQcm8iOnt3aWR0aDoxMjA2LGhlaWdodDoyNjIyfSwiaVBob25lIDE3Ijp7d2lkdGg6MTIwNixoZWlnaHQ6MjYyMn0sImlQaG9uZSBBaXIiOnt3aWR0aDoxMjYwLGhlaWdodDoyNzM2fSwiaVBob25lIDE2IFBybyBNYXgiOnt3aWR0aDoxMzIwLGhlaWdodDoyODY4fSwiaVBob25lIDE2IFBybyI6e3dpZHRoOjEyMDYsaGVpZ2h0OjI2MjJ9LCJpUGhvbmUgMTYgUGx1cyI6e3dpZHRoOjEyOTAsaGVpZ2h0OjI3OTZ9LCJpUGhvbmUgMTYiOnt3aWR0aDoxMTc5LGhlaWdodDoyNTU2fSwiaVBob25lIDE2ZSI6e3dpZHRoOjExNzAsaGVpZ2h0OjI1MzJ9LCJpUGhvbmUgMTUgUHJvIE1heCI6e3dpZHRoOjEyOTAsaGVpZ2h0OjI3OTZ9LCJpUGhvbmUgMTUgUHJvIjp7d2lkdGg6MTE3OSxoZWlnaHQ6MjU1Nn0sImlQaG9uZSAxNSBQbHVzIjp7d2lkdGg6MTI5MCxoZWlnaHQ6Mjc5Nn0sImlQaG9uZSAxNSI6e3dpZHRoOjExNzksaGVpZ2h0OjI1NTZ9LCJpUGFkIFBybyAxMy1pbmNoIChNNSkiOnt3aWR0aDoyMDY0LGhlaWdodDoyNzUyfSwiaVBhZCBQcm8gMTEtaW5jaCAoTTUpIjp7d2lkdGg6MTY2OCxoZWlnaHQ6MjQyMH0sImlQYWQgUHJvIDEzLWluY2ggKE00KSI6e3dpZHRoOjIwNjQsaGVpZ2h0OjI3NTJ9LCJpUGFkIFBybyAxMS1pbmNoIChNNCkiOnt3aWR0aDoxNjY4LGhlaWdodDoyNDIwfSwiaVBhZCBBaXIgMTMtaW5jaCAoTTMpIjp7d2lkdGg6MjA0OCxoZWlnaHQ6MjczMn0sImlQYWQgQWlyIDExLWluY2ggKE0zKSI6e3dpZHRoOjE2NDAsaGVpZ2h0OjIzNjB9LCJpUGFkIChBMTYpIjp7d2lkdGg6MTY0MCxoZWlnaHQ6MjM2MH0sImlQYWQgbWluaSAoQTE3IFBybykiOnt3aWR0aDoxNDg4LGhlaWdodDoyMjY2fSwiQXBwbGUgV2F0Y2ggVWx0cmEgMyAoNDltbSkiOnt3aWR0aDo0MjIsaGVpZ2h0OjUxNH0sIkFwcGxlIFdhdGNoIFVsdHJhIDIgKDQ5bW0pIjp7d2lkdGg6NDEwLGhlaWdodDo1MDJ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTEgKDQ2bW0pIjp7d2lkdGg6NDE2LGhlaWdodDo0OTZ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTEgKDQybW0pIjp7d2lkdGg6Mzc0LGhlaWdodDo0NDZ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTAgKDQ2bW0pIjp7d2lkdGg6NDE2LGhlaWdodDo0OTZ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTAgKDQybW0pIjp7d2lkdGg6Mzc0LGhlaWdodDo0NDZ9LCJBcHBsZSBXYXRjaCBTRSAzICg0NG1tKSI6e3dpZHRoOjM2OCxoZWlnaHQ6NDQ4fSwiQXBwbGUgV2F0Y2ggU0UgMyAoNDBtbSkiOnt3aWR0aDozMjQsaGVpZ2h0OjM5NH0sIkFwcGxlIFdhdGNoIFNFICg0NG1tKSI6e3dpZHRoOjM2OCxoZWlnaHQ6NDQ4fSwiQXBwbGUgV2F0Y2ggU0UgKDQwbW0pIjp7d2lkdGg6MzI0LGhlaWdodDozOTR9LCJBcHBsZSBWaXNpb24gUHJvIjp7d2lkdGg6MTkyMCxoZWlnaHQ6MTA4MH19O2Z1bmN0aW9uIEY1KCQsSil7bGV0IFE9JCYmJC53aWR0aD4wJiYkLmhlaWdodD4wPyQ6SixaPVgyKFEpO2lmKFopcmV0dXJuYCR7Wi53aWR0aH0gLyAke1ouaGVpZ2h0fWA7cmV0dXJuYCR7UzEuaXBob25lLndpZHRoLTIqUzEuaXBob25lLmJlemVsWH0gLyAke1MxLmlwaG9uZS5oZWlnaHQtMipTMS5pcGhvbmUuYmV6ZWxZfWB9ZnVuY3Rpb24gcTIoJD0iaXBob25lIixKKXtsZXQgUT1KP3c5W0pdOm51bGw7aWYoUSlyZXR1cm4gUTtsZXQgWj1TMVskXTtyZXR1cm57d2lkdGg6Wi53aWR0aC0yKlouYmV6ZWxYLGhlaWdodDpaLmhlaWdodC0yKlouYmV6ZWxZfX1mdW5jdGlvbiBHMigkPSJpcGhvbmUiLEope2lmKGYwKEopKXN3aXRjaCgkKXtjYXNlImlwYWQiOnJldHVybiA3MjA7Y2FzZSJ2aXNpb24iOnJldHVybiA1ODA7Y2FzZSJ3YXRjaCI6cmV0dXJuIDIwMDtkZWZhdWx0OnJldHVybiA2MjB9c3dpdGNoKCQpe2Nhc2UiaXBhZCI6cmV0dXJuIDQwMDtjYXNlIndhdGNoIjpyZXR1cm4gMjAwO2Nhc2UidmlzaW9uIjpyZXR1cm4gNTgwO2RlZmF1bHQ6cmV0dXJuIDMyMH19ZnVuY3Rpb24gazUoJD0iaXBob25lIixKKXtsZXQgUT1TMVskXSxaPVEud2lkdGgtMipRLmJlemVsWCxLPVEuaGVpZ2h0LTIqUS5iZXplbFk7aWYoWjxLJiZmMChKKSlyZXR1cm5gJHtRLmlubmVyUmFkaXVzL0sqMTAwfSUgLyAke1EuaW5uZXJSYWRpdXMvWioxMDB9JWA7cmV0dXJuYCR7US5pbm5lclJhZGl1cy9aKjEwMH0lIC8gJHtRLmlubmVyUmFkaXVzL0sqMTAwfSVgfWZ1bmN0aW9uIFQ5KCQpe2xldCBKPVMxWyQudHlwZV0sUT1KLndpZHRoLTIqSi5iZXplbFgsWj1KLmhlaWdodC0yKkouYmV6ZWxZLEssWTtpZihRPFomJmYwKCQuY29uZmlnPz9udWxsKSlLPUouaW5uZXJSYWRpdXMvWixZPUouaW5uZXJSYWRpdXMvUTtlbHNlIEs9Si5pbm5lclJhZGl1cy9RLFk9Si5pbm5lclJhZGl1cy9aO2xldCBxPUsqJC5jb250YWluZXJXaWR0aCxHPVkqJC5jb250YWluZXJIZWlnaHQsTj1NYXRoLnNxcnQoTWF0aC5tYXgocSpHLDApKTtyZXR1cm57cng6cSxyeTpHLHJHZW9tOk59fXZhciBKJD0xMyxRJD02MjtmdW5jdGlvbiBXMygkKXtsZXR7Y29udGFpbmVyV2lkdGg6Sixjb250YWluZXJIZWlnaHQ6UX09JCxaPShDKT0+Qy50b0ZpeGVkKDMpLEs9KEMsRik9PntsZXQgTz1GLEk9Rix3PVEkLzIqKE1hdGguUEkvMTgwKSxTPTIyNSpNYXRoLlBJLzE4MCxqPVMrdywkMT1TLXcsbT1PK0MqTWF0aC5jb3MoaiksYz1JK0MqTWF0aC5zaW4oaiksbj1PK0MqTWF0aC5jb3MoJDEpLG89SStDKk1hdGguc2luKCQxKSxyPWBNICR7WihtKX0gJHtaKGMpfSBBICR7WihDKX0gJHtaKEMpfSAwIDAgMSAke1oobil9ICR7WihvKX1gLFExPWBNICR7WihuKX0gJHtaKG8pfSBBICR7WihDKX0gJHtaKEMpfSAwIDAgMCAke1oobSl9ICR7WihjKX1gO3JldHVybntkOnIsZEZpbGw6UTF9fTtpZighKEo+MCl8fCEoUT4wKSl7bGV0IEM9SiQsRj1NYXRoLmNlaWwoQysxNCkse2Q6TyxkRmlsbDpJfT1LKEMsRik7cmV0dXJue2Q6TyxkRmlsbDpJLHZpZXdCb3hTaXplOkZ9fWxldHtyR2VvbTpZfT1UOSgkKSxxPU1hdGgubWF4KDIuMixNYXRoLm1pbig1LjIsMC4wMTEqTWF0aC5taW4oSixRKSkpLEc9WSowLjM0K3EsTj1NYXRoLm1pbihKLFEpLEI9TWF0aC5taW4oMjIsTWF0aC5tYXgoMTIsTiowLjA1MikpO0c9TWF0aC5taW4oMjQsTWF0aC5tYXgoMTIsRyxCKSk7bGV0IHo9TWF0aC5tYXgoMjYsTWF0aC5jZWlsKEcrMTMpKSx7ZDprLGRGaWxsOkh9PUsoRyx6KTtyZXR1cm57ZDprLGRGaWxsOkgsdmlld0JveFNpemU6en19ZnVuY3Rpb24gTTUoe3R5cGU6JD0iaXBob25lIixzdHJlYW1pbmc6Sj0hMX0pe3N3aXRjaCgkKXtjYXNlImlwYWQiOnJldHVybiBYKFgkLHtzdHJlYW1pbmc6Sn0pO2Nhc2Uid2F0Y2giOnJldHVybiBYKEskLHtzdHJlYW1pbmc6Sn0pO2Nhc2UidmlzaW9uIjpyZXR1cm4gWChZJCx7c3RyZWFtaW5nOkp9KTtkZWZhdWx0OnJldHVybiBYKFokLHtzdHJlYW1pbmc6Sn0pfX1mdW5jdGlvbiBaJCh7c3RyZWFtaW5nOiQ9ITF9KXtyZXR1cm4gWCgic3ZnIix7dmlld0JveDoiMCAwIDQyNyA4ODEiLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn0sZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbWCgiZGVmcyIse2NoaWxkcmVuOltYKCJmaWx0ZXIiLHtpZDoiY2hyb21lLWZpbHRlcjAiLHg6Ii0wLjE2Njk5MiIseToiMC4xNjY1MDQiLHdpZHRoOiI0MjciLGhlaWdodDoiODgwLjY2NyIsZmlsdGVyVW5pdHM6InVzZXJTcGFjZU9uVXNlIixjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiJzUkdCIixjaGlsZHJlbjpbWCgiZmVGbG9vZCIse2Zsb29kT3BhY2l0eToiMCIscmVzdWx0OiJCYWNrZ3JvdW5kSW1hZ2VGaXgifSksWCgiZmVCbGVuZCIse21vZGU6Im5vcm1hbCIsaW46IlNvdXJjZUdyYXBoaWMiLGluMjoiQmFja2dyb3VuZEltYWdlRml4IixyZXN1bHQ6InNoYXBlIn0pLFgoImZlR2F1c3NpYW5CbHVyIix7c3RkRGV2aWF0aW9uOiIwLjUiLHJlc3VsdDoiZWZmZWN0MV9mb3JlZ3JvdW5kQmx1ciJ9KV19KSxYKCJmaWx0ZXIiLHtpZDoiY2hyb21lLWZpbHRlcjEiLHg6IjYuMzMyMzYiLHk6IjYuMzMzODIiLHdpZHRoOiI0MTQiLGhlaWdodDoiODY4IixmaWx0ZXJVbml0czoidXNlclNwYWNlT25Vc2UiLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6InNSR0IiLGNoaWxkcmVuOltYKCJmZUZsb29kIix7Zmxvb2RPcGFjaXR5OiIwIixyZXN1bHQ6IkJhY2tncm91bmRJbWFnZUZpeCJ9KSxYKCJmZUJsZW5kIix7bW9kZToibm9ybWFsIixpbjoiU291cmNlR3JhcGhpYyIsaW4yOiJCYWNrZ3JvdW5kSW1hZ2VGaXgiLHJlc3VsdDoic2hhcGUifSksWCgiZmVHYXVzc2lhbkJsdXIiLHtzdGREZXZpYXRpb246IjAuMzMzMzMzIixyZXN1bHQ6ImVmZmVjdDFfZm9yZWdyb3VuZEJsdXIifSldfSldfSksWCgicmVjdCIse3g6IjMuODMyNjgiLHk6IjMuODMzNjYiLHdpZHRoOiI0MTkiLGhlaWdodDoiODczIixyeDoiNjYuMTY2NyIsc3Ryb2tlOiIjNDU0NTQ4IixzdHJva2VXaWR0aDoiNC4zMzMzMyJ9KSxYKCJyZWN0Iix7eDoiMC44MzMzMzMiLHk6IjAuODMzMzMzIix3aWR0aDoiNDI1IixoZWlnaHQ6Ijg3OSIscng6IjY5LjE2NjciLHN0cm9rZToiIzM3MzczYSIsc3Ryb2tlV2lkdGg6IjEuNjY2NjcifSksWCgiZyIse29wYWNpdHk6IjAuOSIsZmlsdGVyOiJ1cmwoI2Nocm9tZS1maWx0ZXIwKSIsY2hpbGRyZW46WCgicmVjdCIse3g6IjEuNjY2MDIiLHk6IjIiLHdpZHRoOiI0MjMuMzMzIixoZWlnaHQ6Ijg3NyIscng6IjY4LjY2NjciLHN0cm9rZToiIzQ1NDU0OCIsc3Ryb2tlV2lkdGg6IjEuNjY2NjcifSl9KSxYKCJnIix7b3BhY2l0eToiMC44IixmaWx0ZXI6InVybCgjY2hyb21lLWZpbHRlcjEpIixjaGlsZHJlbjpYKCJyZWN0Iix7eDoiNy4zMzI2OCIseToiNy4zMzM2NiIsd2lkdGg6IjQxMiIsaGVpZ2h0OiI4NjYiLHJ4OiI2Mi42NjY3IixzdHJva2U6IiM2NDY0NjQiLHN0cm9rZVdpZHRoOiIwLjY2NjY2NyJ9KX0pLFgoInJlY3QiLHt4OiIxNTEuNjY2Iix5OiIzMS42NjciLHdpZHRoOiIxMjMuMzMzIixoZWlnaHQ6IjM2IixyeDoiMTgiLGZpbGw6ImJsYWNrIixzdHlsZTp7b3BhY2l0eTokPzA6MSx0cmFuc2l0aW9uOiJvcGFjaXR5IDAuM3MgZWFzZSJ9fSldfSl9ZnVuY3Rpb24gWCQoe3N0cmVhbWluZzokPSExfSl7bGV0IEo9UzEuaXBhZC53aWR0aCxRPVMxLmlwYWQuaGVpZ2h0LFo9MzAsSz0yNjtyZXR1cm4gWCgic3ZnIix7dmlld0JveDpgMCAwICR7Sn0gJHtRfWAsc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifSxmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOltYKCJkZWZzIix7Y2hpbGRyZW46W1goImZpbHRlciIse2lkOiJpcGFkLWdsb3cwIix4OiIwIix5OiIwIix3aWR0aDpKLGhlaWdodDpRLGZpbHRlclVuaXRzOiJ1c2VyU3BhY2VPblVzZSIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoic1JHQiIsY2hpbGRyZW46W1goImZlRmxvb2QiLHtmbG9vZE9wYWNpdHk6IjAiLHJlc3VsdDoiQmFja2dyb3VuZEltYWdlRml4In0pLFgoImZlQmxlbmQiLHttb2RlOiJub3JtYWwiLGluOiJTb3VyY2VHcmFwaGljIixpbjI6IkJhY2tncm91bmRJbWFnZUZpeCIscmVzdWx0OiJzaGFwZSJ9KSxYKCJmZUdhdXNzaWFuQmx1ciIse3N0ZERldmlhdGlvbjoiMC41IixyZXN1bHQ6ImJsdXIifSldfSksWCgiZmlsdGVyIix7aWQ6ImlwYWQtZ2xvdzEiLHg6IjUiLHk6IjUiLHdpZHRoOkotMTAsaGVpZ2h0OlEtMTAsZmlsdGVyVW5pdHM6InVzZXJTcGFjZU9uVXNlIixjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiJzUkdCIixjaGlsZHJlbjpbWCgiZmVGbG9vZCIse2Zsb29kT3BhY2l0eToiMCIscmVzdWx0OiJCYWNrZ3JvdW5kSW1hZ2VGaXgifSksWCgiZmVCbGVuZCIse21vZGU6Im5vcm1hbCIsaW46IlNvdXJjZUdyYXBoaWMiLGluMjoiQmFja2dyb3VuZEltYWdlRml4IixyZXN1bHQ6InNoYXBlIn0pLFgoImZlR2F1c3NpYW5CbHVyIix7c3RkRGV2aWF0aW9uOiIwLjMzMzMzMyIscmVzdWx0OiJibHVyIn0pXX0pXX0pLFgoInJlY3QiLHt4OiIzLjUiLHk6IjMuNSIsd2lkdGg6Si03LGhlaWdodDpRLTcscng6MjYsc3Ryb2tlOiIjNDU0NTQ4IixzdHJva2VXaWR0aDoiNCJ9KSxYKCJyZWN0Iix7eDoiMC44MzMiLHk6IjAuODMzIix3aWR0aDpKLTEuNjY2LGhlaWdodDpRLTEuNjY2LHJ4OjMwLHN0cm9rZToiIzM3MzczYSIsc3Ryb2tlV2lkdGg6IjEuNjY2In0pLFgoImciLHtvcGFjaXR5OiIwLjkiLGZpbHRlcjoidXJsKCNpcGFkLWdsb3cwKSIsY2hpbGRyZW46WCgicmVjdCIse3g6IjEuNSIseToiMS41Iix3aWR0aDpKLTMsaGVpZ2h0OlEtMyxyeDoyOSxzdHJva2U6IiM0NTQ1NDgiLHN0cm9rZVdpZHRoOiIxLjY2NiJ9KX0pLFgoImciLHtvcGFjaXR5OiIwLjgiLGZpbHRlcjoidXJsKCNpcGFkLWdsb3cxKSIsY2hpbGRyZW46WCgicmVjdCIse3g6IjYiLHk6IjYiLHdpZHRoOkotMTIsaGVpZ2h0OlEtMTIscng6MjQsc3Ryb2tlOiIjNjQ2NDY0IixzdHJva2VXaWR0aDoiMC42NjYifSl9KSxYKCJjaXJjbGUiLHtjeDpKLzIsY3k6UzEuaXBhZC5iZXplbFkvMisxLHI6IjMiLGZpbGw6IiMxYTFhMWEiLHN0eWxlOntvcGFjaXR5OiQ/MDowLjgsdHJhbnNpdGlvbjoib3BhY2l0eSAwLjNzIGVhc2UifX0pLFgoInJlY3QiLHt4OihKLTEyMCkvMix5OlEtUzEuaXBhZC5iZXplbFkvMi0yLjUsd2lkdGg6IjEyMCIsaGVpZ2h0OiI1IixyeDoiMi41IixmaWxsOiJ3aGl0ZSIsc3R5bGU6e29wYWNpdHk6JD8wOjAuMzUsbWl4QmxlbmRNb2RlOiJkaWZmZXJlbmNlIix0cmFuc2l0aW9uOiJvcGFjaXR5IDAuM3MgZWFzZSJ9fSldfSl9ZnVuY3Rpb24gSyQoe3N0cmVhbWluZzokPSExfSl7bGV0IEo9UzEud2F0Y2gud2lkdGgsUT1TMS53YXRjaC5oZWlnaHQsWj04OCxLPTgyLFk9OCxxPTM2LEc9US8yLTE4LTE2LE49MjIsQj1RLzItMTErMTY7cmV0dXJuIFgoInN2ZyIse3ZpZXdCb3g6YDAgMCAke0p9ICR7UX1gLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9LGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46W1goImRlZnMiLHtjaGlsZHJlbjpYKCJmaWx0ZXIiLHtpZDoid2F0Y2gtZ2xvdzAiLHg6IjAiLHk6IjAiLHdpZHRoOkorMTIsaGVpZ2h0OlEsZmlsdGVyVW5pdHM6InVzZXJTcGFjZU9uVXNlIixjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiJzUkdCIixjaGlsZHJlbjpbWCgiZmVGbG9vZCIse2Zsb29kT3BhY2l0eToiMCIscmVzdWx0OiJCYWNrZ3JvdW5kSW1hZ2VGaXgifSksWCgiZmVCbGVuZCIse21vZGU6Im5vcm1hbCIsaW46IlNvdXJjZUdyYXBoaWMiLGluMjoiQmFja2dyb3VuZEltYWdlRml4IixyZXN1bHQ6InNoYXBlIn0pLFgoImZlR2F1c3NpYW5CbHVyIix7c3RkRGV2aWF0aW9uOiIwLjUiLHJlc3VsdDoiYmx1ciJ9KV19KX0pLFgoInJlY3QiLHt4OkotMix5Okcsd2lkdGg6OCxoZWlnaHQ6MzYscng6IjMiLGZpbGw6IiMyYTJhMmMiLHN0cm9rZToiIzQ1NDU0OCIsc3Ryb2tlV2lkdGg6IjEifSksWCgicmVjdCIse3g6Si0xLHk6Qix3aWR0aDo2LGhlaWdodDoyMixyeDoiMi41IixmaWxsOiIjMmEyYTJjIixzdHJva2U6IiM0NTQ1NDgiLHN0cm9rZVdpZHRoOiIwLjgifSksWCgicmVjdCIse3g6IjMuNSIseToiMy41Iix3aWR0aDpKLTcsaGVpZ2h0OlEtNyxyeDo4MixzdHJva2U6IiM0NTQ1NDgiLHN0cm9rZVdpZHRoOiIzLjUifSksWCgicmVjdCIse3g6IjAuODMzIix5OiIwLjgzMyIsd2lkdGg6Si0xLjY2NixoZWlnaHQ6US0xLjY2NixyeDo4OCxzdHJva2U6IiMzNzM3M2EiLHN0cm9rZVdpZHRoOiIxLjY2NiJ9KSxYKCJnIix7b3BhY2l0eToiMC45IixmaWx0ZXI6InVybCgjd2F0Y2gtZ2xvdzApIixjaGlsZHJlbjpYKCJyZWN0Iix7eDoiMS41Iix5OiIxLjUiLHdpZHRoOkotMyxoZWlnaHQ6US0zLHJ4Ojg3LHN0cm9rZToiIzQ1NDU0OCIsc3Ryb2tlV2lkdGg6IjEuNjY2In0pfSldfSl9ZnVuY3Rpb24gWSQoe3N0cmVhbWluZzokPSExfSl7bGV0IEo9UzEudmlzaW9uLndpZHRoLFE9UzEudmlzaW9uLmhlaWdodCxaPTQwLEs9MzQ7cmV0dXJuIFgoInN2ZyIse3ZpZXdCb3g6YDAgMCAke0p9ICR7UX1gLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn0sZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbWCgiZGVmcyIse2NoaWxkcmVuOltYKCJmaWx0ZXIiLHtpZDoidmlzaW9uLWdsb3cwIix4OiIwIix5OiIwIix3aWR0aDpKLGhlaWdodDpRLGZpbHRlclVuaXRzOiJ1c2VyU3BhY2VPblVzZSIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoic1JHQiIsY2hpbGRyZW46W1goImZlRmxvb2QiLHtmbG9vZE9wYWNpdHk6IjAiLHJlc3VsdDoiQmFja2dyb3VuZEltYWdlRml4In0pLFgoImZlQmxlbmQiLHttb2RlOiJub3JtYWwiLGluOiJTb3VyY2VHcmFwaGljIixpbjI6IkJhY2tncm91bmRJbWFnZUZpeCIscmVzdWx0OiJzaGFwZSJ9KSxYKCJmZUdhdXNzaWFuQmx1ciIse3N0ZERldmlhdGlvbjoiMC41IixyZXN1bHQ6ImJsdXIifSldfSksWCgiZmlsdGVyIix7aWQ6InZpc2lvbi1nbG93MSIseDoiNSIseToiNSIsd2lkdGg6Si0xMCxoZWlnaHQ6US0xMCxmaWx0ZXJVbml0czoidXNlclNwYWNlT25Vc2UiLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6InNSR0IiLGNoaWxkcmVuOltYKCJmZUZsb29kIix7Zmxvb2RPcGFjaXR5OiIwIixyZXN1bHQ6IkJhY2tncm91bmRJbWFnZUZpeCJ9KSxYKCJmZUJsZW5kIix7bW9kZToibm9ybWFsIixpbjoiU291cmNlR3JhcGhpYyIsaW4yOiJCYWNrZ3JvdW5kSW1hZ2VGaXgiLHJlc3VsdDoic2hhcGUifSksWCgiZmVHYXVzc2lhbkJsdXIiLHtzdGREZXZpYXRpb246IjAuMzMzIixyZXN1bHQ6ImJsdXIifSldfSksWCgibGluZWFyR3JhZGllbnQiLHtpZDoidmlzaW9uLWdsYXNzIix4MToiMCIseTE6IjAiLHgyOiIwIix5MjoiMSIsY2hpbGRyZW46W1goInN0b3AiLHtvZmZzZXQ6IjAlIixzdG9wQ29sb3I6IiM1NTU1NTgiLHN0b3BPcGFjaXR5OiIwLjMifSksWCgic3RvcCIse29mZnNldDoiMTAwJSIsc3RvcENvbG9yOiIjM2EzYTNkIixzdG9wT3BhY2l0eToiMC4xIn0pXX0pXX0pLFgoInJlY3QiLHt4OiIwIix5OiIwIix3aWR0aDpKLGhlaWdodDpRLHJ4OjQwLGZpbGw6InVybCgjdmlzaW9uLWdsYXNzKSJ9KSxYKCJyZWN0Iix7eDoiMy41Iix5OiIzLjUiLHdpZHRoOkotNyxoZWlnaHQ6US03LHJ4OjM0LHN0cm9rZToiIzQ1NDU0OCIsc3Ryb2tlV2lkdGg6IjMifSksWCgicmVjdCIse3g6IjAuODMzIix5OiIwLjgzMyIsd2lkdGg6Si0xLjY2NixoZWlnaHQ6US0xLjY2NixyeDo0MCxzdHJva2U6IiMzNzM3M2EiLHN0cm9rZVdpZHRoOiIxLjY2NiJ9KSxYKCJnIix7b3BhY2l0eToiMC45IixmaWx0ZXI6InVybCgjdmlzaW9uLWdsb3cwKSIsY2hpbGRyZW46WCgicmVjdCIse3g6IjEuNSIseToiMS41Iix3aWR0aDpKLTMsaGVpZ2h0OlEtMyxyeDozOSxzdHJva2U6IiM0NTQ1NDgiLHN0cm9rZVdpZHRoOiIxLjY2NiJ9KX0pLFgoImciLHtvcGFjaXR5OiIwLjgiLGZpbHRlcjoidXJsKCN2aXNpb24tZ2xvdzEpIixjaGlsZHJlbjpYKCJyZWN0Iix7eDoiNiIseToiNiIsd2lkdGg6Si0xMixoZWlnaHQ6US0xMixyeDozMixzdHJva2U6IiM2NDY0NjQiLHN0cm9rZVdpZHRoOiIwLjY2NiJ9KX0pLFgoImVsbGlwc2UiLHtjeDpKLzIsY3k6US8yLHJ4OkovMi0zMCxyeTpRLzItMjQsc3Ryb2tlOiIjNGE0YTRkIixzdHJva2VXaWR0aDoiMC41IixvcGFjaXR5OiIwLjMiLHN0eWxlOntvcGFjaXR5OiQ/MDowLjMsdHJhbnNpdGlvbjoib3BhY2l0eSAwLjNzIGVhc2UifX0pXX0pfXZhciBfMz16MChudWxsKTtmdW5jdGlvbiBPNSgkKXtsZXQgSj1VMChfMyk7aWYoIUopdGhyb3cgRXJyb3IoYDxTaW11bGF0b3JUb29sYmFyLiR7JH0+IG11c3QgYmUgcmVuZGVyZWQgaW5zaWRlIDxTaW11bGF0b3JUb29sYmFyPmApO3JldHVybiBKfXZhciBHJD17ZGlzcGxheToiZmxleCIsZmxleFdyYXA6IndyYXAiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLGdhcDoiNHB4IDEycHgiLHBhZGRpbmc6IjhweCAxMnB4Iixib3JkZXJSYWRpdXM6MjQsYmFja2dyb3VuZDoidmFyKC0tc2VydmUtc2ltLXBhbmVsLWJnLCAjMTgxODE4KSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpIixib3hTaGFkb3c6IjAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMikiLG1pbldpZHRoOjI0MCx3aWR0aDoiMTAwJSJ9O2Z1bmN0aW9uIFYkKHtleGVjOiQsb25Sb3RhdGU6SixvcmllbnRhdGlvbjpRLGRldmljZVVkaWQ6WixkZXZpY2VOYW1lOkssZGV2aWNlUnVudGltZTpZLHN0cmVhbWluZzpxPSExLGRpc2FibGVkOkc9ITEsY2hpbGRyZW46TixzdHlsZTpCLC4uLkx9KXtsZXQgVj1JMChLKSx6PXtleGVjOiQsb25Sb3RhdGU6SixvcmllbnRhdGlvbjpRLGRldmljZVVkaWQ6WixkZXZpY2VOYW1lOkssZGV2aWNlUnVudGltZTpZLGRldmljZVR5cGU6VixzdHJlYW1pbmc6cSxkaXNhYmxlZDpHfHwhWnx8IXF9O3JldHVybiBYKF8zLlByb3ZpZGVyLHt2YWx1ZTp6LGNoaWxkcmVuOlgoImRpdiIseyJkYXRhLXNpbXVsYXRvci10b29sYmFyIjohMCxzdHlsZTp7Li4uRyQsLi4uQn0sLi4uTCxjaGlsZHJlbjpOfSl9KX12YXIgQiQ9e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsYWxpZ25JdGVtczoiZmxleC1zdGFydCIsdGV4dEFsaWduOiJsZWZ0IixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixjb2xvcjoiI2ZmZiIscGFkZGluZzoiMnB4IDRweCIsbWFyZ2luOiItMnB4IC00cHgiLGJvcmRlclJhZGl1czo2LGN1cnNvcjoicG9pbnRlciIsbWluV2lkdGg6MCxtYXhXaWR0aDoiMTAwJSIsbGluZUhlaWdodDoxLjIsZm9udEZhbWlseToiaW5oZXJpdCJ9LE4kPVcwKGZ1bmN0aW9uKHtuYW1lOkosc3VidGl0bGU6USxoaWRlQ2hldnJvbjpaLGhpZGVTdWJ0aXRsZTpLLHN0eWxlOlksb25Nb3VzZUVudGVyOnEsb25Nb3VzZUxlYXZlOkcsLi4uTn0sQil7bGV0IEw9TzUoIlRpdGxlIiksW1YsVV09QSghMSksej1KPz9MLmRldmljZU5hbWU/PyJObyBzaW11bGF0b3IiLGs9UT8/KEwuZGV2aWNlUnVudGltZT9MLmRldmljZVJ1bnRpbWUucmVwbGFjZSgvXC4vLCIgIik6IuKAlCIpO3JldHVybiBYKCJidXR0b24iLHtyZWY6Qix0eXBlOiJidXR0b24iLCJkYXRhLXNpbXVsYXRvci10b29sYmFyLXRpdGxlIjohMCxvbk1vdXNlRW50ZXI6KEgpPT57VSghMCkscT8uKEgpfSxvbk1vdXNlTGVhdmU6KEgpPT57VSghMSksRz8uKEgpfSxzdHlsZTp7Li4uQiQsYmFja2dyb3VuZDpWPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMSkiOiJ0cmFuc3BhcmVudCIsLi4uWX0sLi4uTixjaGlsZHJlbjpbWCgic3BhbiIse3N0eWxlOntkaXNwbGF5OiJpbmxpbmUtZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6NCxmb250U2l6ZToxMixmb250V2VpZ2h0OjYwMCxjb2xvcjoiI2ZmZiIsbWF4V2lkdGg6IjEwMCUiLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LGNoaWxkcmVuOlt6LCFaJiZYKCJzdmciLHt3aWR0aDoiMTAiLGhlaWdodDoiMTAiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyLjUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLHN0eWxlOntjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjYpIixmbGV4U2hyaW5rOjB9LGNoaWxkcmVuOlgoInBvbHlsaW5lIix7cG9pbnRzOiI2IDkgMTIgMTUgMTggOSJ9KX0pXX0pLCFLJiZYKCJzcGFuIix7c3R5bGU6e2ZvbnRTaXplOjEwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNSkiLG1heFdpZHRoOiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjprfSldfSl9KSxMJD17ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6NCxmbGV4U2hyaW5rOjB9O2Z1bmN0aW9uIHokKHtzdHlsZTokLC4uLkp9KXtyZXR1cm4gWCgiZGl2Iix7c3R5bGU6ey4uLkwkLC4uLiR9LC4uLkp9KX12YXIgVSQ9e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLHBhZGRpbmc6Nixib3JkZXJSYWRpdXM6MTIsY3Vyc29yOiJwb2ludGVyIixkaXNwbGF5OiJpbmxpbmUtZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjgpIix0cmFuc2l0aW9uOiJiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzLCBjb2xvciAwLjE1cyIscG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoidmlzaWJsZSJ9LEE1PVcwKGZ1bmN0aW9uKHtmb3JjZURpc2FibGVkOkosdG9vbHRpcDpRLHN0eWxlOlosZGlzYWJsZWQ6Syx0aXRsZTpZLG9uTW91c2VFbnRlcjpxLG9uTW91c2VMZWF2ZTpHLG9uUG9pbnRlckRvd246TixvbkZvY3VzOkIsb25CbHVyOkwsb25DbGljazpWLGNoaWxkcmVuOlUsImFyaWEtbGFiZWwiOnosLi4ua30sSCl7bGV0IEM9VTAoXzMpLEY9S3x8Snx8Qz8uZGlzYWJsZWQsW08sSV09QSghMSksW3csU109QSghMSksaj1UKCExKSwkMT1RMigpLG09UT8/WT8/KHR5cGVvZiB6PT09InN0cmluZyI/ejpudWxsKSxjPSEhbSYmIUYmJihPfHx3KTtyZXR1cm4gWCgiYnV0dG9uIix7cmVmOkgsdHlwZToiYnV0dG9uIixkaXNhYmxlZDpGLCJhcmlhLWxhYmVsIjp6LCJhcmlhLWRlc2NyaWJlZGJ5IjptPyQxOnZvaWQgMCxvblBvaW50ZXJEb3duOihuKT0+e2ouY3VycmVudD0hMCxOPy4obil9LG9uTW91c2VFbnRlcjoobik9PntJKCEwKSxxPy4obil9LG9uTW91c2VMZWF2ZToobik9PntJKCExKSxHPy4obil9LG9uRm9jdXM6KG4pPT57Uyghai5jdXJyZW50KSxCPy4obil9LG9uQmx1cjoobik9PntqLmN1cnJlbnQ9ITEsUyghMSksTD8uKG4pfSxvbkNsaWNrOihuKT0+e0koITEpLFMoITEpLG4uY3VycmVudFRhcmdldC5ibHVyKCksVj8uKG4pfSxzdHlsZTp7Li4uVSQsY29sb3I6Rj8icmdiYSgyNTUsMjU1LDI1NSwwLjI1KSI6InJnYmEoMjU1LDI1NSwyNTUsMC44KSIsYmFja2dyb3VuZDpPJiYhRj8icmdiYSgyNTUsMjU1LDI1NSwwLjEpIjoidHJhbnNwYXJlbnQiLGN1cnNvcjpGPyJub3QtYWxsb3dlZCI6InBvaW50ZXIiLC4uLlp9LC4uLmssY2hpbGRyZW46W1UsbSYmWCgic3BhbiIse2lkOiQxLHJvbGU6InRvb2x0aXAiLCJhcmlhLWhpZGRlbiI6IWMsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiNTAlIixib3R0b206ImNhbGMoMTAwJSArIDhweCkiLHRyYW5zZm9ybTpgdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKCR7Yz8wOjJ9cHgpYCxvcGFjaXR5OmM/MTowLHBvaW50ZXJFdmVudHM6Im5vbmUiLHdoaXRlU3BhY2U6Im5vd3JhcCIscGFkZGluZzoiNHB4IDdweCIsYm9yZGVyUmFkaXVzOjYsYmFja2dyb3VuZDoidmFyKC0tc2VydmUtc2ltLXBhbmVsLWJnLCAjMTgxODE4KSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC45MikiLGZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NTAwLGxpbmVIZWlnaHQ6MSxib3hTaGFkb3c6IjAgNHB4IDE0cHggcmdiYSgwLDAsMCwwLjMyKSIsdHJhbnNpdGlvbjoib3BhY2l0eSAwLjEycyBlYXNlLCB0cmFuc2Zvcm0gMC4xMnMgZWFzZSIsekluZGV4OjEwMH0sY2hpbGRyZW46bX0pXX0pfSk7ZnVuY3Rpb24gSCQoJCxKKXtpZigkPT09IndhdGNoIilyZXR1cm4gQyQoKTtpZihKKXJldHVybmB4Y3J1biBzaW1jdGwgbGF1bmNoICR7Sn0gY29tLmFwcGxlLnNwcmluZ2JvYXJkYDtyZXR1cm4ic2VydmUtc2ltIGJ1dHRvbiBob21lIn1mdW5jdGlvbiBDJCgpe3JldHVyblsndGVsbCBhcHBsaWNhdGlvbiAiU3lzdGVtIEV2ZW50cyIgdG8gdGVsbCBwcm9jZXNzICJTaW11bGF0b3IiIHRvIHNldCBmcm9udG1vc3QgdG8gdHJ1ZScsJ3RlbGwgYXBwbGljYXRpb24gIlN5c3RlbSBFdmVudHMiIHRvIHRlbGwgcHJvY2VzcyAiU2ltdWxhdG9yIiB0byBwZXJmb3JtIGFjdGlvbiAiQVhSYWlzZSIgb2YgKGZpcnN0IHdpbmRvdyB3aG9zZSBuYW1lIGNvbnRhaW5zICJ3YXRjaE9TIiknLCd0ZWxsIGFwcGxpY2F0aW9uICJTeXN0ZW0gRXZlbnRzIiB0byB0ZWxsIHByb2Nlc3MgIlNpbXVsYXRvciIgdG8gY2xpY2sgbWVudSBpdGVtICJIb21lIiBvZiBtZW51ICJEZXZpY2UiIG9mIG1lbnUgYmFyIGl0ZW0gIkRldmljZSIgb2YgbWVudSBiYXIgMSddLm1hcCgoSik9PmAtZSAnJHtKfSdgKS5yZWR1Y2UoKEosUSk9PmAke0p9ICR7UX1gLCJvc2FzY3JpcHQiKX12YXIgRiQ9WCgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46WCgicGF0aCIse2Q6Ik0zIDEwLjUgMTIgM2w5IDcuNVYyMGExIDEgMCAwIDEtMSAxaC01di03aC02djdINGExIDEgMCAwIDEtMS0xeiJ9KX0pLGskPVgoInN2ZyIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIsdmlld0JveDoiMCAwIDQ0IDQ0IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOlgoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTQzLjY4NzUgMTIuNDY4OFY4LjI3MzQ0QzQzLjY4NzUgNS43MjY1NiA0Mi45NTMxIDMuNzEwOTQgNDEuNDg0NCAyLjIyNjU2QzQwLjAxNTYgMC43NDIxODggMzggMCAzNS40Mzc1IDBIMzEuMTQ4NEMzMC42MDE2IDAgMzAuMTMyOCAwLjE5NTMxMiAyOS43NDIyIDAuNTg1OTM4QzI5LjM1MTYgMC45NzY1NjIgMjkuMTU2MiAxLjQ0NTMxIDI5LjE1NjIgMS45OTIxOUMyOS4xNTYyIDIuNTIzNDQgMjkuMzUxNiAyLjk4NDM4IDI5Ljc0MjIgMy4zNzVDMzAuMTMyOCAzLjc2NTYyIDMwLjYwMTYgMy45NjA5NCAzMS4xNDg0IDMuOTYwOTRIMzUuNDM3NUMzNi43ODEyIDMuOTYwOTQgMzcuODM1OSA0LjM0Mzc1IDM4LjYwMTYgNS4xMDkzOEMzOS4zNTE2IDUuODc1IDM5LjcyNjYgNi45Mjk2OSAzOS43MjY2IDguMjczNDRWMTIuNDY4OEMzOS43MjY2IDEzIDM5LjkyMTkgMTMuNDYwOSA0MC4zMTI1IDEzLjg1MTZDNDAuNzAzMSAxNC4yNDIyIDQxLjE3MTkgMTQuNDM3NSA0MS43MTg4IDE0LjQzNzVDNDIuMjUgMTQuNDM3NSA0Mi43MTA5IDE0LjI0MjIgNDMuMTAxNiAxMy44NTE2QzQzLjQ5MjIgMTMuNDYwOSA0My42ODc1IDEzIDQzLjY4NzUgMTIuNDY4OFpNMCAxMi40Njg4QzAgMTMgMC4xOTUzMTIgMTMuNDYwOSAwLjU4NTkzOCAxMy44NTE2QzAuOTc2NTYyIDE0LjI0MjIgMS40Mzc1IDE0LjQzNzUgMS45Njg3NSAxNC40Mzc1QzIuNSAxNC40Mzc1IDIuOTYwOTQgMTQuMjQyMiAzLjM1MTU2IDEzLjg1MTZDMy43NDIxOSAxMy40NjA5IDMuOTM3NSAxMyAzLjkzNzUgMTIuNDY4OFY4LjI3MzQ0QzMuOTM3NSA2LjkyOTY5IDQuMzIwMzEgNS44NzUgNS4wODU5NCA1LjEwOTM4QzUuODM1OTQgNC4zNDM3NSA2Ljg5MDYyIDMuOTYwOTQgOC4yNSAzLjk2MDk0SDEyLjUzOTFDMTMuMDg1OSAzLjk2MDk0IDEzLjU1NDcgMy43NjU2MiAxMy45NDUzIDMuMzc1QzE0LjMyMDMgMi45ODQzOCAxNC41MDc4IDIuNTIzNDQgMTQuNTA3OCAxLjk5MjE5QzE0LjUwNzggMS40NDUzMSAxNC4zMjAzIDAuOTc2NTYyIDEzLjk0NTMgMC41ODU5MzhDMTMuNTU0NyAwLjE5NTMxMiAxMy4wODU5IDAgMTIuNTM5MSAwSDguMjVDNS42ODc1IDAgMy42NzE4OCAwLjc0MjE4OCAyLjIwMzEyIDIuMjI2NTZDMC43MzQzNzUgMy43MTA5NCAwIDUuNzI2NTYgMCA4LjI3MzQ0VjEyLjQ2ODhaTTQzLjY4NzUgMzEuMjQyMkM0My42ODc1IDMwLjcxMDkgNDMuNDkyMiAzMC4yNSA0My4xMDE2IDI5Ljg1OTRDNDIuNzEwOSAyOS40Njg4IDQyLjI1IDI5LjI3MzQgNDEuNzE4OCAyOS4yNzM0QzQxLjE3MTkgMjkuMjczNCA0MC43MDMxIDI5LjQ2ODggNDAuMzEyNSAyOS44NTk0QzM5LjkyMTkgMzAuMjUgMzkuNzI2NiAzMC43MTA5IDM5LjcyNjYgMzEuMjQyMlYzNS40Mzc1QzM5LjcyNjYgMzYuNzgxMiAzOS4zNTE2IDM3LjgzNTkgMzguNjAxNiAzOC42MDE2QzM3LjgzNTkgMzkuMzY3MiAzNi43ODEyIDM5Ljc1IDM1LjQzNzUgMzkuNzVIMzEuMTQ4NEMzMC42MDE2IDM5Ljc1IDMwLjEzMjggMzkuOTQ1MyAyOS43NDIyIDQwLjMzNTlDMjkuMzUxNiA0MC43MjY2IDI5LjE1NjIgNDEuMTg3NSAyOS4xNTYyIDQxLjcxODhDMjkuMTU2MiA0Mi4yNjU2IDI5LjM1MTYgNDIuNzI2NiAyOS43NDIyIDQzLjEwMTZDMzAuMTMyOCA0My40OTIyIDMwLjYwMTYgNDMuNjg3NSAzMS4xNDg0IDQzLjY4NzVIMzUuNDM3NUMzOCA0My42ODc1IDQwLjAxNTYgNDIuOTQ1MyA0MS40ODQ0IDQxLjQ2MDlDNDIuOTUzMSAzOS45OTIyIDQzLjY4NzUgMzcuOTg0NCA0My42ODc1IDM1LjQzNzVWMzEuMjQyMlpNMCAzMS4yNDIyVjM1LjQzNzVDMCAzNy45ODQ0IDAuNzM0Mzc1IDM5Ljk5MjIgMi4yMDMxMiA0MS40NjA5QzMuNjcxODggNDIuOTQ1MyA1LjY4NzUgNDMuNjg3NSA4LjI1IDQzLjY4NzVIMTIuNTM5MUMxMy4wODU5IDQzLjY4NzUgMTMuNTU0NyA0My40OTIyIDEzLjk0NTMgNDMuMTAxNkMxNC4zMjAzIDQyLjcyNjYgMTQuNTA3OCA0Mi4yNjU2IDE0LjUwNzggNDEuNzE4OEMxNC41MDc4IDQxLjE4NzUgMTQuMzIwMyA0MC43MjY2IDEzLjk0NTMgNDAuMzM1OUMxMy41NTQ3IDM5Ljk0NTMgMTMuMDg1OSAzOS43NSAxMi41MzkxIDM5Ljc1SDguMjVDNi44OTA2MiAzOS43NSA1LjgzNTk0IDM5LjM2NzIgNS4wODU5NCAzOC42MDE2QzQuMzIwMzEgMzcuODM1OSAzLjkzNzUgMzYuNzgxMiAzLjkzNzUgMzUuNDM3NVYzMS4yNDIyQzMuOTM3NSAzMC43MTA5IDMuNzQyMTkgMzAuMjUgMy4zNTE1NiAyOS44NTk0QzIuOTYwOTQgMjkuNDY4OCAyLjUgMjkuMjczNCAxLjk2ODc1IDI5LjI3MzRDMS40Mzc1IDI5LjI3MzQgMC45NzY1NjIgMjkuNDY4OCAwLjU4NTkzOCAyOS44NTk0QzAuMTk1MzEyIDMwLjI1IDAgMzAuNzEwOSAwIDMxLjI0MjJaTTMxLjU5MzggMzEuODA0N0MzMi43ODEyIDMxLjgwNDcgMzMuNjcxOSAzMS41MTU2IDM0LjI2NTYgMzAuOTM3NUMzNC44NTk0IDMwLjM0MzggMzUuMTU2MiAyOS40Njg4IDM1LjE1NjIgMjguMzEyNVYxNi43MTA5QzM1LjE1NjIgMTUuNTM5MSAzNC44NTk0IDE0LjY2NDEgMzQuMjY1NiAxNC4wODU5QzMzLjY3MTkgMTMuNDkyMiAzMi43ODEyIDEzLjE5NTMgMzEuNTkzOCAxMy4xOTUzSDI4Ljg5ODRDMjguNDYwOSAxMy4xOTUzIDI4LjE0ODQgMTMuMTQwNiAyNy45NjA5IDEzLjAzMTJDMjcuNzU3OCAxMi45MjE5IDI3LjUyMzQgMTIuNzI2NiAyNy4yNTc4IDEyLjQ0NTNMMjYuMzY3MiAxMS41MDc4QzI2LjA4NTkgMTEuMTk1MyAyNS43ODEyIDEwLjk2ODggMjUuNDUzMSAxMC44MjgxQzI1LjEwOTQgMTAuNjcxOSAyNC42NTYyIDEwLjU5MzggMjQuMDkzOCAxMC41OTM4SDE5LjYxNzJDMTkuMDU0NyAxMC41OTM4IDE4LjYwOTQgMTAuNjcxOSAxOC4yODEyIDEwLjgyODFDMTcuOTM3NSAxMC45Njg4IDE3LjYyNSAxMS4xOTUzIDE3LjM0MzggMTEuNTA3OEwxNi40NzY2IDEyLjQ0NTNDMTYuMjEwOSAxMi43NDIyIDE1Ljk3NjYgMTIuOTQ1MyAxNS43NzM0IDEzLjA1NDdDMTUuNTU0NyAxMy4xNDg0IDE1LjIzNDQgMTMuMTk1MyAxNC44MTI1IDEzLjE5NTNIMTIuMDQ2OUMxMC44OTA2IDEzLjE5NTMgMTAuMDE1NiAxMy40OTIyIDkuNDIxODggMTQuMDg1OUM4LjgxMjUgMTQuNjY0MSA4LjUwNzgxIDE1LjUzOTEgOC41MDc4MSAxNi43MTA5VjI4LjMxMjVDOC41MDc4MSAyOS40Njg4IDguODEyNSAzMC4zNDM4IDkuNDIxODggMzAuOTM3NUMxMC4wMTU2IDMxLjUxNTYgMTAuODkwNiAzMS44MDQ3IDEyLjA0NjkgMzEuODA0N0gzMS41OTM4Wk0yMS43OTY5IDI4Ljk0NTNDMjAuNTkzOCAyOC45NDUzIDE5LjUgMjguNjY0MSAxOC41MTU2IDI4LjEwMTZDMTcuNTE1NiAyNy41MjM0IDE2LjcyNjYgMjYuNzQyMiAxNi4xNDg0IDI1Ljc1NzhDMTUuNTU0NyAyNC43NTc4IDE1LjI1NzggMjMuNjMyOCAxNS4yNTc4IDIyLjM4MjhDMTUuMjU3OCAyMS4xNzk3IDE1LjU1NDcgMjAuMDg1OSAxNi4xNDg0IDE5LjEwMTZDMTYuNzI2NiAxOC4xMDE2IDE3LjUxNTYgMTcuMzEyNSAxOC41MTU2IDE2LjczNDRDMTkuNSAxNi4xNDA2IDIwLjU5MzggMTUuODQzOCAyMS43OTY5IDE1Ljg0MzhDMjMuMDE1NiAxNS44NDM4IDI0LjEyNSAxNi4xNDA2IDI1LjEyNSAxNi43MzQ0QzI2LjEwOTQgMTcuMzEyNSAyNi44OTg0IDE4LjEwMTYgMjcuNDkyMiAxOS4xMDE2QzI4LjA3MDMgMjAuMDg1OSAyOC4zNTk0IDIxLjE3OTcgMjguMzU5NCAyMi4zODI4QzI4LjM1OTQgMjMuNjE3MiAyOC4wNzAzIDI0LjcyNjYgMjcuNDkyMiAyNS43MTA5QzI2Ljg5ODQgMjYuNjk1MyAyNi4xMDk0IDI3LjQ4NDQgMjUuMTI1IDI4LjA3ODFDMjQuMTI1IDI4LjY1NjIgMjMuMDE1NiAyOC45NDUzIDIxLjc5NjkgMjguOTQ1M1pNMjEuODIwMyAyNi45MDYyQzIyLjY0ODQgMjYuOTA2MiAyMy40MDYyIDI2LjcxMDkgMjQuMDkzOCAyNi4zMjAzQzI0Ljc4MTIgMjUuOTE0MSAyNS4zMjgxIDI1LjM2NzIgMjUuNzM0NCAyNC42Nzk3QzI2LjEyNSAyMy45OTIyIDI2LjMyMDMgMjMuMjI2NiAyNi4zMjAzIDIyLjM4MjhDMjYuMzIwMyAyMS41NzAzIDI2LjEyNSAyMC44MjAzIDI1LjczNDQgMjAuMTMyOEMyNS4zMjgxIDE5LjQ0NTMgMjQuNzgxMiAxOC45MDYyIDI0LjA5MzggMTguNTE1NkMyMy40MDYyIDE4LjEwOTQgMjIuNjQ4NCAxNy45MDYyIDIxLjgyMDMgMTcuOTA2MkMyMC45OTIyIDE3LjkwNjIgMjAuMjQyMiAxOC4xMDk0IDE5LjU3MDMgMTguNTE1NkMxOC44ODI4IDE4LjkwNjIgMTguMzM1OSAxOS40NDUzIDE3LjkyOTcgMjAuMTMyOEMxNy41MjM0IDIwLjgyMDMgMTcuMzIwMyAyMS41NzAzIDE3LjMyMDMgMjIuMzgyOEMxNy4zMjAzIDIzLjIyNjYgMTcuNTIzNCAyMy45OTIyIDE3LjkyOTcgMjQuNjc5N0MxOC4zMzU5IDI1LjM2NzIgMTguODgyOCAyNS45MTQxIDE5LjU3MDMgMjYuMzIwM0MyMC4yNDIyIDI2LjcxMDkgMjAuOTkyMiAyNi45MDYyIDIxLjgyMDMgMjYuOTA2MlpNMTIuNjMyOCAxOC45ODQ0QzEyLjIxMDkgMTguOTg0NCAxMS44NTk0IDE4LjgzNTkgMTEuNTc4MSAxOC41MzkxQzExLjI4MTIgMTguMjQyMiAxMS4xMzI4IDE3Ljg5MDYgMTEuMTMyOCAxNy40ODQ0QzExLjEzMjggMTcuMDYyNSAxMS4yODEyIDE2LjcxMDkgMTEuNTc4MSAxNi40Mjk3QzExLjg1OTQgMTYuMTMyOCAxMi4yMTA5IDE1Ljk4NDQgMTIuNjMyOCAxNS45ODQ0QzEzLjAzOTEgMTUuOTg0NCAxMy4zOTA2IDE2LjEzMjggMTMuNjg3NSAxNi40Mjk3QzEzLjk4NDQgMTYuNzEwOSAxNC4xMzI4IDE3LjA2MjUgMTQuMTMyOCAxNy40ODQ0QzE0LjEzMjggMTcuODkwNiAxMy45ODQ0IDE4LjI0MjIgMTMuNjg3NSAxOC41MzkxQzEzLjM5MDYgMTguODM1OSAxMy4wMzkxIDE4Ljk4NDQgMTIuNjMyOCAxOC45ODQ0WiJ9KX0pLE0kPVgoInN2ZyIse3dpZHRoOiIyMSIsaGVpZ2h0OiIyMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46W1goInBhdGgiLHtkOiJNMTIgNUg2YTIgMiAwIDAgMC0yIDJ2MyJ9KSxYKCJwYXRoIix7ZDoibTkgOCAzLTMtMy0zIn0pLFgoInBhdGgiLHtkOiJNNCAxNHY0YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJoLTIifSldfSksTyQ9VzAoZnVuY3Rpb24oe29uQ2xpY2s6SiwuLi5RfSxaKXtsZXQgSz1PNSgiSG9tZUJ1dHRvbiIpO3JldHVybiBYKEE1LHtyZWY6WiwiYXJpYS1sYWJlbCI6IkhvbWUiLG9uQ2xpY2s6KFkpPT57aWYoSj8uKFkpLFkuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47Sy5leGVjKEgkKEsuZGV2aWNlVHlwZSxLLmRldmljZVVkaWQpKX0sLi4uUSxjaGlsZHJlbjpGJH0pfSksQSQ9VzAoZnVuY3Rpb24oe29uQ2xpY2s6SiwuLi5RfSxaKXtsZXQgSz1PNSgiU2NyZWVuc2hvdEJ1dHRvbiIpO3JldHVybiBYKEE1LHtyZWY6WiwiYXJpYS1sYWJlbCI6IlNjcmVlbnNob3QiLG9uQ2xpY2s6KFkpPT57aWYoSj8uKFkpLFkuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47aWYoSy5kZXZpY2VVZGlkKUsuZXhlYyhgeGNydW4gc2ltY3RsIGlvICR7Sy5kZXZpY2VVZGlkfSBzY3JlZW5zaG90IH4vRGVza3RvcC9zZXJ2ZS1zaW0tc2NyZWVuc2hvdC0kKGRhdGUgKyVzKS5wbmdgKX0sLi4uUSxjaGlsZHJlbjprJH0pfSksVyQ9VzAoZnVuY3Rpb24oe29uQ2xpY2s6Sixmb3JjZURpc2FibGVkOlEsLi4uWn0sSyl7bGV0IFk9TzUoIlJvdGF0ZUJ1dHRvbiIpLHE9WS5kZXZpY2VUeXBlPT09IndhdGNoInx8WS5kZXZpY2VUeXBlPT09InZpc2lvbiIsW0csTl09QSgicG9ydHJhaXQiKTtyZXR1cm4gYigoKT0+e04oWS5vcmllbnRhdGlvbj8/InBvcnRyYWl0Iil9LFtZLmRldmljZVVkaWQsWS5vcmllbnRhdGlvbl0pLFgoQTUse3JlZjpLLCJhcmlhLWxhYmVsIjoiUm90YXRlIGRldmljZSIsZm9yY2VEaXNhYmxlZDpRfHxxLG9uQ2xpY2s6KEIpPT57aWYoSj8uKEIpLEIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47aWYoIVkuZGV2aWNlVWRpZHx8cSlyZXR1cm47bGV0IEw9RDJbWS5vcmllbnRhdGlvbj8/R107aWYoTihMKSxZLm9uUm90YXRlKVkub25Sb3RhdGUoTCk7ZWxzZSBZLmV4ZWMoYHNlcnZlLXNpbSByb3RhdGUgJHtMfSAtZCAke1kuZGV2aWNlVWRpZH1gKX0sLi4uWixjaGlsZHJlbjpNJH0pfSkscjE9ViQ7cjEuVGl0bGU9TiQ7cjEuQWN0aW9ucz16JDtyMS5CdXR0b249QTU7cjEuSG9tZUJ1dHRvbj1PJDtyMS5TY3JlZW5zaG90QnV0dG9uPUEkO3IxLlJvdGF0ZUJ1dHRvbj1XJDt2YXIgVzU9KC4uLiQpPT4kLmZpbHRlcigoSixRLFopPT57cmV0dXJuIEJvb2xlYW4oSikmJkoudHJpbSgpIT09IiImJlouaW5kZXhPZihKKT09PVF9KS5qb2luKCIgIikudHJpbSgpO3ZhciBJOT0oJCk9PiQucmVwbGFjZSgvKFthLXowLTldKShbQS1aXSkvZywiJDEtJDIiKS50b0xvd2VyQ2FzZSgpO3ZhciBFOT0oJCk9PiQucmVwbGFjZSgvXihbQS1aXSl8W1xzLV9dKyhcdykvZywoSixRLFopPT5aP1oudG9VcHBlckNhc2UoKTpRLnRvTG93ZXJDYXNlKCkpO3ZhciBQMz0oJCk9PntsZXQgSj1FOSgkKTtyZXR1cm4gSi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStKLnNsaWNlKDEpfTt2YXIgXzU9e3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MjQsaGVpZ2h0OjI0LHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCJ9O3ZhciB5OT0oJCk9Pntmb3IobGV0IEogaW4gJClpZihKLnN0YXJ0c1dpdGgoImFyaWEtIil8fEo9PT0icm9sZSJ8fEo9PT0idGl0bGUiKXJldHVybiEwO3JldHVybiExfTt2YXIgXyQ9ejAoe30pO3ZhciBiOT0oKT0+VTAoXyQpO3ZhciBTOT1XMCgoe2NvbG9yOiQsc2l6ZTpKLHN0cm9rZVdpZHRoOlEsYWJzb2x1dGVTdHJva2VXaWR0aDpaLGNsYXNzTmFtZTpLPSIiLGNoaWxkcmVuOlksaWNvbk5vZGU6cSwuLi5HfSxOKT0+e2xldHtzaXplOkI9MjQsc3Ryb2tlV2lkdGg6TD0yLGFic29sdXRlU3Ryb2tlV2lkdGg6Vj0hMSxjb2xvcjpVPSJjdXJyZW50Q29sb3IiLGNsYXNzTmFtZTp6PSIifT1iOSgpPz97fSxrPVo/P1Y/TnVtYmVyKFE/P0wpKjI0L051bWJlcihKPz9CKTpRPz9MO3JldHVybiB1MSgic3ZnIix7cmVmOk4sLi4uXzUsd2lkdGg6Sj8/Qj8/XzUud2lkdGgsaGVpZ2h0Oko/P0I/P181LmhlaWdodCxzdHJva2U6JD8/VSxzdHJva2VXaWR0aDprLGNsYXNzTmFtZTpXNSgibHVjaWRlIix6LEspLC4uLiFZJiYheTkoRykmJnsiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sLi4uR30sWy4uLnEubWFwKChbSCxDXSk9PnUxKEgsQykpLC4uLkFycmF5LmlzQXJyYXkoWSk/WTpbWV1dKX0pO3ZhciBGMT0oJCxKKT0+e2xldCBRPVcwKCh7Y2xhc3NOYW1lOlosLi4uS30sWSk9PnUxKFM5LHtyZWY6WSxpY29uTm9kZTpKLGNsYXNzTmFtZTpXNShgbHVjaWRlLSR7STkoUDMoJCkpfWAsYGx1Y2lkZS0keyR9YCxaKSwuLi5LfSkpO3JldHVybiBRLmRpc3BsYXlOYW1lPVAzKCQpLFF9O3ZhciBQJD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiIsa2V5OiJhZml0djcifV0sWyJwYXRoIix7ZDoiTTkgM3YxOCIsa2V5OiJmaDNocWEifV1dLEUwPUYxKCJwYW5lbC1sZWZ0IixQJCk7dmFyIEQkPVtbInBhdGgiLHtkOiJNMTIuMDM0IDEyLjY4MWEuNDk4LjQ5OCAwIDAgMSAuNjQ3LS42NDdsOSAzLjVhLjUuNSAwIDAgMS0uMDMzLjk0M2wtMy40NDQgMS4wNjhhMSAxIDAgMCAwLS42Ni42NmwtMS4wNjcgMy40NDNhLjUuNSAwIDAgMS0uOTQzLjAzM3oiLGtleToieHduemlwIn1dLFsicGF0aCIse2Q6Ik0yMSAxMVY1YTIgMiAwIDAgMC0yLTJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNiIsa2V5OiIxNHJzdnEifV1dLG0wPUYxKCJzcXVhcmUtbW91c2UtcG9pbnRlciIsRCQpO3ZhciB3JD1bWyJwYXRoIix7ZDoibTIxLjczIDE4LTgtMTRhMiAyIDAgMCAwLTMuNDggMGwtOCAxNEEyIDIgMCAwIDAgNCAyMWgxNmEyIDIgMCAwIDAgMS43My0zIixrZXk6Indtb2VucSJ9XSxbInBhdGgiLHtkOiJNMTIgOXY0IixrZXk6Imp1enB1NyJ9XSxbInBhdGgiLHtkOiJNMTIgMTdoLjAxIixrZXk6InAzMnAwNSJ9XV0scDA9RjEoInRyaWFuZ2xlLWFsZXJ0Iix3JCk7dmFyIFQkPVtbInJlY3QiLHt4OiIyIix5OiI0Iix3aWR0aDoiMjAiLGhlaWdodDoiMTYiLHJ4OiIyIixrZXk6Iml6eGxhbyJ9XSxbInBhdGgiLHtkOiJNMTAgNHY0IixrZXk6InBwOHU4MCJ9XSxbInBhdGgiLHtkOiJNMiA4aDIwIixrZXk6ImQxMWNzNyJ9XSxbInBhdGgiLHtkOiJNNiA0djQiLGtleToiMXN2dGp3In1dXSxUMj1GMSgiYXBwLXdpbmRvdyIsVCQpO3ZhciBJJD1bWyJwYXRoIix7ZDoiTTcgN2gxMHYxMCIsa2V5OiIxdGl2bjkifV0sWyJwYXRoIix7ZDoiTTcgMTcgMTcgNyIsa2V5OiIxdmtpemEifV1dLEkyPUYxKCJhcnJvdy11cC1yaWdodCIsSSQpO3ZhciBFJD1bWyJwYXRoIix7ZDoiTTIwIDYgOSAxN2wtNS01IixrZXk6IjFnbWYyYyJ9XV0sRTI9RjEoImNoZWNrIixFJCk7dmFyIHkkPVtbInBhdGgiLHtkOiJtNiA5IDYgNiA2LTYiLGtleToicXJ1bnNsIn1dXSx5Mj1GMSgiY2hldnJvbi1kb3duIix5JCk7dmFyIGIkPVtbInBhdGgiLHtkOiJtOSAxOCA2LTYtNi02IixrZXk6Im10aGh3cSJ9XV0sYjI9RjEoImNoZXZyb24tcmlnaHQiLGIkKTt2YXIgUyQ9W1sicGF0aCIse2Q6Ik0xMiA2YTIgMiAwIDAgMSAzLjQxNC0xLjQxNGw2IDZhMiAyIDAgMCAxIDAgMi44MjhsLTYgNkEyIDIgMCAwIDEgMTIgMTh6IixrZXk6ImIxOWg1cSJ9XSxbInBhdGgiLHtkOiJNMiA2YTIgMiAwIDAgMSAzLjQxNC0xLjQxNGw2IDZhMiAyIDAgMCAxIDAgMi44MjhsLTYgNkEyIDIgMCAwIDEgMiAxOHoiLGtleToiaDdoNWdlIn1dXSxTMj1GMSgiZmFzdC1mb3J3YXJkIixTJCk7dmFyIHgkPVtbInBhdGgiLHtkOiJtMyA3IDUgNS01IDVWNyIsa2V5OiJjb3VoaTcifV0sWyJwYXRoIix7ZDoibTIxIDctNSA1IDUgNVY3IixrZXk6IjZvdWlhNyJ9XSxbInBhdGgiLHtkOiJNMTIgMjB2MiIsa2V5OiIxbGgxa2cifV0sWyJwYXRoIix7ZDoiTTEyIDE0djIiLGtleToiOGpjeHVkIn1dLFsicGF0aCIse2Q6Ik0xMiA4djIiLGtleToiMXdvcWl2In1dLFsicGF0aCIse2Q6Ik0xMiAydjIiLGtleToidHVzMDNtIn1dXSx4Mj1GMSgiZmxpcC1ob3Jpem9udGFsLTIiLHgkKTt2YXIgaiQ9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIixrZXk6IjFtZ2xheSJ9XSxbInBhdGgiLHtkOiJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIsa2V5OiIxM28xemwifV0sWyJwYXRoIix7ZDoiTTIgMTJoMjAiLGtleToiOWk0cHU0In1dXSxqMj1GMSgiZ2xvYmUiLGokKTt2YXIgdiQ9W1sicGF0aCIse2Q6Im0yMiAxMS0xLjI5Ni0xLjI5NmEyLjQgMi40IDAgMCAwLTMuNDA4IDBMMTEgMTYiLGtleToiOWt6eTM1In1dLFsicGF0aCIse2Q6Ik00IDhhMiAyIDAgMCAwLTIgMnYxMGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTIiLGtleToiMXQwZjB0In1dLFsiY2lyY2xlIix7Y3g6IjEzIixjeToiNyIscjoiMSIsZmlsbDoiY3VycmVudENvbG9yIixrZXk6IjFvYnVzNiJ9XSxbInJlY3QiLHt4OiI4Iix5OiIyIix3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHJ4OiIyIixrZXk6IjFndmhieSJ9XV0sdjI9RjEoImltYWdlcyIsdiQpO3ZhciBSJD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiIsa2V5OiJhZml0djcifV0sWyJwYXRoIix7ZDoiTTE1IDN2MTgiLGtleToiMTRudnAwIn1dXSxSMj1GMSgicGFuZWwtcmlnaHQiLFIkKTt2YXIgaCQ9W1sicGF0aCIse2Q6Ik0zIDEyYTkgOSAwIDEgMCA5LTkgOS43NSA5Ljc1IDAgMCAwLTYuNzQgMi43NEwzIDgiLGtleToiMTM1N2UzIn1dLFsicGF0aCIse2Q6Ik0zIDN2NWg1IixrZXk6IjF4aHE4YSJ9XV0saDI9RjEoInJvdGF0ZS1jY3ciLGgkKTt2YXIgZyQ9W1sicGF0aCIse2Q6Im0yMSAyMS00LjM0LTQuMzQiLGtleToiMTRqN3JqIn1dLFsiY2lyY2xlIix7Y3g6IjExIixjeToiMTEiLHI6IjgiLGtleToiNGVqOTd1In1dXSxnMj1GMSgic2VhcmNoIixnJCk7dmFyIGYkPVtbInBhdGgiLHtkOiJNMTAgNUgzIixrZXk6IjFxZ2ZhdyJ9XSxbInBhdGgiLHtkOiJNMTIgMTlIMyIsa2V5OiJ5aG1uMWoifV0sWyJwYXRoIix7ZDoiTTE0IDN2NCIsa2V5OiIxc3VhMDMifV0sWyJwYXRoIix7ZDoiTTE2IDE3djQiLGtleToiMXEwcjE0In1dLFsicGF0aCIse2Q6Ik0yMSAxMmgtOSIsa2V5OiIxbzRsc3EifV0sWyJwYXRoIix7ZDoiTTIxIDE5aC01IixrZXk6IjFybHQxcCJ9XSxbInBhdGgiLHtkOiJNMjEgNWgtNyIsa2V5OiIxb3N6ejIifV0sWyJwYXRoIix7ZDoiTTggMTB2NCIsa2V5OiJ0Z3B4cWsifV0sWyJwYXRoIix7ZDoiTTggMTJIMyIsa2V5OiJhN3M0amIifV1dLGowPUYxKCJzbGlkZXJzLWhvcml6b250YWwiLGYkKTt2YXIgbSQ9W1sicGF0aCIse2Q6Ik0xMiAzdjEyIixrZXk6IjF4MGo1cyJ9XSxbInBhdGgiLHtkOiJtMTcgOC01LTUtNSA1IixrZXk6IjdxOTdyOCJ9XSxbInBhdGgiLHtkOiJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCIsa2V5OiJpaDduM2gifV1dLGYyPUYxKCJ1cGxvYWQiLG0kKTt2YXIgcCQ9W1sicGF0aCIse2Q6Im0xNiAxMyA1LjIyMyAzLjQ4MmEuNS41IDAgMCAwIC43NzctLjQxNlY3Ljg3YS41LjUgMCAwIDAtLjc1Mi0uNDMyTDE2IDEwLjUiLGtleToiZnR5bWVjIn1dLFsicmVjdCIse3g6IjIiLHk6IjYiLHdpZHRoOiIxNCIsaGVpZ2h0OiIxMiIscng6IjIiLGtleToiMTU4eDAxIn1dXSxyMD1GMSgidmlkZW8iLHAkKTt2YXIgdSQ9W1sicGF0aCIse2Q6Ik0xOCA2IDYgMTgiLGtleToiMWJsNWY4In1dLFsicGF0aCIse2Q6Im02IDYgMTIgMTIiLGtleToiZDhiazZ2In1dXSxHMD1GMSgieCIsdSQpO2Z1bmN0aW9uIG0yKHtvcGVuOiR9KXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjEwIixoZWlnaHQ6IjEwIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjbGFzc05hbWU6ImxlbS1jaGV2cm9uIHRleHQtd2hpdGUvNTAiLHN0eWxlOnt0cmFuc2Zvcm06JD8icm90YXRlKDE4MGRlZykiOiJyb3RhdGUoMGRlZykifSxjaGlsZHJlbjpYKCJwb2x5bGluZSIse3BvaW50czoiNiA5IDEyIDE1IDE4IDkifSl9KX1mdW5jdGlvbiBQNSh7ZGlyOiR9KXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjkiLGhlaWdodDoiOSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJjdXJyZW50Q29sb3IiLGNsYXNzTmFtZToibXItWzNweF0iLGNoaWxkcmVuOiQ9PT0idXAiP1goInBvbHlnb24iLHtwb2ludHM6IjEyLDQgMjAsMTggNCwxOCJ9KTpYKCJwb2x5Z29uIix7cG9pbnRzOiI0LDYgMjAsNiAxMiwyMCJ9KX0pfWZ1bmN0aW9uIHAyKCl7cmV0dXJuIFgoInN2ZyIse3dpZHRoOiIxMSIsaGVpZ2h0OiIxMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJjdXJyZW50Q29sb3IiLGNoaWxkcmVuOlgoInBvbHlnb24iLHtwb2ludHM6IjYsNCAyMCwxMiA2LDIwIn0pfSl9ZnVuY3Rpb24gRDMoKXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6ImN1cnJlbnRDb2xvciIsY2hpbGRyZW46W1goInJlY3QiLHt4OiI2Iix5OiI0Iix3aWR0aDoiNCIsaGVpZ2h0OiIxNiJ9KSxYKCJyZWN0Iix7eDoiMTQiLHk6IjQiLHdpZHRoOiI0IixoZWlnaHQ6IjE2In0pXX0pfWZ1bmN0aW9uIHUyKCl7cmV0dXJuIFgoInN2ZyIse3dpZHRoOiIxMCIsaGVpZ2h0OiIxMCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJjdXJyZW50Q29sb3IiLGNoaWxkcmVuOlgoInJlY3QiLHt4OiI1Iix5OiI1Iix3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHJ4OiIxLjUifSl9KX1mdW5jdGlvbiB3Mygpe3JldHVybiBYKFMyLHtzaXplOjEyLHN0cm9rZVdpZHRoOjIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KX1mdW5jdGlvbiBUMygpe3JldHVybiBYKCJzdmciLHt3aWR0aDoiOSIsaGVpZ2h0OiIxNCIsdmlld0JveDoiNCAyIDkgMTMiLGZpbGw6ImN1cnJlbnRDb2xvciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjpYKCJwYXRoIix7ZDoiTTYuMDA4NTIgMTQuODA1NEM1Ljg5MTgxIDE0LjkzNSA1Ljc1ODE1IDE0Ljk5OTggNS42MDc1NiAxNC45OTk4QzUuNDU2OTYgMTUuMDAzMyA1LjMyMzMgMTQuOTYxMyA1LjIwNjU5IDE0Ljg3MzdDNS4wOTM2NCAxNC43ODYxIDUuMDI1ODcgMTQuNjcyMyA1LjAwMzI4IDE0LjUzMjJDNC45ODQ0NiAxNC4zOTIxIDUuMDQ2NTggMTQuMjQ1IDUuMTg5NjUgMTQuMDkwOUw2Ljk0NTk5IDEyLjE1MjJMNy4yNDUzIDEwLjg3NTVMOC4xOTk3MSAxMS45ODkzTDguMDU4NTMgMTIuMzkzOUM4LjAyMDg4IDEyLjQ5NTUgNy45ODY5OSAxMi41NzA4IDcuOTU2ODcgMTIuNjE5OEM3LjkzMDUyIDEyLjY2ODggNy44NzQwNCAxMi43NDA2IDcuNzg3NDUgMTIuODM1Mkw2LjAwODUyIDE0LjgwNTRaTTEwLjM0NTcgMTQuNjQyNUw5LjEwMzI5IDEyLjMwNDZDOS4wNzY5NCAxMi4yNjI1IDkuMDU0MzUgMTIuMjIyMyA5LjAzNTUzIDEyLjE4MzdDOS4wMTY3IDEyLjE0NTIgOC45NzcxNyAxMi4wOTA5IDguOTE2OTMgMTIuMDIwOUw3LjcxOTY4IDEwLjYxODFDNy40OTM3OSAxMC4zNTU0IDcuMzM3NTQgMTAuMTI5NSA3LjI1MDk1IDkuOTQwMzRDNy4xNjQzNSA5Ljc0NzcgNy4xMzQyNCA5LjQ5OTAxIDcuMTYwNTkgOS4xOTQyOUw3LjI2MjI0IDcuOTgwNjVDNy4yNjk3NyA3LjkwNzEgNy4yMzIxMiA3Ljg1NDU2IDcuMTQ5MjkgNy44MjMwNEM3LjA2NjQ3IDcuNzkxNTEgNi45ODU1MiA3LjgwOTAzIDYuOTA2NDYgNy44NzU1N0w2LjQ3MTYxIDguMjQzMzRMNi4zNDE3MiA5LjY3MjM5QzYuMzIyODkgOS44NDc1MiA2LjI2NDU0IDkuOTc4ODcgNi4xNjY2NSAxMC4wNjY0QzYuMDY4NzYgMTAuMTU0IDUuOTM4ODcgMTAuMTkyNSA1Ljc3Njk4IDEwLjE4MkM1LjYxMTMyIDEwLjE3NSA1LjQ4MzMxIDEwLjExOSA1LjM5Mjk1IDEwLjAxMzlDNS4zMDYzNiA5LjkwODgyIDUuMjY4NzEgOS43NzM5NyA1LjI4MDAxIDkuNjA5MzVMNS4zODczMSA4LjMwNjM5QzUuNDAyMzcgOC4xMjc3NiA1LjQzODEzIDcuOTc1NCA1LjQ5NDYxIDcuODQ5MzFDNS41NTQ4NSA3LjcyMzIxIDUuNjYwMjYgNy41OTE4NyA1LjgxMDg2IDcuNDU1MjdMNi43MTQ0NSA2LjYyNTE2QzcuMDA0MzUgNi4zNjI0NyA3LjI2OTc3IDYuMTYxMDcgNy41MTA3MyA2LjAyMDk2QzcuNzUxNjggNS44NzczNiA4LjAyODQxIDUuODA1NTYgOC4zNDA5IDUuODA1NTZDOC43NTg4IDUuODA1NTYgOS4wNzg4MiA1LjkzMzQgOS4zMDA5NSA2LjE4OTA5QzkuNTI2ODUgNi40NDQ3OCA5LjYyNDc0IDYuNzYxNzYgOS41OTQ2MiA3LjE0MDA0TDkuNDc2MDIgOC43MzE5NUM5LjQ1MzQzIDkuMDE1NjYgOS40MTk1NSA5LjI2MjU5IDkuMzc0MzcgOS40NzI3NUM5LjMyOTE5IDkuNjgyOSA5LjI1Mzg5IDkuOTI5ODMgOS4xNDg0NyAxMC4yMTM1TDkuMDkyIDEwLjM2MDZMOS44NjU2OSAxMS4zNzk5QzkuOTIyMTcgMTEuNDUzNCA5Ljk4MDUyIDExLjUzNCAxMC4wNDA4IDExLjYyMTZDMTAuMTAxIDExLjcwOTEgMTAuMTUzNyAxMS43OTY3IDEwLjE5ODkgMTEuODg0M0wxMS40MDc0IDE0LjE2NDRDMTEuNTA1MyAxNC4zNTAxIDExLjUyNDEgMTQuNTExMiAxMS40NjM5IDE0LjY0NzhDMTEuNDAzNyAxNC43ODQ0IDExLjMwMiAxNC44ODI1IDExLjE1ODkgMTQuOTQyQzExLjAxOTYgMTUuMDAxNSAxMC44NzA5IDE1LjAxMDMgMTAuNzEyOCAxNC45NjgzQzEwLjU1ODQgMTQuOTI2MiAxMC40MzYxIDE0LjgxNzcgMTAuMzQ1NyAxNC42NDI1Wk0xMi40MDcgNy45NjQ4OUMxMi41ODQgNy45NjQ4OSAxMi43MjcgOC4wMTA0MiAxMi44MzYyIDguMTAxNDlDMTIuOTQ1NCA4LjE4OTA1IDEzIDguMzA2MzkgMTMgOC40NTM1QzEzIDguNjExMTEgMTIuOTQ1NCA4LjczMzcgMTIuODM2MiA4LjgyMTI3QzEyLjczMDggOC45MDg4MyAxMi41ODc3IDguOTUyNjEgMTIuNDA3IDguOTUyNjFIMTEuMTMwN0MxMC45NTM4IDguOTUyNjEgMTAuODE0NSA4LjkzNjg1IDEwLjcxMjggOC45MDUzM0MxMC42MTEyIDguODcwMyAxMC41MTMzIDguODA3MjYgMTAuNDE5MSA4LjcxNjE5TDEwLjA1MjEgOC4zNzk5NEwxMC4xNDI0IDcuMDQwMjFMMTEuMDM0NyA3Ljk2NDg5SDEyLjQwN1pNOS4wMDE2NCA1LjMxMTY5QzguNzcxOTggNS4zMTE2OSA4LjU2MzAzIDUuMjYwOTEgOC4zNzQ3OCA1LjE1OTMzQzguMTg2NTMgNS4wNTQyNiA4LjAzNTk0IDQuOTE0MTUgNy45MjI5OSA0LjczOTAzQzcuODEzODEgNC41NjM5IDcuNzU5MjEgNC4zNjk1IDcuNzU5MjEgNC4xNTU4NUM3Ljc1OTIxIDMuOTQyMTkgNy44MTM4MSAzLjc0NzggNy45MjI5OSAzLjU3MjY3QzguMDM1OTQgMy4zOTc1NCA4LjE4NjUzIDMuMjU5MTkgOC4zNzQ3OCAzLjE1NzYyQzguNTYzMDMgMy4wNTI1NCA4Ljc3MTk4IDMgOS4wMDE2NCAzQzkuMjMxMyAzIDkuNDQwMjYgMy4wNTI1NCA5LjYyODUgMy4xNTc2MkM5LjgxNjc1IDMuMjU5MTkgOS45NjU0NiAzLjM5NzU0IDEwLjA3NDYgMy41NzI2N0MxMC4xODc2IDMuNzQ3OCAxMC4yNDQxIDMuOTQyMTkgMTAuMjQ0MSA0LjE1NTg1QzEwLjI0NDEgNC4zNjk1IDEwLjE4NzYgNC41NjM5IDEwLjA3NDYgNC43MzkwM0M5Ljk2NTQ2IDQuOTE0MTUgOS44MTY3NSA1LjA1NDI2IDkuNjI4NSA1LjE1OTMzQzkuNDQwMjYgNS4yNjA5MSA5LjIzMTMgNS4zMTE2OSA5LjAwMTY0IDUuMzExNjlaIn0pfSl9ZnVuY3Rpb24gSTMoKXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIyNiAxIDEyIDE0IixmaWxsOiJjdXJyZW50Q29sb3IiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WCgicGF0aCIse2Q6Ik0zMy4yNDM3IDQuNTg0NTlDMzMuMDAwOCA0LjU4NDU5IDMyLjc4MTcgNC41MjcyOCAzMi41ODY2IDQuNDEyNjhDMzIuMzkxNSA0LjI5NDEyIDMyLjIzNDIgNC4xMzgwMSAzMi4xMTQ3IDMuOTQ0MzdDMzEuOTk5MiAzLjc0Njc3IDMxLjk0MTQgMy41Mjk0MSAzMS45NDE0IDMuMjkyMjlDMzEuOTQxNCAzLjA1MTIyIDMxLjk5OTIgMi44MzM4NyAzMi4xMTQ3IDIuNjQwMjJDMzIuMjM0MiAyLjQ0NjU3IDMyLjM5MTUgMi4yOTI0NSAzMi41ODY2IDIuMTc3ODRDMzIuNzgxNyAyLjA1OTI4IDMzLjAwMDggMiAzMy4yNDM3IDJDMzMuNDgyNiAyIDMzLjY5OTcgMi4wNTkyOCAzMy44OTQ4IDIuMTc3ODRDMzQuMDkzOSAyLjI5MjQ1IDM0LjI1MTIgMi40NDY1NyAzNC4zNjY3IDIuNjQwMjJDMzQuNDg2MiAyLjgzMzg3IDM0LjU0NTkgMy4wNTEyMiAzNC41NDU5IDMuMjkyMjlDMzQuNTQ1OSAzLjUyOTQxIDM0LjQ4NjIgMy43NDY3NyAzNC4zNjY3IDMuOTQ0MzdDMzQuMjUxMiA0LjEzODAxIDM0LjA5MzkgNC4yOTQxMiAzMy44OTQ4IDQuNDEyNjhDMzMuNjk5NyA0LjUyNzI4IDMzLjQ4MjYgNC41ODQ1OSAzMy4yNDM3IDQuNTg0NTlaTTMxLjIwMDcgOS43NDE5MUMzMS4wNzMzIDkuNjcwNzcgMzAuOTQxOSA5LjU5NTY4IDMwLjgwNjUgOS41MTY2NEMzMC42NzUgOS40Mzc2IDMwLjU1OTYgOS4zNDI3NiAzMC40NiA5LjIzMjFDMzAuMzYwNCA5LjExNzQ5IDMwLjI5MjcgOC45NzcyIDMwLjI1NjkgOC44MTEyMkMzMC4yMjUgOC42NDEyOCAzMC4yNDQ5IDguNDI5ODUgMzAuMzE2NiA4LjE3NjkzTDMwLjgwNjUgNi40ODE1M0MzMC44MzgzIDYuMzY2OTIgMzAuODE4NCA2LjI3OTk4IDMwLjc0NjcgNi4yMjA3QzMwLjY3OSA2LjE1NzQ3IDMwLjU5NzQgNi4xMjk4MSAzMC41MDE4IDYuMTM3NzFMMjkuNjU5NSA2LjE5Njk5TDI5LjQwMjcgNy45MjIwMkMyOS4zNzg4IDguMTA3NzcgMjkuMzE1MSA4LjI0NjA5IDI5LjIxMTUgOC4zMzY5OEMyOS4xMDggOC40Mjc4OCAyOC45NzI2IDguNDY1NDIgMjguODA1MyA4LjQ0OTYxQzI4LjY0MiA4LjQzMzggMjguNTE4NiA4LjM2NjYyIDI4LjQzNDkgOC4yNDgwNkMyOC4zNTEzIDguMTI5NSAyOC4zMjE0IDcuOTc3MzUgMjguMzQ1MyA3Ljc5MTYxTDI4LjYyNjEgNS42ODEyNkMyOC42NSA1LjUxMTMyIDI4LjcxNTcgNS4zNzQ5OCAyOC44MjMyIDUuMjcyMjNDMjguOTMwOCA1LjE2OTQ4IDI5LjA2ODEgNS4xMTIxNyAyOS4yMzU0IDUuMTAwMzJMMzEuMzMyMSA0Ljk1MjEyQzMxLjg4MTcgNC45MTI2IDMyLjMzNTcgNC45Njk5IDMyLjY5NDEgNS4xMjQwM0MzMy4wNTI1IDUuMjc4MTYgMzMuMzY3MSA1LjUzODk5IDMzLjYzNzkgNS45MDY1MkwzNC42NzE0IDcuMzIzM0wzNi4xNzA4IDYuNjY1M0MzNi4zMzggNi41OTAyMSAzNi40ODkzIDYuNTc0NCAzNi42MjQ4IDYuNjE3ODdDMzYuNzYwMiA2LjY1NzM5IDM2Ljg2NTcgNi43NTIyNCAzNi45NDE0IDYuOTAyNDJDMzcuMDEzIDcuMDUyNTkgMzcuMDE5IDcuMTk0ODYgMzYuOTU5MyA3LjMyOTIzQzM2LjkwMzUgNy40NjM2IDM2Ljc5MiA3LjU2ODMyIDM2LjYyNDggNy42NDM0MUwzNC43MzExIDguNDc5MjVDMzQuNjAzNyA4LjUzODUzIDM0LjQ3NDMgOC41NTAzOSAzNC4zNDI4IDguNTE0ODJDMzQuMjE1NCA4LjQ3NTMgMzQuMTEzOCA4LjQwMDIxIDM0LjAzODIgOC4yODk1NkwzMy4zODExIDcuMzM1MTZDMzMuMzEzNCA3LjI0MDMxIDMzLjIyOTggNy4xOTg4MSAzMy4xMzAyIDcuMjEwNjdDMzMuMDMwNiA3LjIyMjUzIDMyLjk2NDkgNy4yODM3OCAzMi45MzMxIDcuMzk0NDRMMzIuNDkxIDguOTI5NzhMMzQuNzMxMSAxMC4zODgxQzM0Ljg0MjYgMTAuNDU5MiAzNC45MjIzIDEwLjU1NiAzNC45NzAxIDEwLjY3ODVDMzUuMDE3OSAxMC44MDEgMzUuMDI5OCAxMC45MjU1IDM1LjAwNTkgMTEuMDUyQzM0Ljk4NiAxMS4xNzQ1IDM0LjkyODIgMTEuMjc1MyAzNC44MzI3IDExLjM1NDNMMzIuNzcxOCAxMy4wOTcxQzMyLjYwODUgMTMuMjM1NCAzMi40NDUyIDEzLjI5ODcgMzIuMjgxOSAxMy4yODY4QzMyLjEyMjYgMTMuMjc1IDMxLjk5MzIgMTMuMjEzNyAzMS44OTM3IDEzLjEwMzFDMzEuNzk4MSAxMi45OTY0IDMxLjc1NDMgMTIuODY1OSAzMS43NjIyIDEyLjcxMThDMzEuNzcwMiAxMi41NTM3IDMxLjg1MzggMTIuNDA3NSAzMi4wMTMxIDEyLjI3MzFMMzMuNDg4NiAxMS4wMTY0TDMxLjIwMDcgOS43NDE5MVpNMjcuMjA0NCAxNC44NjM3QzI3LjA4NDkgMTQuNzU3IDI3LjAxNzIgMTQuNjE4NiAyNy4wMDEzIDE0LjQ0ODdDMjYuOTg5MyAxNC4yNzg4IDI3LjA2MSAxNC4xMTY3IDI3LjIxNjMgMTMuOTYyNkwyOS4yMjM1IDExLjk3NjdMMjkuOTM0MyA5LjQ4MTA4QzMwLjA0MTggOS42MTU0NCAzMC4xNzUzIDkuNzQ1ODYgMzAuMzM0NSA5Ljg3MjMyQzMwLjQ5NzggOS45OTQ4MyAzMC42OTMgMTAuMTE3MyAzMC45MiAxMC4yMzk5TDMxLjExNzEgMTAuMzQ2NkwzMC4zMDQ3IDEyLjQzMzJDMzAuMjUyOSAxMi41NTU3IDMwLjIwOTEgMTIuNjQwNyAzMC4xNzMzIDEyLjY4ODFDMzAuMTQxNCAxMi43MzU1IDMwLjA4NTYgMTIuNzk4OCAzMC4wMDYgMTIuODc3OEwyOC4wNzA2IDE0Ljc4MDdDMjcuOTE5MiAxNC45MjY5IDI3Ljc2MzkgMTUgMjcuNjA0NiAxNUMyNy40NDkzIDE1IDI3LjMxNTkgMTQuOTU0NiAyNy4yMDQ0IDE0Ljg2MzdaIn0pfSl9ZnVuY3Rpb24gRTMoKXtyZXR1cm4gWCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiI0OSAzIDE2IDEyIixmaWxsOiJjdXJyZW50Q29sb3IiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WCgicGF0aCIse2Q6Ik01Ny4wMDI4IDExLjk0OUM1Ni44NDggMTEuOTQ5IDU2LjcxNzIgMTEuODk4NyA1Ni42MTAzIDExLjc5OEM1Ni41MDM1IDExLjY5MzkgNTYuNDUwMSAxMS41NzA3IDU2LjQ1MDEgMTEuNDI4NFY5LjAyODYzTDU0LjQyMTYgNy4xMDc3NkM1NC4yMjI3IDYuOTIwMzUgNTQuMDk1NSA2LjY5ODI1IDU0LjA0MDMgNi40NDE0NEM1My45ODUgNi4xODExNiA1NC4wMTA4IDUuOTI3ODIgNTQuMTE3NiA1LjY4MTQyQzU0LjIyODIgNS40Mzg0OSA1NC4zOTc3IDUuMjQ0MTQgNTQuNjI2MSA1LjA5ODM5QzU0Ljg1ODMgNC45NDkxNiA1NS4xMTYyIDQuODc0NTQgNTUuMzk5OSA0Ljg3NDU0SDU4LjExMzdDNTguNDIzMiA0Ljg3NDU0IDU4LjY4NDggNC45NzY5MiA1OC44OTg1IDUuMTgxNjhDNTkuMTE1OSA1LjM4Mjk2IDU5LjIyNDYgNS42MjkzNiA1OS4yMjQ2IDUuOTIwODdWNy43NjM2Nkg2MC44OTkzQzYxLjA1MDQgNy43NjM2NiA2MS4xNzk0IDcuODEzOTkgNjEuMjg2MiA3LjkxNDYzQzYxLjM5MzEgOC4wMTUyNyA2MS40NDY1IDguMTM4NDcgNjEuNDQ2NSA4LjI4NDIzQzYxLjQ0NjUgOC40MjY1MSA2MS4zOTMxIDguNTQ3OTggNjEuMjg2MiA4LjY0ODYyQzYxLjE3OTQgOC43NDkyNiA2MS4wNTA0IDguNzk5NTggNjAuODk5MyA4Ljc5OTU4SDU4LjY3MTlDNTguNTIwOSA4Ljc5OTU4IDU4LjM5MDEgOC43NDkyNiA1OC4yNzk1IDguNjQ4NjJDNTguMTcyNyA4LjU0Nzk4IDU4LjExOTIgOC40MjY1MSA1OC4xMTkyIDguMjg0MjNWNi45ODgwM0M1OC4xMTkyIDYuOTE4NjIgNTguMDk5IDYuODU0NDIgNTguMDU4NCA2Ljc5NTQyQzU4LjAxNzkgNi43MzI5NSA1Ny45NDQyIDYuNzAxNzIgNTcuODM3MyA2LjcwMTcySDU2LjA2MzJDNTUuOTkzMiA2LjcwMTcyIDU1Ljk0NTMgNi43Mjk0OCA1NS45MTk1IDYuNzg1MDFDNTUuODk3NCA2LjgzNzA2IDU1LjkwODQgNi44ODczOSA1NS45NTI2IDYuOTM1OTdMNTcuNDAwNyA4LjQ1NjAxQzU3LjUwMzkgOC41NjM2IDU3LjU1NTUgOC42ODE1OSA1Ny41NTU1IDguODA5OTlWMTEuNDI4NEM1Ny41NTU1IDExLjU3MDcgNTcuNTAwMiAxMS42OTM5IDU3LjM4OTcgMTEuNzk4QzU3LjI4MjggMTEuODk4NyA1Ny4xNTM4IDExLjk0OSA1Ny4wMDI4IDExLjk0OVpNNTMuMDAxMiAxNEM1Mi41ODQ4IDE0IDUyLjE5NDIgMTMuOTI3MSA1MS44Mjk1IDEzLjc4MTRDNTEuNDY4NCAxMy42MzU2IDUxLjE0OTYgMTMuNDMyNiA1MC44NzMzIDEzLjE3MjNDNTAuNjAwNiAxMi45MTIgNTAuMzg2OSAxMi42MTE4IDUwLjIzMjEgMTIuMjcxN0M1MC4wNzc0IDExLjkyODIgNTAgMTEuNTYwMyA1MCAxMS4xNjgxQzUwIDEwLjc3NiA1MC4wNzc0IDEwLjQwOTkgNTAuMjMyMSAxMC4wNjk4QzUwLjM4NjkgOS43MjYxOCA1MC42MDA2IDkuNDI0MjYgNTAuODczMyA5LjE2Mzk4QzUxLjE0OTYgOC45MDM3IDUxLjQ2ODQgOC43MDA2OCA1MS44Mjk1IDguNTU0OTJDNTIuMTk0MiA4LjQwOTE2IDUyLjU4NDggOC4zMzYyOCA1My4wMDEyIDguMzM2MjhDNTMuNDIxMiA4LjMzNjI4IDUzLjgxMTggOC40MDkxNiA1NC4xNzI5IDguNTU0OTJDNTQuNTM3NyA4LjcwMDY4IDU0Ljg1NjQgOC45MDM3IDU1LjEyOTEgOS4xNjM5OEM1NS40MDU0IDkuNDI0MjYgNTUuNjIxIDkuNzI2MTggNTUuNzc1OCAxMC4wNjk4QzU1LjkzMDUgMTAuNDA5OSA1Ni4wMDc5IDEwLjc3NiA1Ni4wMDc5IDExLjE2ODFDNTYuMDA3OSAxMS41NjAzIDU1LjkzMDUgMTEuOTI4MiA1NS43NzU4IDEyLjI3MTdDNTUuNjIxIDEyLjYxMTggNTUuNDA1NCAxMi45MTIgNTUuMTI5MSAxMy4xNzIzQzU0Ljg1NjQgMTMuNDMyNiA1NC41Mzc3IDEzLjYzNTYgNTQuMTcyOSAxMy43ODE0QzUzLjgxMTggMTMuOTI3MSA1My40MjEyIDE0IDUzLjAwMTIgMTRaTTUzLjAwMTIgMTMuMjY2QzUzLjQxMDIgMTMuMjY2IDUzLjc4MjMgMTMuMTcwNiA1NC4xMTc2IDEyLjk3OTdDNTQuNDU2NiAxMi43OTIzIDU0LjcyNTYgMTIuNTQwNyA1NC45MjQ2IDEyLjIyNDlDNTUuMTI3MyAxMS45MDU2IDU1LjIyODYgMTEuNTUzNCA1NS4yMjg2IDExLjE2ODFDNTUuMjI4NiAxMC43ODI5IDU1LjEyNzMgMTAuNDMyNCA1NC45MjQ2IDEwLjExNjZDNTQuNzI1NiA5Ljc5NzMzIDU0LjQ1NjYgOS41NDM5OSA1NC4xMTc2IDkuMzU2NTlDNTMuNzgyMyA5LjE2NTcxIDUzLjQxMDIgOS4wNzAyOCA1My4wMDEyIDkuMDcwMjhDNTIuNTk1OSA5LjA3MDI4IDUyLjIyMzcgOS4xNjU3MSA1MS44ODQ3IDkuMzU2NTlDNTEuNTQ5NCA5LjU0Mzk5IDUxLjI4MDQgOS43OTczMyA1MS4wNzc4IDEwLjExNjZDNTAuODc4OCAxMC40MzI0IDUwLjc3OTMgMTAuNzgyOSA1MC43NzkzIDExLjE2ODFDNTAuNzc5MyAxMS41NTM0IDUwLjg3ODggMTEuOTA1NiA1MS4wNzc4IDEyLjIyNDlDNTEuMjgwNCAxMi41NDA3IDUxLjU0OTQgMTIuNzkyMyA1MS44ODQ3IDEyLjk3OTdDNTIuMjIzNyAxMy4xNzA2IDUyLjU5NTkgMTMuMjY2IDUzLjAwMTIgMTMuMjY2Wk02Mi40ODAxIDkuNjExNjZDNjIuMzYyMiA5LjUxNDQ5IDYyLjMwMTQgOS40MTU1OCA2Mi4yOTc3IDkuMzE0OTRDNjIuMjk3NyA5LjIxMDgzIDYyLjMzMDggOS4xMjQwNyA2Mi4zOTcyIDkuMDU0NjZDNjIuNDY3MiA4Ljk4NTI1IDYyLjU1MzggOC45NDUzNCA2Mi42NTY5IDguOTM0OTNDNjIuNzYzOCA4LjkyMTA1IDYyLjg2ODggOC45NTU3NSA2Mi45NzIgOS4wMzkwNEM2My4yODg5IDkuMzAyNzkgNjMuNTM5NCA5LjYxNjg3IDYzLjcyMzYgOS45ODEyNkM2My45MDc5IDEwLjM0NTcgNjQgMTAuNzQxMyA2NCAxMS4xNjgxQzY0IDExLjU2MDMgNjMuOTIyNiAxMS45MjgyIDYzLjc2NzkgMTIuMjcxN0M2My42MTMxIDEyLjYxMTggNjMuMzk3NiAxMi45MTIgNjMuMTIxMiAxMy4xNzIzQzYyLjg0ODUgMTMuNDMyNiA2Mi41Mjk4IDEzLjYzNTYgNjIuMTY1IDEzLjc4MTRDNjEuODAzOSAxMy45MjcxIDYxLjQxNTIgMTQgNjAuOTk4OCAxNEM2MC41ODI0IDE0IDYwLjE5MTkgMTMuOTI3MSA1OS44MjcxIDEzLjc4MTRDNTkuNDYyMyAxMy42MzU2IDU5LjE0MTcgMTMuNDMyNiA1OC44NjU0IDEzLjE3MjNDNTguNTkyNyAxMi45MTIgNTguMzc5IDEyLjYxMTggNTguMjI0MiAxMi4yNzE3QzU4LjA2OTUgMTEuOTI4MiA1Ny45OTIxIDExLjU2MDMgNTcuOTkyMSAxMS4xNjgxQzU3Ljk5MjEgMTAuOTYzNCA1OC4wMTQyIDEwLjc2NTYgNTguMDU4NCAxMC41NzQ3QzU4LjEwNjMgMTAuMzgwNCA1OC4xNzI3IDEwLjE5MyA1OC4yNTc0IDEwLjAxMjVDNTguMzA5IDkuOTAxNDQgNTguMzgwOCA5LjgzMDMgNTguNDczIDkuNzk5MDZDNTguNTY4OCA5Ljc2NDM2IDU4LjY2MjcgOS43NjQzNiA1OC43NTQ4IDkuNzk5MDZDNTguODUwNiA5LjgzMDMgNTguOTIyNSA5Ljg5Mjc2IDU4Ljk3MDQgOS45ODY0N0M1OS4wMTgzIDEwLjA4MDIgNTkuMDEwOSAxMC4xOTgyIDU4Ljk0ODMgMTAuMzQwNEM1OC44MzA0IDEwLjYwMDcgNTguNzcxNCAxMC44NzY2IDU4Ljc3MTQgMTEuMTY4MUM1OC43NzE0IDExLjU1MzQgNTguODcwOSAxMS45MDU2IDU5LjA2OTkgMTIuMjI0OUM1OS4yNzI1IDEyLjU0MDcgNTkuNTQxNSAxMi43OTIzIDU5Ljg3NjggMTIuOTc5N0M2MC4yMTU4IDEzLjE3MDYgNjAuNTg5OCAxMy4yNjYgNjAuOTk4OCAxMy4yNjZDNjEuNDA3OCAxMy4yNjYgNjEuNzggMTMuMTcwNiA2Mi4xMTUzIDEyLjk3OTdDNjIuNDUwNiAxMi43OTIzIDYyLjcxNzcgMTIuNTQwNyA2Mi45MTY3IDEyLjIyNDlDNjMuMTE5NCAxMS45MDU2IDYzLjIyMDcgMTEuNTUzNCA2My4yMjA3IDExLjE2ODFDNjMuMjIwNyAxMC44NTkzIDYzLjE1MjUgMTAuNTcxMiA2My4wMTYyIDEwLjMwNEM2Mi44ODM1IDEwLjAzMzMgNjIuNzA0OCA5LjgwMjUzIDYyLjQ4MDEgOS42MTE2NlpNNjAuOTk4OCA2LjI3NDg2QzYwLjc3NCA2LjI3NDg2IDYwLjU2OTUgNi4yMjQ1NCA2MC4zODUzIDYuMTIzODlDNjAuMjAxMSA2LjAxOTc4IDYwLjA1MzcgNS44ODI3IDU5Ljk0MzIgNS43MTI2NUM1OS44MzYzIDUuNTM5MTMgNTkuNzgyOSA1LjM0NjUyIDU5Ljc4MjkgNS4xMzQ4M0M1OS43ODI5IDQuOTI2NiA1OS44MzYzIDQuNzM3NDYgNTkuOTQzMiA0LjU2NzQxQzYwLjA1MzcgNC4zOTM4OSA2MC4yMDExIDQuMjU2ODEgNjAuMzg1MyA0LjE1NjE3QzYwLjU2OTUgNC4wNTIwNiA2MC43NzQgNCA2MC45OTg4IDRDNjEuMjE5OSA0IDYxLjQyMDcgNC4wNTIwNiA2MS42MDEzIDQuMTU2MTdDNjEuNzgxOCA0LjI1NjgxIDYxLjkyNTUgNC4zOTM4OSA2Mi4wMzI0IDQuNTY3NDFDNjIuMTQyOSA0LjczNzQ2IDYyLjE5ODIgNC45MjY2IDYyLjE5ODIgNS4xMzQ4M0M2Mi4xOTgyIDUuMzQ2NTIgNjIuMTQyOSA1LjUzOTEzIDYyLjAzMjQgNS43MTI2NUM2MS45MjU1IDUuODgyNyA2MS43ODE4IDYuMDE5NzggNjEuNjAxMyA2LjEyMzg5QzYxLjQyMDcgNi4yMjQ1NCA2MS4yMTk5IDYuMjc0ODYgNjAuOTk4OCA2LjI3NDg2WiJ9KX0pfWZ1bmN0aW9uIHkzKCl7cmV0dXJuIFgoInN2ZyIse3dpZHRoOiIxNiIsaGVpZ2h0OiIxNCIsdmlld0JveDoiNzAgNSAxOCA5IixmaWxsOiJjdXJyZW50Q29sb3IiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WCgicGF0aCIse2Q6Ik04NS41NzIgMTIuMTAzOEM4Ni4wNiAxMi4xMDM4IDg2LjQyMDcgMTEuOTg5MiA4Ni42NTQyIDExLjc2MDFDODYuODg0NyAxMS41MjgxIDg3IDExLjE2NDEgODcgMTAuNjY4MVYxMC4xMTEyQzg3IDkuNzY5MDEgODYuOTIwNyA5LjQ2MzAyIDg2Ljc2MiA5LjE5MzI5Qzg2LjYwMzMgOC45MjA2NSA4Ni4zNzU4IDguNjk3MzMgODYuMDc5NCA4LjUyMzMxQzg1Ljc4MDEgOC4zNDkyOSA4NS40MjIzIDguMjM3NjIgODUuMDA2MiA4LjE4ODMyTDgzLjAxNjggNy45NTMzOUw4MS4xOTgxIDYuODQ4MzVDODAuOTIyNyA2LjY4MDEzIDgwLjY2MDggNi41NDIzNyA4MC40MTIzIDYuNDM1MDVDODAuMTYwOCA2LjMyNDg0IDc5Ljg5NzQgNi4yMzc4MyA3OS42MjE5IDYuMTc0MDJDNzkuMzQ2NSA2LjExMDIxIDc5LjAzODIgNi4wNjUyNiA3OC42OTY5IDYuMDM5MTVDNzguMzUyNiA2LjAxMzA1IDc3Ljk1MTQgNiA3Ny40OTM0IDZINzYuODEwOEM3Ni4zODg3IDYgNzUuOTk1IDYuMDQ5MzEgNzUuNjI5OCA2LjE0NzkyQzc1LjI2MTYgNi4yNDM2MyA3NC45MTg4IDYuMzcxMjUgNzQuNjAxNSA2LjUzMDc2Qzc0LjI4MTEgNi42OTAyOCA3My45ODYyIDYuODY1NzYgNzMuNzE2OCA3LjA1NzE4QzczLjQ0NDQgNy4yNDg2IDczLjE5NTkgNy40MzcxMiA3Mi45NzE0IDcuNjIyNzVMNzIuMjU3NCA3Ljg1MzMzQzcxLjgzMjMgNy45ODY3NCA3MS41MTY0IDguMTgzOTcgNzEuMzA5OSA4LjQ0NUM3MS4xMDMzIDguNzAzMTMgNzEgOS4wMzM3NyA3MSA5LjQzNjkyVjEwLjY0MkM3MSAxMS4xNDY3IDcxLjExNTMgMTEuNTE2NSA3MS4zNDU4IDExLjc1MTRDNzEuNTc2MyAxMS45ODYzIDcxLjkzNyAxMi4xMDM4IDcyLjQyOCAxMi4xMDM4SDcyLjcxNTRDNzIuNzAwNCAxMi4wMzcxIDcyLjY4ODUgMTEuOTcwNCA3Mi42Nzk1IDExLjkwMzdDNzIuNjcwNSAxMS44MzQxIDcyLjY2NiAxMS43NjQ1IDcyLjY2NiAxMS42OTQ4QzcyLjY2NiAxMS4zNTU1IDcyLjc0OTggMTEuMDQ5NSA3Mi45MTc1IDEwLjc3NjlDNzMuMDg1MSAxMC41MDQyIDczLjMxMTIgMTAuMjg4MiA3My41OTU2IDEwLjEyODdDNzMuODc3IDkuOTY2MjMgNzQuMTkyOCA5Ljg4NTAyIDc0LjU0MzEgOS44ODUwMkM3NC44OTA0IDkuODg1MDIgNzUuMjA2MiA5Ljk2NjIzIDc1LjQ5MDYgMTAuMTI4N0M3NS43NzIgMTAuMjg4MiA3NS45OTY1IDEwLjUwNDIgNzYuMTY0MiAxMC43NzY5Qzc2LjMzMTggMTEuMDQ5NSA3Ni40MTU3IDExLjM1NTUgNzYuNDE1NyAxMS42OTQ4Qzc2LjQxNTcgMTEuNzY0NSA3Ni40MTEyIDExLjgzNDEgNzYuNDAyMiAxMS45MDM3Qzc2LjM5MzIgMTEuOTcwNCA3Ni4zODI3IDEyLjAzNzEgNzYuMzcwOCAxMi4xMDM4SDgxLjYzODJDODEuNjIwMyAxMi4wMzcxIDgxLjYwODMgMTEuOTcwNCA4MS42MDIzIDExLjkwMzdDODEuNTkzMyAxMS44MzQxIDgxLjU4ODggMTEuNzY0NSA4MS41ODg4IDExLjY5NDhDODEuNTg4OCAxMS4zNTU1IDgxLjY3MjcgMTEuMDQ5NSA4MS44NDAzIDEwLjc3NjlDODIuMDA1IDEwLjUwNDIgODIuMjI5NSAxMC4yODgyIDgyLjUxMzkgMTAuMTI4N0M4Mi43OTUzIDkuOTY2MjMgODMuMTExMSA5Ljg4NTAyIDgzLjQ2MTQgOS44ODUwMkM4My44MTE3IDkuODg1MDIgODQuMTI5IDkuOTY2MjMgODQuNDEzNCAxMC4xMjg3Qzg0LjY5NDggMTAuMjg4MiA4NC45MTk0IDEwLjUwNDIgODUuMDg3IDEwLjc3NjlDODUuMjUxNyAxMS4wNDk1IDg1LjMzNCAxMS4zNTU1IDg1LjMzNCAxMS42OTQ4Qzg1LjMzNCAxMS43NjQ1IDg1LjMzMSAxMS44MzQxIDg1LjMyNSAxMS45MDM3Qzg1LjMxNiAxMS45NzA0IDg1LjMwNDEgMTIuMDM3MSA4NS4yODkxIDEyLjEwMzhIODUuNTcyWk04My40NjE0IDEzQzgzLjcxMjkgMTMgODMuOTQwNCAxMi45NDIgODQuMTQ0IDEyLjgyNkM4NC4zNDc2IDEyLjcxIDg0LjUwOTIgMTIuNTUzMyA4NC42MjkgMTIuMzU2MUM4NC43NDg3IDEyLjE1ODkgODQuODA4NiAxMS45Mzg1IDg0LjgwODYgMTEuNjk0OEM4NC44MDg2IDExLjQ1MTIgODQuNzQ4NyAxMS4yMzA4IDg0LjYyOSAxMS4wMzM2Qzg0LjUwOTIgMTAuODM2MyA4NC4zNDc2IDEwLjY3OTcgODQuMTQ0IDEwLjU2MzdDODMuOTQwNCAxMC40NDc3IDgzLjcxMjkgMTAuMzg5NyA4My40NjE0IDEwLjM4OTdDODMuMjA2OSAxMC4zODk3IDgyLjk3NzkgMTAuNDQ3NyA4Mi43NzQzIDEwLjU2MzdDODIuNTcwOCAxMC42Nzk3IDgyLjQwOTEgMTAuODM2MyA4Mi4yODk0IDExLjAzMzZDODIuMTY5NiAxMS4yMzA4IDgyLjEwOTcgMTEuNDUxMiA4Mi4xMDk3IDExLjY5NDhDODIuMTA5NyAxMS45Mzg1IDgyLjE2OTYgMTIuMTU4OSA4Mi4yODk0IDEyLjM1NjFDODIuNDA5MSAxMi41NTMzIDgyLjU3MDggMTIuNzEgODIuNzc0MyAxMi44MjZDODIuOTc3OSAxMi45NDIgODMuMjA2OSAxMyA4My40NjE0IDEzWk03NC41NDMxIDEzQzc0Ljc5NDYgMTMgNzUuMDIyMSAxMi45NDIgNzUuMjI1NyAxMi44MjZDNzUuNDI5MiAxMi43MSA3NS41OTA5IDEyLjU1MzMgNzUuNzEwNiAxMi4zNTYxQzc1LjgzMDQgMTIuMTU4OSA3NS44OTAzIDExLjkzODUgNzUuODkwMyAxMS42OTQ4Qzc1Ljg5MDMgMTEuNDUxMiA3NS44MzA0IDExLjIzMDggNzUuNzEwNiAxMS4wMzM2Qzc1LjU5MDkgMTAuODM2MyA3NS40MjkyIDEwLjY3OTcgNzUuMjI1NyAxMC41NjM3Qzc1LjAyMjEgMTAuNDQ3NyA3NC43OTQ2IDEwLjM4OTcgNzQuNTQzMSAxMC4zODk3Qzc0LjI4ODYgMTAuMzg5NyA3NC4wNTk2IDEwLjQ0NzcgNzMuODU2IDEwLjU2MzdDNzMuNjUyNCAxMC42Nzk3IDczLjQ5MDggMTAuODM2MyA3My4zNzEgMTEuMDMzNkM3My4yNTEzIDExLjIzMDggNzMuMTkxNCAxMS40NTEyIDczLjE5MTQgMTEuNjk0OEM3My4xOTE0IDExLjkzODUgNzMuMjUxMyAxMi4xNTg5IDczLjM3MSAxMi4zNTYxQzczLjQ5MDggMTIuNTUzMyA3My42NTI0IDEyLjcxIDczLjg1NiAxMi44MjZDNzQuMDU5NiAxMi45NDIgNzQuMjg4NiAxMyA3NC41NDMxIDEzWiJ9KX0pfWZ1bmN0aW9uIGkwKHtzaXplOiQ9MTgsc3Ryb2tlV2lkdGg6Sj0yfSl7cmV0dXJuIFgoaDIse3NpemU6JCxzdHJva2VXaWR0aDpKfSl9dmFyIHg5PSJBY2Nlc3NpYmlsaXR5IHVuYXZhaWxhYmxlIG9uIHRoaXMgc2ltdWxhdG9yLiI7ZnVuY3Rpb24gRDUoJCl7cmV0dXJuICQ/LmVycm9ycz8uaW5jbHVkZXMoeDkpPz8hMX1mdW5jdGlvbiB3NSgkLEope2lmKCQ9PT1KKXJldHVybiEwO2lmKCQuaWQhPT1KLmlkfHwkLnBhdGghPT1KLnBhdGh8fCQubGFiZWwhPT1KLmxhYmVsfHwkLnZhbHVlIT09Si52YWx1ZXx8JC5yb2xlIT09Si5yb2xlfHwkLnR5cGUhPT1KLnR5cGV8fCQuZW5hYmxlZCE9PUouZW5hYmxlZClyZXR1cm4hMTtsZXQgUT0kLmZyYW1lLFo9Si5mcmFtZTtyZXR1cm4gUT09PVp8fFEueD09PVoueCYmUS55PT09Wi55JiZRLndpZHRoPT09Wi53aWR0aCYmUS5oZWlnaHQ9PT1aLmhlaWdodH1mdW5jdGlvbiBUNSgkLEope2xldCBRPSQubGFiZWx8fCQucm9sZXx8YGVsZW1lbnQgJHtKKzF9YCxaPSQucm9sZXx8JC50eXBlO3JldHVybntpZDokLmlkLHBhdGg6JC5wYXRoLGxhYmVsOlEsdmFsdWU6JC52YWx1ZSxyb2xlOlosdHlwZTokLnR5cGUsZW5hYmxlZDokLmVuYWJsZWQsZnJhbWU6JC5mcmFtZX19ZnVuY3Rpb24gajkoJCxKKXtsZXQgUT1NYXRoLm1heCgwLCQueCksWj1NYXRoLm1heCgwLCQueSksSz1NYXRoLm1pbihKLndpZHRoLCQueCskLndpZHRoKSxZPU1hdGgubWluKEouaGVpZ2h0LCQueSskLmhlaWdodCkscT1NYXRoLm1heCgwLEstUSksRz1NYXRoLm1heCgwLFktWik7cmV0dXJuIHE+MCYmRz4wP3t4OlEseTpaLHdpZHRoOnEsaGVpZ2h0Okd9Om51bGx9ZnVuY3Rpb24gYTAoJCl7cmV0dXJuICQuaWR9ZnVuY3Rpb24gYjMoJCl7cmV0dXJuYCR7JC54fSwkeyQueX0gJHskLndpZHRofXgkeyQuaGVpZ2h0fWB9ZnVuY3Rpb24gdjkoJCl7cmV0dXJuW2BBWCBsYWJlbDogJHskLmxhYmVsfHwiVW5sYWJlbGVkIn1gLCQucm9sZT9gcm9sZTogJHskLnJvbGV9YDoiIiwkLnR5cGU/YHR5cGU6ICR7JC50eXBlfWA6IiIsJC52YWx1ZT9gdmFsdWU6ICR7JC52YWx1ZX1gOiIiLCQuaWQ/YGlkOiAkeyQuaWR9YDoiIixgcGF0aDogJHskLnBhdGh9YCxgZnJhbWU6ICR7YjMoJC5mcmFtZSl9YF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIjsgIil9ZnVuY3Rpb24gbDIoJCl7cmV0dXJuICQmJnR5cGVvZiAkLmRldmljZT09PSJzdHJpbmciJiZ0eXBlb2YgJC51cmw9PT0ic3RyaW5nIj8kOm51bGx9ZnVuY3Rpb24gUjkoJCl7bGV0IEo9bmV3IFVSTCgkLnN0cmVhbVVybCk7cmV0dXJuIEoucGF0aG5hbWU9Si5wYXRobmFtZS5yZXBsYWNlKC9cL3N0cmVhbVwuW14vXSskLywiL3N0cmVhbS5tanBlZyIpLEouc2VhcmNoPSIiLEouaGFzaD0iIixKLnRvU3RyaW5nKCl9ZnVuY3Rpb24gUzMoJCl7bGV0IEo9bmV3IFVSTCgkLnN0cmVhbVVybCk7cmV0dXJuIEoucGF0aG5hbWU9Si5wYXRobmFtZS5yZXBsYWNlKC9cL3N0cmVhbVwuW14vXSskLywiL3dlYnJ0Yy9vZmZlciIpLEouc2VhcmNoPSIiLEouaGFzaD0iIixKLnRvU3RyaW5nKCl9ZnVuY3Rpb24gaDkoJCl7bGV0IEo9bmV3IFVSTChTMygkKSk7cmV0dXJuIEoucGF0aG5hbWU9Si5wYXRobmFtZS5yZXBsYWNlKC9cL29mZmVyJC8sIi9jbG9zZSIpLEoudG9TdHJpbmcoKX1mdW5jdGlvbiBmMSgkKXtsZXQgUT13aW5kb3cuX19TSU1fUFJFVklFV19fPy5iYXNlUGF0aD8/KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyskLywiIil8fCIvIik7cmV0dXJuIFE9PT0iLyI/YC8keyR9YDpgJHtRfS8keyR9YH12YXIgbCQ9NTAwMCxkJD0yMDAwLGQyPW51bGwseDM9bnVsbCxjJD0xLG8kPTEsQjI9bmV3IE1hcCxWMj1uZXcgTWFwO2Z1bmN0aW9uIHIkKCl7bGV0ICQ9bmV3IFVSTChmMSgiZXhlYy13cyIpLHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtyZXR1cm4gJC5wcm90b2NvbD0kLnByb3RvY29sPT09Imh0dHBzOiI/IndzczoiOiJ3czoiLCQudG9TdHJpbmcoKX1mdW5jdGlvbiBpJCgkKXtmb3IobGV0IEogb2YgQjIudmFsdWVzKCkpSi5yZWplY3QoJCk7QjIuY2xlYXIoKX1mdW5jdGlvbiBnOSgpe3JldHVybiBkMj8/PW5ldyBQcm9taXNlKCgkLEopPT57bGV0IFE9ITEsWjt0cnl7Wj1uZXcgV2ViU29ja2V0KHIkKCkpfWNhdGNoKHEpe2QyPW51bGwsSihxKTtyZXR1cm59bGV0IEs9c2V0VGltZW91dCgoKT0+e2lmKCFRKVE9ITAsZDI9bnVsbCxKKEVycm9yKCJjb250cm9sIHNvY2tldCBjb25uZWN0IHRpbWVvdXQiKSksWi5jbG9zZSgpfSxsJCk7Wi5vbm9wZW49KCk9PntaLnNlbmQoSlNPTi5zdHJpbmdpZnkoe3Rva2VuOndpbmRvdy5fX1NJTV9QUkVWSUVXX18/LmV4ZWNUb2tlbj8/IiJ9KSl9LFoub25tZXNzYWdlPShxKT0+e2xldCBHO3RyeXtHPUpTT04ucGFyc2UoU3RyaW5nKHEuZGF0YSkpfWNhdGNoe3JldHVybn1pZihHLnJlYWR5KXtpZighUSlRPSEwLGNsZWFyVGltZW91dChLKSx4Mz1aLCQoWik7cmV0dXJufWlmKHR5cGVvZiBHLnN1Yj09PSJudW1iZXIiKXtsZXQgQj1WMi5nZXQoRy5zdWIpO2lmKCFCKXJldHVybjtpZihHLmVuZClWMi5kZWxldGUoRy5zdWIpLEIub25FbmQoKTtlbHNlIGlmKHR5cGVvZiBHLmRhdGE9PT0ic3RyaW5nIilCLm9uRGF0YShHLmRhdGEpO3JldHVybn1pZih0eXBlb2YgRy5pZCE9PSJudW1iZXIiKXJldHVybjtsZXQgTj1CMi5nZXQoRy5pZCk7aWYoIU4pcmV0dXJuO0IyLmRlbGV0ZShHLmlkKSxOLnJlc29sdmUoRyl9O2xldCBZPSgpPT57ZDI9bnVsbCx4Mz1udWxsO2xldCBxPUVycm9yKCJjb250cm9sIHNvY2tldCBjbG9zZWQg4oCUIHJlbG9hZCB0aGUgcGFnZSBpZiB0aGlzIHBlcnNpc3RzIik7aSQocSk7bGV0IEc9Wy4uLlYyLnZhbHVlcygpXTtWMi5jbGVhcigpO2ZvcihsZXQgTiBvZiBHKU4ub25FbmQoKTtpZighUSlRPSEwLGNsZWFyVGltZW91dChLKSxKKHEpfTtaLm9uZXJyb3I9WSxaLm9uY2xvc2U9WX0pLGQyfWFzeW5jIGZ1bmN0aW9uIGY5KCQsSil7bGV0IFE9YXdhaXQgZzkoKTtpZihRLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTil0aHJvdyBFcnJvcigiY29udHJvbCBzb2NrZXQgbm90IG9wZW4iKTtyZXR1cm4gbmV3IFByb21pc2UoKFosSyk9PntsZXQgWT1jJCsrLHE9KCk9PntCMi5kZWxldGUoWSksSyhKPy5yZWFzb24/P25ldyBET01FeGNlcHRpb24oIkFib3J0ZWQiLCJBYm9ydEVycm9yIikpfTtpZihKKXtpZihKLmFib3J0ZWQpe3EoKTtyZXR1cm59Si5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIscSx7b25jZTohMH0pfUIyLnNldChZLHtyZXNvbHZlOihHKT0+e0o/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixxKSxaKEcpfSxyZWplY3Q6KEcpPT57Sj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHEpLEsoRyl9fSksUS5zZW5kKEpTT04uc3RyaW5naWZ5KHtpZDpZLC4uLiR9KSl9KX1hc3luYyBmdW5jdGlvbiBFMSgkLEope2xldCBRPWF3YWl0IGY5KHtjb21tYW5kOiR9LEo/LnNpZ25hbCk7cmV0dXJue3N0ZG91dDpRLnN0ZG91dD8/IiIsc3RkZXJyOlEuc3RkZXJyPz8iIixleGl0Q29kZTpRLmV4aXRDb2RlPz8xfX1hc3luYyBmdW5jdGlvbiBqMygkLEope2xldCBRPWF3YWl0IGY5KHt1aTokfSxKPy5zaWduYWwpO2lmKFEuZXJyb3IpdGhyb3cgRXJyb3IoUS5lcnJvcik7cmV0dXJuIFEuc3RhdHVzPz9udWxsfWZ1bmN0aW9uIHkwKCQpe2xldCBKPXtvbm1lc3NhZ2U6bnVsbCxvbmVycm9yOm51bGwsY2xvc2U6KCk9Pnt9fSxRPSExLFo9bnVsbCxLPW51bGwsWT0iIixxPShCKT0+e1krPUIucmVwbGFjZSgvXHJcbi9nLGAKYCk7bGV0IEw7d2hpbGUoKEw9WS5pbmRleE9mKGAKCmApKSE9PS0xKXtsZXQgVj1ZLnNsaWNlKDAsTCk7WT1ZLnNsaWNlKEwrMik7bGV0IFU9Vi5zcGxpdChgCmApLmZpbHRlcigoeik9Pnouc3RhcnRzV2l0aCgiZGF0YToiKSkubWFwKCh6KT0+ei5zbGljZSg1KS5yZXBsYWNlKC9eIC8sIiIpKS5qb2luKGAKYCk7aWYoVSlKLm9ubWVzc2FnZT8uKHtkYXRhOlV9KX19LEc9KCk9PntpZihRfHxLKXJldHVybjtKLm9uZXJyb3I/LigpLEs9c2V0VGltZW91dCgoKT0+e0s9bnVsbCxOKCl9LGQkKX0sTj1hc3luYygpPT57aWYoUSlyZXR1cm47dHJ5e2xldCBCPWF3YWl0IGc5KCk7aWYoUSlyZXR1cm47WT0iIixaPW8kKyssVjIuc2V0KFose29uRGF0YTpxLG9uRW5kOkd9KSxCLnNlbmQoSlNPTi5zdHJpbmdpZnkoe3N1YjpaLHBhdGg6JH0pKX1jYXRjaHtHKCl9fTtyZXR1cm4gTigpLEouY2xvc2U9KCk9PntpZihRPSEwLEspY2xlYXJUaW1lb3V0KEspO2lmKFohPT1udWxsKXtWMi5kZWxldGUoWik7dHJ5e3gzPy5zZW5kKEpTT04uc3RyaW5naWZ5KHt1bnN1YjpafSkpfWNhdGNoe31aPW51bGx9fSxKfWZ1bmN0aW9uIE0xKCQpe3JldHVybmAnJHskLnJlcGxhY2UoLycvZywiJ1xcJyciKX0nYH1mdW5jdGlvbiBtOSgkKXtsZXRbSixRXT1BKG51bGwpLFtaLEtdPUEoIkFYIG9mZiIpO3JldHVybiBiKCgpPT57aWYoISQpe1EobnVsbCksSygiQVggb2ZmIik7cmV0dXJufVEobnVsbCksSygiQVggd2FpdGluZyIpO2xldCBZPXkwKCQpO3JldHVybiBZLm9ubWVzc2FnZT0ocSk9Pnt0cnl7bGV0IEc9SlNPTi5wYXJzZShxLmRhdGEpO1EoRyksSyhENShHKT8iQVggdW5hdmFpbGFibGUiOmAke0cuZWxlbWVudHMubGVuZ3RofSBBWCBlbGVtZW50c2ApfWNhdGNoe0soIkFYIHBhcnNlIGVycm9yIil9fSxZLm9uZXJyb3I9KCk9PntLKCJBWCByZWNvbm5lY3RpbmciKX0sKCk9PlkuY2xvc2UoKX0sWyRdKSx7c25hcHNob3Q6SixzdGF0dXM6Wn19dmFyIHYzPXowKHtzbmFwc2hvdDpudWxsLHN0YXR1czoiQVggb2ZmIn0pLFIzPXowKG51bGwpO2Z1bmN0aW9uIE4yKCl7cmV0dXJuIFUwKHYzKX1mdW5jdGlvbiBJNSgpe2xldCAkPVUwKFIzKTtpZighJCl0aHJvdyBFcnJvcigiQVggc2VsZWN0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUiKTtyZXR1cm4gJH12YXIgcDk9YzAoZnVuY3Rpb24oe2VsZW1lbnQ6SixpbmRleDpRLHNjcmVlbjpaLGhpZ2hsaWdodGVkOkssc2VsZWN0ZWQ6WSxvbkhpZ2hsaWdodDpxLG9uU2VsZWN0Okd9KXtsZXQgTj1hMChKKSxCPVQ1KEosUSksTD1qOShKLmZyYW1lLFopO2lmKCFMKXJldHVybiBudWxsO2xldCBWPXY5KEIpO3JldHVybiBYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLCJkYXRhLWF4LWtleSI6TiwiZGF0YS1heC1pZCI6Qi5pZCwiZGF0YS1heC1wYXRoIjpCLnBhdGgsImRhdGEtYXgtbGFiZWwiOkIubGFiZWwsImRhdGEtYXgtdmFsdWUiOkIudmFsdWUsImRhdGEtYXgtcm9sZSI6Qi5yb2xlLCJkYXRhLWF4LXR5cGUiOkIudHlwZSwiZGF0YS1heC1lbmFibGVkIjpTdHJpbmcoQi5lbmFibGVkKSwiZGF0YS1heC1mcmFtZSI6YjMoQi5mcmFtZSksImRhdGEtYXgtc2VsZWN0ZWQiOlN0cmluZyhZKSwiYXJpYS1sYWJlbCI6Si5sYWJlbHx8Vix0aXRsZTpWLG9uQ2xpY2s6KCk9PkcoTiksb25Nb3VzZUVudGVyOigpPT5xKE4pLG9uTW91c2VMZWF2ZTooKT0+cShudWxsKSxjbGFzc05hbWU6ImFic29sdXRlIGJveC1ib3JkZXIgbWluLXctcHggbWluLWgtcHggcC0wIHJvdW5kZWQtWzNweF0gYm9yZGVyIGN1cnNvci1wb2ludGVyIHBvaW50ZXItZXZlbnRzLWF1dG8iLHN0eWxlOntsZWZ0OmAke0wueC9aLndpZHRoKjEwMH0lYCx0b3A6YCR7TC55L1ouaGVpZ2h0KjEwMH0lYCx3aWR0aDpgJHtMLndpZHRoL1oud2lkdGgqMTAwfSVgLGhlaWdodDpgJHtMLmhlaWdodC9aLmhlaWdodCoxMDB9JWAsYm9yZGVyQ29sb3I6WT8iIzYwYTVmYSI6Sz8iI2ZiYmYyNCI6IiMzNGQzOTkiLGJhY2tncm91bmQ6WT8icmdiYSg5NiwxNjUsMjUwLDAuMjQpIjpLPyJyZ2JhKDI0NSwxNTgsMTEsMC4yOCkiOiJyZ2JhKDE2LDE4NSwxMjksMC4xMikifX0pfSwoJCxKKT0+JC5pbmRleD09PUouaW5kZXgmJiQuaGlnaGxpZ2h0ZWQ9PT1KLmhpZ2hsaWdodGVkJiYkLnNlbGVjdGVkPT09Si5zZWxlY3RlZCYmJC5vbkhpZ2hsaWdodD09PUoub25IaWdobGlnaHQmJiQub25TZWxlY3Q9PT1KLm9uU2VsZWN0JiYkLnNjcmVlbi53aWR0aD09PUouc2NyZWVuLndpZHRoJiYkLnNjcmVlbi5oZWlnaHQ9PT1KLnNjcmVlbi5oZWlnaHQmJnc1KCQuZWxlbWVudCxKLmVsZW1lbnQpKTtmdW5jdGlvbiB1OSgpe2xldHtzbmFwc2hvdDokfT1OMigpLHtoaWdobGlnaHRlZEtleTpKLHNlbGVjdGVkS2V5OlEsc2V0SGlnaGxpZ2h0ZWRLZXk6WixzZXRTZWxlY3RlZEtleTpLfT1JNSgpO2lmKCEkPy5zY3JlZW4ud2lkdGh8fCEkPy5zY3JlZW4uaGVpZ2h0KXJldHVybiBudWxsO3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAgei0xMCBvdmVyZmxvdy1oaWRkZW4gcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46JC5lbGVtZW50cy5tYXAoKFkscSk9PntsZXQgRz1hMChZKTtyZXR1cm4gWChwOSx7ZWxlbWVudDpZLGluZGV4OnEsc2NyZWVuOiQuc2NyZWVuLGhpZ2hsaWdodGVkOkc9PT1KLHNlbGVjdGVkOkc9PT1RLG9uSGlnaGxpZ2h0Olosb25TZWxlY3Q6S30sRyl9KX0pfWZ1bmN0aW9uIGw5KHtlbmRwb2ludDokLGNoaWxkcmVuOkp9KXtsZXR7c25hcHNob3Q6USxzdGF0dXM6Wn09bTkoJCksW0ssWV09QShudWxsKSxbcSxHXT1BKG51bGwpO2IoKCk9PntpZighJClZKG51bGwpLEcobnVsbCl9LFskXSk7bGV0IE49VDEoKCk9Pih7c25hcHNob3Q6USxzdGF0dXM6Wn0pLFtRLFpdKSxCPVQxKCgpPT4oe2hpZ2hsaWdodGVkS2V5Okssc2VsZWN0ZWRLZXk6cSxzZXRIaWdobGlnaHRlZEtleTpZLHNldFNlbGVjdGVkS2V5Okd9KSxbSyxxXSk7cmV0dXJuIFgodjMse3ZhbHVlOk4sY2hpbGRyZW46WChSMyx7dmFsdWU6QixjaGlsZHJlbjpKfSl9KX1mdW5jdGlvbiBkOSh7b3ZlcmxheUVuYWJsZWQ6JCxzdHJlYW1pbmc6SixvblRvZ2dsZU92ZXJsYXk6UX0pe2xldHtzdGF0dXM6Wn09TjIoKSxbSyxZXT1BKCExKSxxPSQmJko7cmV0dXJuIFgocjEuQnV0dG9uLHsiYXJpYS1sYWJlbCI6JD8iSGlkZSBhY2Nlc3NpYmlsaXR5IG92ZXJsYXkiOiJTaG93IGFjY2Vzc2liaWxpdHkgb3ZlcmxheSIsImFyaWEtcHJlc3NlZCI6JCx0aXRsZTpaLG9uQ2xpY2s6USxvbk1vdXNlRW50ZXI6KCk9PlkoITApLG9uTW91c2VMZWF2ZTooKT0+WSghMSksc3R5bGU6cT97YmFja2dyb3VuZDpLPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIjoicmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC45NSkifTp2b2lkIDAsY2hpbGRyZW46WChtMCx7c2l6ZToxOSxzdHJva2VXaWR0aDoyfSl9KX1mdW5jdGlvbiBFNSh7Y2xhc3NOYW1lOiQ9IiJ9KXtyZXR1cm4gWCgiYSIse2hyZWY6Imh0dHBzOi8vZ2l0aHViLmNvbS9leHBvL3NlcnZlLXNpbSIsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9yZWZlcnJlciIsY2xhc3NOYW1lOmBpbmxpbmUtZmxleCBoLVszMHB4XSBtaW4tdy0wIGl0ZW1zLWNlbnRlciB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkLW1kIHB4LTEuNSBmb250LW1vbm8gdGV4dC1bMTJweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzY1IG5vLXVuZGVybGluZSBbdHJhbnNpdGlvbjpiYWNrZ3JvdW5kXzAuMTVzX2Vhc2UsY29sb3JfMC4xNXNfZWFzZV0gaG92ZXI6Ymctd2hpdGUvOCBob3Zlcjp0ZXh0LXdoaXRlLzg1IGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXdoaXRlLzYwICR7JH1gLnRyaW0oKSwiYXJpYS1sYWJlbCI6Ik9wZW4gc2VydmUtc2ltIix0aXRsZToiT3BlbiBzZXJ2ZS1zaW0iLGNoaWxkcmVuOiJzZXJ2ZS1zaW0ifSl9ZnVuY3Rpb24gYzkoe29wZW46JCxvbkNsaWNrOkp9KXtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOmBmaXhlZCB0b3AtMyBsZWZ0LTMgei0zMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBwLTEgW3RyYW5zaXRpb246b3BhY2l0eV8wLjE4c19lYXNlXSAkeyQ/Im9wYWNpdHktMCBwb2ludGVyLWV2ZW50cy1ub25lIjoib3BhY2l0eS0xMDAgcG9pbnRlci1ldmVudHMtYXV0byJ9YCxjaGlsZHJlbjpbWCgiYnV0dG9uIix7b25DbGljazpKLGNsYXNzTmFtZToidy1bMzBweF0gaC1bMzBweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcm91bmRlZC1tZCB0ZXh0LVsjOGU4ZTkzXSBjdXJzb3ItcG9pbnRlciBbdHJhbnNpdGlvbjpiYWNrZ3JvdW5kXzAuMTVzX2Vhc2UsY29sb3JfMC4xNXNfZWFzZV0gaG92ZXI6Ymctd2hpdGUvOCBob3Zlcjp0ZXh0LXdoaXRlIiwiYXJpYS1sYWJlbCI6Ik9wZW4gZGV2aWNlcyBzaWRlYmFyIiwiYXJpYS1wcmVzc2VkIjokLHRpdGxlOiJEZXZpY2VzIixjaGlsZHJlbjpYKEUwLHtzaXplOjE4LHN0cm9rZVdpZHRoOjEuNzV9KX0pLFgoRTUse30pXX0pfWZ1bmN0aW9uIG85KCQpe2lmKCFOdW1iZXIuaXNGaW5pdGUoJCl8fCQ8PTApcmV0dXJuIjAgQiI7bGV0IEo9JC8xMDczNzQxODI0O2lmKEo+PTEpcmV0dXJuYCR7Si50b0ZpeGVkKEo+PTEwPzA6MSl9IEdCYDtyZXR1cm5gJHsoJC8xMDQ4NTc2KS50b0ZpeGVkKDApfSBNQmB9ZnVuY3Rpb24geTUoJCl7bGV0IEo9JC5tYXRjaCgvXihbYS16QS1aXSspLSguKykkLyk7aWYoIUopcmV0dXJue29zOiQsdmVyc2lvbjoiIn07cmV0dXJue29zOkpbMV0sdmVyc2lvbjpKWzJdLnJlcGxhY2UoLy0vZywiLiIpfX1mdW5jdGlvbiByOSgkKXtyZXR1cm4geTUoJCkudmVyc2lvbnx8JH1mdW5jdGlvbiBiNSgkKXtsZXR7b3M6Six2ZXJzaW9uOlF9PXk1KCQpO3JldHVybiBRP2Ake0p9ICR7UX1gOkp9ZnVuY3Rpb24geDUoe2Nocm9tZTokLHNjcmVlbjpKLGludGVyYWN0aXZlOlE9ITEsb25CdXR0b246WixvbkNyb3duV2hlZWw6S30pe3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAiLGNoaWxkcmVuOlskLmJ1dHRvbnMubWFwKChZKT0+WChuJCx7Y2hyb21lOiQsYnV0dG9uOlksaW50ZXJhY3RpdmU6USxvbkJ1dHRvbjpaLG9uV2hlZWw6USYmWS5uYW1lPT09ImRpZ2l0YWwtY3Jvd24iP0s6dm9pZCAwfSxgYnV0dG9uLSR7WS5uYW1lfWApKSwkLmNvbXBvc2l0ZUltYWdlP1goYTkse2Nocm9tZTokLGltYWdlOiQuY29tcG9zaXRlSW1hZ2UscmVjdDokLmJvZHksekluZGV4OjF9KTokLnNsaWNlJiYkLmNvcm5lcj9YKHMkLHtjaHJvbWU6JH0pOm51bGwsWCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gYmctYmxhY2siLHN0eWxlOnsuLi5oMygkLCQuc2NyZWVuLDIpLGJvcmRlclJhZGl1czphJCgkKX0sY2hpbGRyZW46Sn0pXX0pfWZ1bmN0aW9uIGEkKCQpe3JldHVybmAkeyQuc2NyZWVuUmFkaXVzLyQuc2NyZWVuLndpZHRoKjEwMH0lIC8gJHskLnNjcmVlblJhZGl1cy8kLnNjcmVlbi5oZWlnaHQqMTAwfSVgfWZ1bmN0aW9uIG4kKHtjaHJvbWU6JCxidXR0b246SixpbnRlcmFjdGl2ZTpRLG9uQnV0dG9uOlosb25XaGVlbDpLfSl7bGV0W1kscV09QSghMSksW0csTl09QSghMSksQj1UKG51bGwpLEw9VChudWxsKSxWPVQoSyk7Vi5jdXJyZW50PUssYigoKT0+e2xldCBTPUwuY3VycmVudDtpZighU3x8IUspcmV0dXJuO2xldCBqPSgkMSk9PnskMS5wcmV2ZW50RGVmYXVsdCgpLCQxLnN0b3BQcm9wYWdhdGlvbigpLFYuY3VycmVudD8uKCQxLmRlbHRhWSwkMS5kZWx0YU1vZGUpfTtyZXR1cm4gUy5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsaix7cGFzc2l2ZTohMX0pLCgpPT5TLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndoZWVsIixqKX0sWyEhS10pO2xldCBVPVEmJkoudXNhZ2VQYWdlIT1udWxsJiZKLnVzYWdlIT1udWxsLHo9RCgoKT0+e2lmKEIuY3VycmVudD09PW51bGwpcmV0dXJuO0IuY3VycmVudD1udWxsLE4oITEpLFo/Lih7cGhhc2U6InVwIixidXR0b246Sn0pfSxbSixaXSksaz1EKChTKT0+e2lmKFMuYnV0dG9uIT09MCYmUy5wb2ludGVyVHlwZT09PSJtb3VzZSIpcmV0dXJuO1MucHJldmVudERlZmF1bHQoKSxTLnN0b3BQcm9wYWdhdGlvbigpLEIuY3VycmVudD1TLnBvaW50ZXJJZDt0cnl7Uy5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKFMucG9pbnRlcklkKX1jYXRjaHt9TighMCksWj8uKHtwaGFzZToiZG93biIsYnV0dG9uOkp9KX0sW0osWl0pLEg9Si5vblRvcD81OjAsQz1VJiYoWXx8RyksRj0oQz9KLmhvdmVyLng6MCkqMTAwLE89KEM/Si5ob3Zlci55OjApKjEwMCxJPUcmJkouaW1hZ2VEb3duP0ouaW1hZ2VEb3duOkouaW1hZ2Usdz1VP3tvblBvaW50ZXJEb3duOmssb25Qb2ludGVyVXA6eixvblBvaW50ZXJDYW5jZWw6eixvblBvaW50ZXJFbnRlcjooKT0+cSghMCksb25Qb2ludGVyTGVhdmU6KCk9PntxKCExKSx6KCl9fTp7fTtyZXR1cm4gWCgiZGl2Iix7cmVmOkwscm9sZTpVPyJidXR0b24iOnZvaWQgMCwiYXJpYS1sYWJlbCI6VT9pOShKLm5hbWUpOnZvaWQgMCwiYXJpYS1oaWRkZW4iOlU/dm9pZCAwOiEwLHRpdGxlOlU/aTkoSi5uYW1lKTp2b2lkIDAsY2xhc3NOYW1lOiJhYnNvbHV0ZSBzZWxlY3Qtbm9uZSIsc3R5bGU6ey4uLmgzKCQsSi5mcmFtZSxIKSx0cmFuc2Zvcm06Rnx8Tz9gdHJhbnNsYXRlKCR7Rn0lLCAke099JSlgOnZvaWQgMCx0cmFuc2l0aW9uOiJ0cmFuc2Zvcm0gMC4xMnMgZWFzZSIsY3Vyc29yOlU/InBvaW50ZXIiOnZvaWQgMCxwb2ludGVyRXZlbnRzOlU/ImF1dG8iOiJub25lIix0b3VjaEFjdGlvbjoibm9uZSJ9LC4uLncsY2hpbGRyZW46SSYmWCgiaW1nIix7YWx0OiIiLCJhcmlhLWhpZGRlbiI6ITAsZHJhZ2dhYmxlOiExLHNyYzpuOSgkLmlkZW50aWZpZXIsSSksY2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIHNpemUtZnVsbCBzZWxlY3Qtbm9uZSIsc3R5bGU6e29iamVjdEZpdDoiZmlsbCIsZmlsdGVyOkcmJiFKLmltYWdlRG93bj8iYnJpZ2h0bmVzcygxLjQpIjp2b2lkIDAsdHJhbnNpdGlvbjoiZmlsdGVyIDAuMTJzIGVhc2UiLFdlYmtpdFVzZXJEcmFnOiJub25lIn19KX0pfWZ1bmN0aW9uIGk5KCQpe3JldHVybiAkLnNwbGl0KCItIikubWFwKChKKT0+Si5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStKLnNsaWNlKDEpKS5qb2luKCIgIil9ZnVuY3Rpb24gcyQoe2Nocm9tZTokfSl7aWYoISQuc2xpY2V8fCEkLmNvcm5lcilyZXR1cm4gbnVsbDtsZXR7Ym9keTpKLGNvcm5lcjpRLHNsaWNlOlp9PSQsSz1NYXRoLm1heChKLndpZHRoLVEud2lkdGgqMiwwKSxZPU1hdGgubWF4KEouaGVpZ2h0LVEuaGVpZ2h0KjIsMCkscT1be2tleToidG9wLWxlZnQiLGltYWdlOloudG9wTGVmdCxyZWN0Ont4OkoueCx5OkoueSx3aWR0aDpRLndpZHRoLGhlaWdodDpRLmhlaWdodH19LHtrZXk6InRvcC1yaWdodCIsaW1hZ2U6Wi50b3BSaWdodCxyZWN0Ont4OkoueCtKLndpZHRoLVEud2lkdGgseTpKLnksd2lkdGg6US53aWR0aCxoZWlnaHQ6US5oZWlnaHR9fSx7a2V5OiJib3R0b20tbGVmdCIsaW1hZ2U6Wi5ib3R0b21MZWZ0LHJlY3Q6e3g6Si54LHk6Si55K0ouaGVpZ2h0LVEuaGVpZ2h0LHdpZHRoOlEud2lkdGgsaGVpZ2h0OlEuaGVpZ2h0fX0se2tleToiYm90dG9tLXJpZ2h0IixpbWFnZTpaLmJvdHRvbVJpZ2h0LHJlY3Q6e3g6Si54K0oud2lkdGgtUS53aWR0aCx5OkoueStKLmhlaWdodC1RLmhlaWdodCx3aWR0aDpRLndpZHRoLGhlaWdodDpRLmhlaWdodH19LHtrZXk6InRvcCIsaW1hZ2U6Wi50b3AscmVjdDp7eDpKLngrUS53aWR0aCx5OkoueSx3aWR0aDpLLGhlaWdodDpRLmhlaWdodH19LHtrZXk6ImJvdHRvbSIsaW1hZ2U6Wi5ib3R0b20scmVjdDp7eDpKLngrUS53aWR0aCx5OkoueStKLmhlaWdodC1RLmhlaWdodCx3aWR0aDpLLGhlaWdodDpRLmhlaWdodH19LHtrZXk6ImxlZnQiLGltYWdlOloubGVmdCxyZWN0Ont4OkoueCx5OkoueStRLmhlaWdodCx3aWR0aDpRLndpZHRoLGhlaWdodDpZfX0se2tleToicmlnaHQiLGltYWdlOloucmlnaHQscmVjdDp7eDpKLngrSi53aWR0aC1RLndpZHRoLHk6Si55K1EuaGVpZ2h0LHdpZHRoOlEud2lkdGgsaGVpZ2h0Oll9fV07cmV0dXJuIFgoWjEse2NoaWxkcmVuOnEuZmlsdGVyKChHKT0+Ry5yZWN0LndpZHRoPjAmJkcucmVjdC5oZWlnaHQ+MCkubWFwKChHKT0+WChhOSx7Y2hyb21lOiQsaW1hZ2U6Ry5pbWFnZSxyZWN0OkcucmVjdCx6SW5kZXg6MX0sRy5rZXkpKX0pfWZ1bmN0aW9uIGE5KHtjaHJvbWU6JCxpbWFnZTpKLHJlY3Q6USx6SW5kZXg6Wn0pe3JldHVybiBYKCJpbWciLHthbHQ6IiIsImFyaWEtaGlkZGVuIjohMCxkcmFnZ2FibGU6ITEsc3JjOm45KCQuaWRlbnRpZmllcixKKSxjbGFzc05hbWU6ImFic29sdXRlIHNlbGVjdC1ub25lIixzdHlsZTp7Li4uaDMoJCxRLFopLG9iamVjdEZpdDoiZmlsbCIscG9pbnRlckV2ZW50czoibm9uZSIsV2Via2l0VXNlckRyYWc6Im5vbmUifX0pfWZ1bmN0aW9uIG45KCQsSil7bGV0IFE9YGdyaWQvYXBpL2RldmljZWtpdC1jaHJvbWU/Y2hyb21lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCQpfSZpbWFnZT0ke2VuY29kZVVSSUNvbXBvbmVudChKKX1gO3JldHVybiB0eXBlb2Ygd2luZG93PiJ1Ij9gLyR7UX1gOmYxKFEpfWZ1bmN0aW9uIGgzKCQsSixRKXtyZXR1cm57bGVmdDpTNShKLngsJC5mcmFtZS53aWR0aCksdG9wOlM1KEoueSwkLmZyYW1lLmhlaWdodCksd2lkdGg6UzUoSi53aWR0aCwkLmZyYW1lLndpZHRoKSxoZWlnaHQ6UzUoSi5oZWlnaHQsJC5mcmFtZS5oZWlnaHQpLHpJbmRleDpRfX1mdW5jdGlvbiBTNSgkLEope3JldHVybmAkeyQvSioxMDB9JWB9ZnVuY3Rpb24gczkoe25hbWU6JCxydW50aW1lOkosY2hyb21lOlEscGxhY2Vob2xkZXJBc3NldDpaLGJ1c3k6SyxidXN5TGFiZWw6WT0iU3RhcnRpbmfigKYiLGVycm9yOnEsb25TdGFydDpHfSl7bGV0IE49STAoJCksQj1TMVtOXSxMPVo/P251bGwsVj1MP251bGw6UT8/bnVsbCxVPVY/e3dpZHRoOlYuc2NyZWVuLndpZHRoLGhlaWdodDpWLnNjcmVlbi5oZWlnaHR9OnEyKE4sJCksej1HMihOLFUpLGs9TD90JChOLEwubmFtZSk6Vj96KlYuZnJhbWUud2lkdGgvVi5zY3JlZW4ud2lkdGg6eipCLndpZHRoLyhCLndpZHRoLTIqQi5iZXplbFgpLEg9TD97d2lkdGg6TC53aWR0aCxoZWlnaHQ6TC5oZWlnaHR9OlY/e3dpZHRoOlYuZnJhbWUud2lkdGgsaGVpZ2h0OlYuZnJhbWUuaGVpZ2h0fTp7d2lkdGg6Qi53aWR0aCxoZWlnaHQ6Qi5oZWlnaHR9LEM9YCR7SC53aWR0aH0gLyAke0guaGVpZ2h0fWAsRj0oSC53aWR0aC9ILmhlaWdodCplJChOKSkudG9GaXhlZCgyKSxPPU49PT0idmlzaW9uIj9YKFFKLHt9KTpYKCRKLHt0eXBlOk59KTtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtNSBtaW4tdy0wIHctZnVsbCIsY2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToicmVsYXRpdmUgdy1mdWxsIixzdHlsZTp7d2lkdGg6YG1pbigxMDAlLCAke2t9cHgsICR7Rn1kdmgpYCxtYXhXaWR0aDprLGFzcGVjdFJhdGlvOkN9LGNoaWxkcmVuOkw/WChKSix7bmFtZTpMLm5hbWUsZmFsbGJhY2s6T30pOlY/WCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIHBvaW50ZXItZXZlbnRzLW5vbmUiLGNoaWxkcmVuOlgoeDUse2Nocm9tZTpWfSl9KTpPfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LWNlbnRlciIsY2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToidGV4dC1bMTdweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzkwIixjaGlsZHJlbjokfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LVsxM3B4XSB0ZXh0LXdoaXRlLzQ1IixjaGlsZHJlbjpbYjUoSiksIiBTaW11bGF0b3IiXX0pXX0pLHEmJlgoImRpdiIse2NsYXNzTmFtZToidGV4dC1kYW5nZXIgdGV4dC1bMTJweF0gZm9udC1tb25vIG1heC13LTkwIHRleHQtY2VudGVyIixjaGlsZHJlbjpxfSksWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOkcsZGlzYWJsZWQ6SyxjbGFzc05hbWU6YGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHB4LTUgcHktMiByb3VuZGVkLWZ1bGwgdGV4dC1bMTRweF0gZm9udC1tZWRpdW0gW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjE1c10gJHtLPyJiZy13aGl0ZS84IHRleHQtd2hpdGUvNTUgY3Vyc29yLWRlZmF1bHQiOiJiZy13aGl0ZS8xMiB0ZXh0LXdoaXRlLzkwIGhvdmVyOmJnLXdoaXRlLzE4IGN1cnNvci1wb2ludGVyIn1gLGNoaWxkcmVuOltLJiZYKCJzcGFuIix7ImFyaWEtaGlkZGVuIjohMCxjbGFzc05hbWU6InNpemUtMy41IHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItd2hpdGUvMjUgYW5pbWF0ZS1bZ3JpZC1zcGluXzAuOHNfbGluZWFyX2luZmluaXRlXSIsc3R5bGU6e2JvcmRlclRvcENvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOSkifX0pLEs/WToiU3RhcnQiXX0pXX0pfWZ1bmN0aW9uIHQkKCQsSil7aWYoJD09PSJ3YXRjaCIpe2lmKEouaW5jbHVkZXMoInVsdHJhIikpcmV0dXJuIDI1NTtpZihKLmluY2x1ZGVzKCJ3YXRjaC1zZS0iKXx8Si5pbmNsdWRlcygiYXBwbGUtd2F0Y2gtc2UtIikpcmV0dXJuIDIzODtyZXR1cm4gMjUwfWlmKCQ9PT0idmlzaW9uIilyZXR1cm4gMzkwO2lmKCQ9PT0iaXBhZCIpcmV0dXJuIDM0MDtyZXR1cm4gMjgwfWZ1bmN0aW9uIGUkKCQpe2lmKCQ9PT0idmlzaW9uIilyZXR1cm4gMzQ7aWYoJD09PSJpcGFkIilyZXR1cm4gNTA7aWYoJD09PSJ3YXRjaCIpcmV0dXJuIDU2O3JldHVybiA1Mn1mdW5jdGlvbiAkSih7dHlwZTokfSl7bGV0IEo9UzFbJF07cmV0dXJuIFgoWjEse2NoaWxkcmVuOltYKCJzdmciLHt2aWV3Qm94OmAwIDAgJHtKLndpZHRofSAke0ouaGVpZ2h0fWAsY2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIHNpemUtZnVsbCIscHJlc2VydmVBc3BlY3RSYXRpbzoieE1pZFlNaWQgbWVldCIsY2hpbGRyZW46W1goImRlZnMiLHtjaGlsZHJlbjpYKCJsaW5lYXJHcmFkaWVudCIse2lkOiJwbGFjZWhvbGRlci1zY3JlZW4iLHgxOiIwIix5MToiMCIseDI6IjEiLHkyOiIxIixjaGlsZHJlbjpbWCgic3RvcCIse29mZnNldDoiMCUiLHN0b3BDb2xvcjoiIzZmYThlNiJ9KSxYKCJzdG9wIix7b2Zmc2V0OiI1NSUiLHN0b3BDb2xvcjoiIzViOTNkNiJ9KSxYKCJzdG9wIix7b2Zmc2V0OiIxMDAlIixzdG9wQ29sb3I6IiM1MTg4Y2YifSldfSl9KSxYKCJyZWN0Iix7eDpKLmJlemVsWCx5OkouYmV6ZWxZLHdpZHRoOkoud2lkdGgtMipKLmJlemVsWCxoZWlnaHQ6Si5oZWlnaHQtMipKLmJlemVsWSxyeDpKLmlubmVyUmFkaXVzLGZpbGw6InVybCgjcGxhY2Vob2xkZXItc2NyZWVuKSJ9KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAgcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46WChNNSx7dHlwZTokfSl9KV19KX1mdW5jdGlvbiBKSih7bmFtZTokLGZhbGxiYWNrOkp9KXtsZXRbUSxaXT1BKCJsb2FkaW5nIik7cmV0dXJuIFgoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCBzaXplLWZ1bGwgcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46W1EhPT0ibG9hZGVkIiYmSixRIT09ImVycm9yIiYmWCgiaW1nIix7YWx0OiIiLCJhcmlhLWhpZGRlbiI6ITAsZHJhZ2dhYmxlOiExLHNyYzpaSigkKSxjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAgc2l6ZS1mdWxsIHNlbGVjdC1ub25lIG9iamVjdC1jb250YWluIixzdHlsZTp7V2Via2l0VXNlckRyYWc6Im5vbmUifSxvbkxvYWQ6KCk9PlooImxvYWRlZCIpLG9uRXJyb3I6KCk9PlooImVycm9yIil9KV19KX1mdW5jdGlvbiBRSigpe2xldHt3aWR0aDokLGhlaWdodDpKfT1TMS52aXNpb247cmV0dXJuIFgoInN2ZyIse3ZpZXdCb3g6YDAgMCAkeyR9ICR7Sn1gLGNsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCBzaXplLWZ1bGwiLHByZXNlcnZlQXNwZWN0UmF0aW86InhNaWRZTWlkIG1lZXQiLGZpbGw6Im5vbmUiLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46W1goImRlZnMiLHtjaGlsZHJlbjpbWCgibGluZWFyR3JhZGllbnQiLHtpZDoidmlzaW9uLXBsYWNlaG9sZGVyLXNoZWxsIix4MToiMCIseTE6IjAiLHgyOiIwIix5MjoiMSIsY2hpbGRyZW46W1goInN0b3AiLHtvZmZzZXQ6IjAlIixzdG9wQ29sb3I6IiMyODI4MmIifSksWCgic3RvcCIse29mZnNldDoiNTQlIixzdG9wQ29sb3I6IiMxMjEyMTQifSksWCgic3RvcCIse29mZnNldDoiMTAwJSIsc3RvcENvbG9yOiIjMDcwNzA4In0pXX0pLFgoImxpbmVhckdyYWRpZW50Iix7aWQ6InZpc2lvbi1wbGFjZWhvbGRlci1nbGFzcyIseDE6IjAiLHkxOiIwIix4MjoiMSIseTI6IjEiLGNoaWxkcmVuOltYKCJzdG9wIix7b2Zmc2V0OiIwJSIsc3RvcENvbG9yOiIjMzEzNTNhIn0pLFgoInN0b3AiLHtvZmZzZXQ6IjQ4JSIsc3RvcENvbG9yOiIjMGEwYjBkIn0pLFgoInN0b3AiLHtvZmZzZXQ6IjEwMCUiLHN0b3BDb2xvcjoiIzAxMDEwMiJ9KV19KSxYKCJyYWRpYWxHcmFkaWVudCIse2lkOiJ2aXNpb24tcGxhY2Vob2xkZXItbGVucyIsY3g6IjUwJSIsY3k6IjQ2JSIscjoiNjAlIixjaGlsZHJlbjpbWCgic3RvcCIse29mZnNldDoiMCUiLHN0b3BDb2xvcjoiIzIwMjgzMiJ9KSxYKCJzdG9wIix7b2Zmc2V0OiI3MiUiLHN0b3BDb2xvcjoiIzA5MGEwZCJ9KSxYKCJzdG9wIix7b2Zmc2V0OiIxMDAlIixzdG9wQ29sb3I6IiMwMTAxMDIifSldfSldfSksWCgicGF0aCIse2Q6Ik05NSAxNzdDOTUgMTE5IDE0NyA4NiAyMTggOTFDMjU3IDk0IDI4NiAxMTEgMzIwIDExMUMzNTQgMTExIDM4MyA5NCA0MjIgOTFDNDkzIDg2IDU0NSAxMTkgNTQ1IDE3N1YyMjJDNTQ1IDI3OCA1MDEgMzExIDQ0MyAzMTBDMzk4IDMwOSAzNzEgMjg2IDM0NSAyNjhDMzI5IDI1NyAzMTEgMjU3IDI5NSAyNjhDMjY5IDI4NiAyNDIgMzA5IDE5NyAzMTBDMTM5IDMxMSA5NSAyNzggOTUgMjIyVjE3N1oiLGZpbGw6InVybCgjdmlzaW9uLXBsYWNlaG9sZGVyLXNoZWxsKSIsc3Ryb2tlOiIjM2QzZDQyIixzdHJva2VXaWR0aDoiNyJ9KSxYKCJwYXRoIix7ZDoiTTExNyAxODFDMTE3IDEzNCAxNTcgMTEyIDIyMCAxMTZDMjYwIDExOSAyODcgMTM2IDMyMCAxMzZDMzUzIDEzNiAzODAgMTE5IDQyMCAxMTZDNDgzIDExMiA1MjMgMTM0IDUyMyAxODFWMjE3QzUyMyAyNjMgNDg4IDI4NyA0MzkgMjg3QzM5OSAyODcgMzY5IDI2NCAzNDUgMjUwQzMyOSAyNDAgMzExIDI0MCAyOTUgMjUwQzI3MSAyNjQgMjQxIDI4NyAyMDEgMjg3QzE1MiAyODcgMTE3IDI2MyAxMTcgMjE3VjE4MVoiLGZpbGw6InVybCgjdmlzaW9uLXBsYWNlaG9sZGVyLWdsYXNzKSIsc3Ryb2tlOiIjMTcxODFiIixzdHJva2VXaWR0aDoiNSJ9KSxYKCJwYXRoIix7ZDoiTTE0MyAxODZDMTQ1IDE0OCAxNzYgMTM1IDIyNiAxMzhDMjY0IDE0MSAyODkgMTU2IDMyMCAxNTZDMzUxIDE1NiAzNzYgMTQxIDQxNCAxMzhDNDY0IDEzNSA0OTUgMTQ4IDQ5NyAxODZWMjEzQzQ5NyAyNTAgNDY5IDI2NiA0MzIgMjY2QzM5NCAyNjYgMzY5IDI0NiAzNDMgMjM1QzMyOCAyMjkgMzEyIDIyOSAyOTcgMjM1QzI3MSAyNDYgMjQ2IDI2NiAyMDggMjY2QzE3MSAyNjYgMTQzIDI1MCAxNDMgMjEzVjE4NloiLGZpbGw6InVybCgjdmlzaW9uLXBsYWNlaG9sZGVyLWxlbnMpIixzdHJva2U6IiMyNjJhMmYiLHN0cm9rZVdpZHRoOiIyIn0pLFgoInBhdGgiLHtkOiJNMTUxIDE3MUMxNzkgMTUwIDIxNyAxNDcgMjUxIDE1NE0zODkgMTU0QzQyMyAxNDcgNDYxIDE1MCA0ODkgMTcxIixzdHJva2U6IiM0ZTUzNWEiLHN0cm9rZVdpZHRoOiIzIixzdHJva2VMaW5lY2FwOiJyb3VuZCJ9KSxYKCJwYXRoIix7ZDoiTTI3NyAyMzNDMjg5IDIyNCAzMDQgMjE5IDMyMCAyMTlDMzM2IDIxOSAzNTEgMjI0IDM2MyAyMzMiLHN0cm9rZToiIzNiNDA0NiIsc3Ryb2tlV2lkdGg6IjQiLHN0cm9rZUxpbmVjYXA6InJvdW5kIn0pXX0pfWZ1bmN0aW9uIFpKKCQpe2xldCBKPWBncmlkL2FwaS9kZXZpY2UtcGxhY2Vob2xkZXItYXNzZXQ/bmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudCgkKX1gO3JldHVybiB0eXBlb2Ygd2luZG93PiJ1Ij9gLyR7Sn1gOmYxKEopfWZ1bmN0aW9uIEwyKHtvcGVuOiQsd2lkdGg6SixjaGlsZHJlbjpRLHN0eWxlOlosc2lkZTpLPSJyaWdodCJ9KXtyZXR1cm4gWCgiYXNpZGUiLHtjbGFzc05hbWU6YGZpeGVkIHotMzUgbWluLXctMCBvdmVyZmxvdy1oaWRkZW4gYmctcGFuZWwtYmcgdGV4dC13aGl0ZS85MCBiYWNrZHJvcC1ibHVyLVsxOHB4XSBbZm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxzeXN0ZW0tdWksc2Fucy1zZXJpZl0gW3RyYW5zaXRpb246dHJhbnNmb3JtXzAuMjVzX2Vhc2Usb3BhY2l0eV8wLjJzX2Vhc2VdIGZsZXggZmxleC1jb2wgJHtLPT09ImxlZnQiPyJ0b3AtMCBib3R0b20tMCBsZWZ0LTAgcm91bmRlZC1ub25lIGJvcmRlci0wIGJvcmRlci1yIGJvcmRlci13aGl0ZS8xMCBzaGFkb3ctWzhweF8wXzMycHhfcmdiYSgwLDAsMCwwLjM1KV0iOiJ0b3AtMyBib3R0b20tMyByaWdodC0zIHJvdW5kZWQtWzE0cHhdIGJvcmRlciBib3JkZXItd2hpdGUvMTAgc2hhZG93LVswXzEycHhfNDBweF9yZ2JhKDAsMCwwLDAuNTUpXSJ9YCxzdHlsZTp7d2lkdGg6Six0cmFuc2Zvcm06JD8idHJhbnNsYXRlWCgwKSI6Sz09PSJsZWZ0Ij8idHJhbnNsYXRlWCgtMTAwJSkiOiJ0cmFuc2xhdGVYKGNhbGMoMTAwJSArIDI0cHgpKSIsb3BhY2l0eTokPzE6MCxwb2ludGVyRXZlbnRzOiQ/ImF1dG8iOiJub25lIiwuLi5afSwiYXJpYS1oaWRkZW4iOiEkLGNoaWxkcmVuOlF9KX1mdW5jdGlvbiB6Mih7Y2hpbGRyZW46JCxzdHlsZTpKfSl7cmV0dXJuIFgoImhlYWRlciIse2NsYXNzTmFtZToiZmxleCBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yLjUgcHgtMi41IHB5LTEuNSBwbC0zIixzdHlsZTpKLGNoaWxkcmVuOiR9KX1mdW5jdGlvbiB0OSh7Y2hpbGRyZW46JH0pe3JldHVybiBYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LW1lZGl1bSB0ZXh0LXdoaXRlLzU1IixjaGlsZHJlbjokfSl9ZnVuY3Rpb24gajUoe29uQ2xpY2s6JCxhcmlhTGFiZWw6Sj0iQ2xvc2UgcGFuZWwiLHRpdGxlOlEsaWNvblNpemU6Wj0xNn0pe3JldHVybiBYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6JCxjbGFzc05hbWU6ImZsZXggaC1bMzBweF0gdy1bMzBweF0gc2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyLW5vbmUgYmctdHJhbnNwYXJlbnQgcC0wIHRleHQtWyM4ZThlOTNdIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjpKLHRpdGxlOlEsY2hpbGRyZW46WChHMCx7c2l6ZTpaLHN0cm9rZVdpZHRoOjJ9KX0pfWZ1bmN0aW9uIGU5KCQsSil7bGV0W1EsWl09QShudWxsKTtyZXR1cm4gYigoKT0+e2lmKCFKfHwhJClyZXR1cm47bGV0IEs9ITEsWT1hc3luYygpPT57dHJ5e2xldCBOPWF3YWl0KGF3YWl0IGZldGNoKCQse2NhY2hlOiJuby1zdG9yZSJ9KSkuanNvbigpO2lmKCFLKVooTil9Y2F0Y2h7fX07WSgpO2xldCBxPXNldEludGVydmFsKFksNTAwMCk7cmV0dXJuKCk9PntLPSEwLGNsZWFySW50ZXJ2YWwocSl9fSxbJCxKXSksUX1mdW5jdGlvbiAkNih7cmVwb3J0OiR9KXtpZighJHx8JC50b3RhbEJ5dGVzPT09MClyZXR1cm4gbnVsbDtsZXR7ZXN0aW1hdGVkQWRkaXRpb25hbDpKLGF2YWlsYWJsZUJ5dGVzOlEsdG90YWxCeXRlczpaLHJ1bm5pbmdTaW11bGF0b3JzOkt9PSQsWT1NYXRoLm1heCgwLE1hdGgubWluKDEsMS1RL1opKSxxPUsrSixHPUo9PT0wPyIjZTY2IjpKPD0xPyIjZTlhMTNiIjoiIzNiMyIsTj1ZPjAuOT8iI2U2NiI6WT4wLjc1PyIjZTlhMTNiIjoiIzNiMyI7cmV0dXJuIFgoImRpdiIse2NsYXNzTmFtZToiaW5saW5lLWZsZXggbWF4LXctZnVsbCBtaW4tdy0wIGZsZXgtbm93cmFwIGl0ZW1zLWNlbnRlciBnYXAtMS41IG92ZXJmbG93LWhpZGRlbiB3aGl0ZXNwYWNlLW5vd3JhcCBweC0yIHB5LVszcHhdIHJvdW5kZWQtZnVsbCBiZy1bIzEwMTAxMF0gYm9yZGVyIGJvcmRlci1bIzIyMl0gZm9udC1tb25vIHRleHQtWzExcHhdIHRleHQtd2hpdGUvNzAgbGVhZGluZy1ub25lIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToic2l6ZS0xLjUgcm91bmRlZC1bM3B4XSBzaHJpbmstMCIsc3R5bGU6e2JhY2tncm91bmQ6R319KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJtaW4tdy0wIHRydW5jYXRlIixjaGlsZHJlbjpbWCgic3BhbiIse2NoaWxkcmVuOltLLCIvIixxLCIgc2ltcyJdfSksWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC13aGl0ZS80MCIsY2hpbGRyZW46IiDCtyAifSksWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC13aGl0ZS81NSIsY2hpbGRyZW46W285KFEpLCIgZnJlZSJdfSldfSksWCgic3BhbiIseyJhcmlhLWhpZGRlbiI6ITAsY2xhc3NOYW1lOiJtbC0wLjUgdy03IGgtWzNweF0gc2hyaW5rLTAgYmctWyMxYzFjMWNdIHJvdW5kZWQtWzJweF0gb3ZlcmZsb3ctaGlkZGVuIGlubGluZS1ibG9jayIsY2hpbGRyZW46WCgic3BhbiIse2NsYXNzTmFtZToiYmxvY2sgaC1mdWxsIHRyYW5zaXRpb24tW3dpZHRoLGJhY2tncm91bmRdIGR1cmF0aW9uLTMwMCBlYXNlLW91dCIsc3R5bGU6e3dpZHRoOmAkeyhZKjEwMCkudG9GaXhlZCgxKX0lYCxiYWNrZ3JvdW5kOk59fSl9KV19KX1mdW5jdGlvbiBKNih7dHlwZTokLHNpemU6Sj0yMCxzY3JlZW5PbjpRPSExfSl7bGV0IFo9e3dpZHRoOkosaGVpZ2h0Okosdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6MS42LHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQifTtzd2l0Y2goJCl7Y2FzZSJpcGFkIjpyZXR1cm4gWCgic3ZnIix7Li4uWixjaGlsZHJlbjpbUSYmWCgicmVjdCIse3g6IjUiLHk6IjMiLHdpZHRoOiIxNSIsaGVpZ2h0OiIxOSIscng6IjEuNjUiLGZpbGw6IiM0N2I3ZmYiLHN0cm9rZToibm9uZSIsImRhdGEtdGVzdGlkIjoiZGV2aWNlLWdseXBoLXNjcmVlbi1vbiJ9KSxYKCJyZWN0Iix7eDoiNCIseToiMi41Iix3aWR0aDoiMTYiLGhlaWdodDoiMTkiLHJ4OiIyLjUifSksWCgibGluZSIse3gxOiIxMiIseTE6IjE4LjUiLHgyOiIxMiIseTI6IjE4LjUifSldfSk7Y2FzZSJ3YXRjaCI6cmV0dXJuIFgoInN2ZyIsey4uLlosY2hpbGRyZW46W1goInJlY3QiLHt4OiI2LjUiLHk6IjciLHdpZHRoOiIxMSIsaGVpZ2h0OiIxMCIscng6IjMifSksWCgicGF0aCIse2Q6Ik04LjUgN2wuNi0zLjJBMS41IDEuNSAwIDAgMSAxMC42IDIuNWgyLjhhMS41IDEuNSAwIDAgMSAxLjUgMS4zTDE1LjUgNyJ9KSxYKCJwYXRoIix7ZDoiTTguNSAxN2wuNiAzLjJhMS41IDEuNSAwIDAgMCAxLjUgMS4zaDIuOGExLjUgMS41IDAgMCAwIDEuNS0xLjNsLjYtMy4yIn0pXX0pO2Nhc2UidmlzaW9uIjpyZXR1cm4gWCgic3ZnIix7Li4uWixjaGlsZHJlbjpYKCJwYXRoIix7ZDoiTTMgMTFhNCA0IDAgMCAxIDQtNGgxMGE0IDQgMCAwIDEgNCA0djIuNWEyLjUgMi41IDAgMCAxLTIuNSAyLjVjLTEuOCAwLTIuNS0xLjItMy41LTEuOC0uOS0uNS0xLjYtLjctMi41LS43cy0xLjYuMi0yLjUuN2MtMSAuNi0xLjcgMS44LTMuNSAxLjhBMi41IDIuNSAwIDAgMSAzIDEzLjV6In0pfSk7ZGVmYXVsdDpyZXR1cm4gWCgic3ZnIix7Li4uWixjaGlsZHJlbjpbUSYmWCgicmVjdCIse3g6IjYiLHk6IjMiLHdpZHRoOiIxMSIsaGVpZ2h0OiIxOSIscng6IjIiLGZpbGw6IiM0N2I3ZmYiLHN0cm9rZToibm9uZSIsImRhdGEtdGVzdGlkIjoiZGV2aWNlLWdseXBoLXNjcmVlbi1vbiJ9KSxYKCJyZWN0Iix7eDoiNi41Iix5OiIyLjUiLHdpZHRoOiIxMSIsaGVpZ2h0OiIxOSIscng6IjIuOCJ9KSxYKCJsaW5lIix7eDE6IjEwLjUiLHkxOiI1Iix4MjoiMTMuNSIseTI6IjUifSldfSl9fWZ1bmN0aW9uIFE2KHtkZXZpY2U6JCxhY3RpdmU6SixzdGFydGluZzpRLHNodXR0aW5nRG93bjpaLG9uU2VsZWN0Okssb25TaHV0ZG93bjpZfSl7bGV0IHE9JC5oZWxwZXIsRz0kLnN0YXRlPT09IkJvb3RlZCIsTj1JMCgkLm5hbWUpLEI9cjkoJC5ydW50aW1lKSxMPXE/IlN0cmVhbWluZyI6UT9HPyJTdGFydGluZ+KApiI6IkJvb3RpbmfigKYiOlo/IlNodXR0aW5nIGRvd27igKYiOkc/IkJvb3RlZCI6bnVsbCxWPXE/IiMzNGQzOTkiOkc/IiNlOWExM2IiOm51bGwsVT1xfHxHLHo9cT9KPyJiZy1bIzI2MzY0Y10iOiJiZy1bIzIwMmIzYV0iOko/ImJnLXdoaXRlLzE1IjoiYmctd2hpdGUvNiIsaz1xPyJ0ZXh0LVsjZDJlN2ZmXSI6Sj8idGV4dC13aGl0ZS85MCI6InRleHQtd2hpdGUvNTUiO3JldHVybiBYKCJkaXYiLHtyb2xlOiJidXR0b24iLHRhYkluZGV4OjAsImFyaWEtcHJlc3NlZCI6SixvbkNsaWNrOkssb25LZXlEb3duOihIKT0+e2lmKEgua2V5PT09IkVudGVyInx8SC5rZXk9PT0iICIpSC5wcmV2ZW50RGVmYXVsdCgpLEsoKX0sY2xhc3NOYW1lOmBncm91cCByZWxhdGl2ZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMi41IHB4LTIgcHktMS41IHJvdW5kZWQtbGcgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmUgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjEyc10gJHtKPyJiZy13aGl0ZS8xMCB0ZXh0LXdoaXRlIjoidGV4dC13aGl0ZS85MCBob3ZlcjpiZy13aGl0ZS84In1gLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6YHJlbGF0aXZlIHNocmluay0wIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHNpemUtOSByb3VuZGVkLVs5cHhdIG92ZXJmbG93LWhpZGRlbiAke3p9YCxjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZTprLGNoaWxkcmVuOlgoSjYse3R5cGU6TixzY3JlZW5PbjpCb29sZWFuKHEpfSl9KSxWJiYhcSYmWCgic3BhbiIse2NsYXNzTmFtZToiYWJzb2x1dGUgYm90dG9tLTAuNSByaWdodC0wLjUgc2l6ZS0xLjUgcm91bmRlZC1mdWxsIHJpbmctMiByaW5nLVsjMWMxYzFlXSIsc3R5bGU6e2JhY2tncm91bmQ6Vn19KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6Im1pbi13LTAgZmxleC0xIixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJ0cnVuY2F0ZSB0ZXh0LVsxM3B4XSBmb250LXNlbWlib2xkIGxlYWRpbmctdGlnaHQiLGNoaWxkcmVuOiQubmFtZX0pLEwmJlgoImRpdiIse2NsYXNzTmFtZTpgdHJ1bmNhdGUgdGV4dC1bMTFweF0gbGVhZGluZy10aWdodCAke3E/InRleHQtWyMzNGQzOTldIjpKPyJ0ZXh0LXdoaXRlLzc1IjoidGV4dC13aGl0ZS80NSJ9YCxjaGlsZHJlbjpMfSldfSksWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLXJvdy10cmFpbGluZy1zbG90IixjbGFzc05hbWU6InJlbGF0aXZlIHNocmluay0wIHctOCBoLTYgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQiLGNoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOmBhYnNvbHV0ZSByaWdodC0wIHRleHQtWzExcHhdIGZvbnQtbW9ubyB0YWJ1bGFyLW51bXMgW3RyYW5zaXRpb246b3BhY2l0eV8wLjEyc10gJHtKPyJ0ZXh0LXdoaXRlLzg1IjoidGV4dC13aGl0ZS80MCJ9ICR7VT8iZ3JvdXAtaG92ZXI6b3BhY2l0eS0wIGdyb3VwLWZvY3VzLXdpdGhpbjpvcGFjaXR5LTAiOiIifWAsY2hpbGRyZW46Qn0pLFUmJlgoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsdGl0bGU6Wj8iU2h1dHRpbmcgZG93buKApiI6IlNodXQgZG93biBzaW11bGF0b3IiLCJhcmlhLWxhYmVsIjoiU2h1dCBkb3duIHNpbXVsYXRvciIsb25DbGljazooSCk9PntILnByZXZlbnREZWZhdWx0KCksSC5zdG9wUHJvcGFnYXRpb24oKSxZKCl9LGRpc2FibGVkOlosY2xhc3NOYW1lOmBhYnNvbHV0ZSByaWdodC0wIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciBzaXplLTUgcm91bmRlZC1tZCBvcGFjaXR5LTAgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgZm9jdXMtdmlzaWJsZTpvcGFjaXR5LTEwMCBbdHJhbnNpdGlvbjpvcGFjaXR5XzAuMTJzLGJhY2tncm91bmRfMC4xMnMsY29sb3JfMC4xMnNdICR7Sj8idGV4dC13aGl0ZS84MCBob3ZlcjpiZy13aGl0ZS8yMCI6InRleHQtd2hpdGUvNzAgaG92ZXI6Ymctd2hpdGUvMTIgaG92ZXI6dGV4dC13aGl0ZSJ9YCxjaGlsZHJlbjpYKEcwLHtzaXplOjEzLHN0cm9rZVdpZHRoOjIuMn0pfSldfSldfSl9dmFyIFUyPSJ2YXIoLS1zZXJ2ZS1zaW0tcGFuZWwtYmcpIixnMz0idmFyKC0tc2VydmUtc2ltLXBhbmVsLWJnLXRyYW5zcGFyZW50KSI7dmFyIFhKPTEyO2Z1bmN0aW9uIFo2KHtvcGVuOiQsb25DbG9zZTpKLHdpZHRoOlEsc2lkZTpaPSJyaWdodCIsZGV2aWNlczpLLHRvdGFsOlk9MCxoYXNNb3JlOnE9ITEsb25Mb2FkTW9yZTpHLG9uTG9hZEFsbDpOLG9uUmVzZXRQYWdlOkIsc2VsZWN0ZWRVZGlkOkwsb25TZWxlY3Q6VixzdGFydGluZzpVLHNodXR0aW5nRG93bjp6LG9uU2h1dGRvd246a30pe2xldCBDPSh0eXBlb2Ygd2luZG93PiJ1Ij92b2lkIDA6d2luZG93Ll9fU0lNX1BSRVZJRVdfXyk/LmdyaWRNZW1vcnlFbmRwb2ludD8/KHR5cGVvZiB3aW5kb3c+InUiP3ZvaWQgMDpmMSgiZ3JpZC9hcGkvbWVtb3J5IikpLEY9ZTkoQywkKSxbTyxJXT1BKCIiKSx3PVQxKCgpPT57bGV0IG09Ty50cmltKCkudG9Mb3dlckNhc2UoKTtpZighbXx8IUspcmV0dXJuIEs7cmV0dXJuIEsuZmlsdGVyKChjKT0+Yy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobSl8fGI1KGMucnVudGltZSkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhtKSl9LFtLLE9dKSxTPVQoITEpO2IoKCk9PntsZXQgbT0hIU8udHJpbSgpO2lmKG0mJnEpTj8uKCk7ZWxzZSBpZighbSYmUy5jdXJyZW50KUI/LigpO1MuY3VycmVudD1tfSxbTyxxLE4sQl0pO2xldCBqPVQobnVsbCk7cmV0dXJuIFgoTDIse29wZW46JCx3aWR0aDpRLHNpZGU6WixzdHlsZTp7YmFja2dyb3VuZENvbG9yOlUyfSxjaGlsZHJlbjpbWCh6Mix7c3R5bGU6e2p1c3RpZnlDb250ZW50OiJmbGV4LXN0YXJ0IixwYWRkaW5nTGVmdDoxNixwYWRkaW5nVG9wOjE2LGdhcDo0fSxjaGlsZHJlbjpbWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOkosY2xhc3NOYW1lOiJmbGV4IGgtWzMwcHhdIHctWzMwcHhdIHNocmluay0wIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIGJvcmRlci1ub25lIGJnLXRyYW5zcGFyZW50IHRleHQtWyM4ZThlOTNdIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjoiQ2xvc2UgZGV2aWNlcyBzaWRlYmFyIiwiYXJpYS1wcmVzc2VkIjohMCx0aXRsZToiRGV2aWNlcyIsY2hpbGRyZW46WChFMCx7c2l6ZToxOCxzdHJva2VXaWR0aDoxLjc1fSl9KSxYKEU1LHt9KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6InB4LTQgcGItMiBwdC0wLjUgc2hyaW5rLTAiLGNoaWxkcmVuOlgoImxhYmVsIix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0yLjUgaC04IHJvdW5kZWQtbGcgYmctd2hpdGUvNiBmb2N1cy13aXRoaW46Ymctd2hpdGUvMTAgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjEyc10iLGNoaWxkcmVuOltYKGcyLHtzaXplOjE0LHN0cm9rZVdpZHRoOjIsY2xhc3NOYW1lOiJ0ZXh0LXdoaXRlLzQwIHNocmluay0wIn0pLFgoImlucHV0Iix7dmFsdWU6TyxvbkNoYW5nZToobSk9PkkobS50YXJnZXQudmFsdWUpLHBsYWNlaG9sZGVyOiJTZWFyY2giLGNsYXNzTmFtZToibWluLXctMCBmbGV4LTEgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgb3V0bGluZS1ub25lIHRleHQtWzEzcHhdIHRleHQtd2hpdGUvOTAgcGxhY2Vob2xkZXI6dGV4dC13aGl0ZS80MCJ9KSxPJiZYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLCJhcmlhLWxhYmVsIjoiQ2xlYXIgc2VhcmNoIixvbkNsaWNrOigpPT5JKCIiKSxjbGFzc05hbWU6InNocmluay0wIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHNpemUtNCByb3VuZGVkLWZ1bGwgYmctd2hpdGUvMTUgdGV4dC13aGl0ZS83MCBob3ZlcjpiZy13aGl0ZS8yNSIsY2hpbGRyZW46WChHMCx7c2l6ZTo5LHN0cm9rZVdpZHRoOjN9KX0pXX0pfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSBmbGV4LTEgbWluLWgtMCIsY2hpbGRyZW46W1goImRpdiIse3JlZjpqLG9uU2Nyb2xsOigpPT57aWYoTy50cmltKCl8fCFxfHwhRylyZXR1cm47bGV0IG09ai5jdXJyZW50O2lmKCFtKXJldHVybjtpZihtLnNjcm9sbFRvcCttLmNsaWVudEhlaWdodD49bS5zY3JvbGxIZWlnaHQtMjQwKUcoKX0sY2xhc3NOYW1lOiJoLWZ1bGwgbWluLWgtMCBvdmVyZmxvdy15LWF1dG8gcHgtNCBweS0yIFtzY3JvbGxiYXItd2lkdGg6dGhpbl0iLGNoaWxkcmVuOnc9PT1udWxsP1goS0ose30pOncubGVuZ3RoPT09MD9YKCJkaXYiLHtjbGFzc05hbWU6InB4LTIgcHktNiB0ZXh0LXdoaXRlLzQwIHRleHQtWzEycHhdIHRleHQtY2VudGVyIixjaGlsZHJlbjpPPyJObyBtYXRjaGluZyBzaW11bGF0b3JzLiI6Ik5vIGlPUyBzaW11bGF0b3JzIGF2YWlsYWJsZS4ifSk6WChaMSx7Y2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToicHQtMSBwYi0xIHRleHQtWzExcHhdIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZS80MCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSIsY2hpbGRyZW46IkF2YWlsYWJsZSJ9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTAuNSBwYi0xIixjaGlsZHJlbjp3Lm1hcCgobSk9PlgoUTYse2RldmljZTptLGFjdGl2ZTptLmRldmljZT09PUwsc3RhcnRpbmc6ISFVW20uZGV2aWNlXSxzaHV0dGluZ0Rvd246ISF6W20uZGV2aWNlXSxvblNlbGVjdDooKT0+VihtLmRldmljZSksb25TaHV0ZG93bjooKT0+ayhtLmRldmljZSl9LG0uZGV2aWNlKSl9KSwhTyYmcSYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJweC0yIHB5LTIgdGV4dC1bMTFweF0gdGV4dC13aGl0ZS8zNSB0ZXh0LWNlbnRlciIsY2hpbGRyZW46Sz9gJHtLLmxlbmd0aH0gb2YgJHtZfWA6bnVsbH0pXX0pfSksWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLWxpc3QtdG9wLWZhZGUiLGNsYXNzTmFtZToiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHJpZ2h0LTAgaC1bMTZweF0gcG9pbnRlci1ldmVudHMtbm9uZSIsc3R5bGU6e2JhY2tncm91bmQ6YGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICR7VTJ9IDAlLCAke2czfSAxMDAlKWB9fSksWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLWxpc3QtYm90dG9tLWZhZGUiLGNsYXNzTmFtZToiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgaC1bMTZweF0gcG9pbnRlci1ldmVudHMtbm9uZSIsc3R5bGU6e2JhY2tncm91bmQ6YGxpbmVhci1ncmFkaWVudCh0byB0b3AsICR7VTJ9IDAlLCAke2czfSAxMDAlKWB9fSldfSksWChxSix7cmVwb3J0OkZ9KV19KX1mdW5jdGlvbiBLSigpe3JldHVybiBYKFoxLHtjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJweC0yIHB0LTEgcGItMSB0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUiLGNoaWxkcmVuOiJBdmFpbGFibGUifSksWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLWxpc3Qtc2tlbGV0b24iLGNsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBnYXAtMC41IHBiLTEiLCJhcmlhLWxhYmVsIjoiTG9hZGluZyBzaW11bGF0b3JzIiwiYXJpYS1idXN5IjoidHJ1ZSIsY2hpbGRyZW46QXJyYXkuZnJvbSh7bGVuZ3RoOlhKfSwoJCxKKT0+WChZSix7aW5kZXg6Sn0sSikpfSldfSl9ZnVuY3Rpb24gWUooe2luZGV4OiR9KXtsZXQgSj1bInctWzYyJV0iLCJ3LVs3NCVdIiwidy1bNTglXSIsInctWzcwJV0iXVskJTRdLFE9WyJ3LVs0MiVdIiwidy1bMzYlXSIsInctWzQ4JV0iLCJ3LVszMiVdIl1bJCU0XSxaPVsidy03Iiwidy02Iiwidy04Il1bJCUzXTtyZXR1cm4gWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZGV2aWNlLXJvdy1za2VsZXRvbiIsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMi41IHB4LTIgcHktMS41IHJvdW5kZWQtbGcgc2VsZWN0LW5vbmUiLCJhcmlhLWhpZGRlbiI6InRydWUiLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIHNocmluay0wIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHNpemUtOSByb3VuZGVkLVs5cHhdIG92ZXJmbG93LWhpZGRlbiBiZy13aGl0ZS82IixjaGlsZHJlbjpYKCJzcGFuIix7Y2xhc3NOYW1lOiJzaXplLTQgcm91bmRlZC1bNHB4XSBiZy13aGl0ZS9bMC4xMl0ifSl9KSxYKCJkaXYiLHtjbGFzc05hbWU6Im1pbi13LTAgZmxleC0xIGZsZXggZmxleC1jb2wgZ2FwLTEuNSIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6YGgtMyByb3VuZGVkLWZ1bGwgYmctd2hpdGUvWzAuMTJdICR7Sn1gfSksWCgic3BhbiIse2NsYXNzTmFtZTpgaC0yLjUgcm91bmRlZC1mdWxsIGJnLXdoaXRlL1swLjA4XSAke1F9YH0pXX0pLFgoInNwYW4iLHtjbGFzc05hbWU6YHNocmluay0wIGgtMi41IHJvdW5kZWQtZnVsbCBiZy13aGl0ZS9bMC4wOF0gJHtafWB9KV19KX1mdW5jdGlvbiBxSih7cmVwb3J0OiR9KXtpZighJHx8JC50b3RhbEJ5dGVzPD0wKXJldHVybiBudWxsO3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6InNocmluay0wIG1pbi13LTAgb3ZlcmZsb3ctaGlkZGVuIHB4LTMgcHktMiBmbGV4IGp1c3RpZnktY2VudGVyIixjaGlsZHJlbjpYKCQ2LHtyZXBvcnQ6JH0pfSl9ZnVuY3Rpb24gdjUoe3BhbmVsV2lkdGg6JCx2aXNpYmxlOkosb25Qb2ludGVyRG93bjpRLGFyaWFMYWJlbDpaLHNpZGU6Sz0icmlnaHQifSl7bGV0W1kscV09QSghMSksW0csTl09QSghMSksQj1ZfHxHLEw9KEs9PT0ibGVmdCI/MDoxMikrJC05O3JldHVybiBYKCJkaXYiLHtyb2xlOiJzZXBhcmF0b3IiLCJhcmlhLW9yaWVudGF0aW9uIjoidmVydGljYWwiLCJhcmlhLWxhYmVsIjpaLCJhcmlhLWhpZGRlbiI6IUosb25Qb2ludGVyRG93bjooVSk9PntOKCEwKSxRKFUpfSxvblBvaW50ZXJVcDooKT0+TighMSksb25Qb2ludGVyQ2FuY2VsOigpPT5OKCExKSxvblBvaW50ZXJFbnRlcjooKT0+cSghMCksb25Qb2ludGVyTGVhdmU6KCk9PnEoITEpLGNsYXNzTmFtZTpgZml4ZWQgJHtLPT09ImxlZnQiPyJ0b3AtMCBib3R0b20tMCI6InRvcC0zIGJvdHRvbS0zIn0gdy00IHotMzYgY3Vyc29yLWNvbC1yZXNpemUgdG91Y2gtbm9uZSB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwICR7Sj8ib3BhY2l0eS0xMDAgcG9pbnRlci1ldmVudHMtYXV0byI6Im9wYWNpdHktMCBwb2ludGVyLWV2ZW50cy1ub25lIn1gLHN0eWxlOks9PT0ibGVmdCI/e2xlZnQ6TH06e3JpZ2h0Okx9LGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6YGFic29sdXRlIHRvcC0wIGJvdHRvbS0wIGxlZnQtMS8yIHctcHggcG9pbnRlci1ldmVudHMtbm9uZSB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMTUwICR7Qj8ib3BhY2l0eS0xMDAiOiJvcGFjaXR5LTAifWAsc3R5bGU6e3RyYW5zZm9ybToidHJhbnNsYXRlWCgtMC41cHgpIixiYWNrZ3JvdW5kOiJsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwyNTUsMjU1LDApIDAlLCByZ2JhKDI1NSwyNTUsMjU1LDAuMjgpIDMwJSwgcmdiYSgyNTUsMjU1LDI1NSwwLjI4KSA3MCUsIHJnYmEoMjU1LDI1NSwyNTUsMCkgMTAwJSkifX0pLFgoImRpdiIse2NsYXNzTmFtZTpgYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiB3LTEgaC03IHJvdW5kZWQteHMgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHotMSBwb2ludGVyLWV2ZW50cy1ub25lIFt0cmFuc2l0aW9uOm9wYWNpdHlfMC4xNXNfZWFzZSxiYWNrZ3JvdW5kXzAuMTVzX2Vhc2VdICR7Qj8ib3BhY2l0eS0xMDAiOiJvcGFjaXR5LTAifSAke0c/ImJnLVsjOWE5YTllXSI6ImJnLVsjNmU2ZTcyXSJ9YH0pXX0pfWZ1bmN0aW9uIFg2KCl7bGV0WyQsSl09QSgoKT0+dHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5tYXRjaE1lZGlhPy4oIihwcmVmZXJzLWNvbnRyYXN0OiBtb3JlKSIpLm1hdGNoZXM9PT0hMCk7cmV0dXJuIGIoKCk9PntpZih0eXBlb2Ygd2luZG93PiJ1Inx8IXdpbmRvdy5tYXRjaE1lZGlhKXJldHVybjtsZXQgUT13aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29udHJhc3Q6IG1vcmUpIiksWj0oKT0+SihRLm1hdGNoZXMpO3JldHVybiBaKCksUS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLFopLCgpPT5RLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsWil9LFtdKSwkfWZ1bmN0aW9uIFI1KCl7bGV0WyQsSl09QSgoKT0+dHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5tYXRjaE1lZGlhPy4oIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIikubWF0Y2hlcz09PSEwKTtyZXR1cm4gYigoKT0+e2lmKHR5cGVvZiB3aW5kb3c+InUifHwhd2luZG93Lm1hdGNoTWVkaWEpcmV0dXJuO2xldCBRPXdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSIpLFo9KCk9PkooUS5tYXRjaGVzKTtyZXR1cm4gWigpLFEuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixaKSwoKT0+US5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLFopfSxbXSksJH12YXIgSzY9MjgwO3ZhciBmMz0id2lkdGggNzBtcyBsaW5lYXIiLG0zPSJ3aWR0aCAwLjI0cyBjdWJpYy1iZXppZXIoMC4yMiwgMSwgMC4zNiwgMSkiLFk2PSJwYWRkaW5nLXJpZ2h0IDAuMjRzIGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKSIscTY9ImN1YmljLWJlemllcigwLjIsIDAuODIsIDAuMjIsIDEpIixnNT0iY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSIsRzY9ImxpbmVhcigwLCAwLjMyIDklLCAwLjYyIDE4JSwgMC44NSAyNyUsIDEuMDEgMzYlLCAxLjA3IDQ1JSwgMS4wNSA1NiUsIDEuMDIgNzAlLCAxKSIsVjY9IjAuMTZzIixCNj0iMC4ycyIsTjY9NSxMNj17aWRsZToxLGhvdmVyOjEuMDksZHJhZzoxLjEyfSx6Nj17aWRsZToiIzY4NmU3OCIsaG92ZXI6IiNiN2JiYzIiLGRyYWc6IiNmNGY2ZmEifSxVNj17aWRsZToyLjY1LGhvdmVyOjQuMTUsZHJhZzo0LjY1fSxINj17aWRsZTowLjM4LGhvdmVyOjAuODYsZHJhZzoxfSxoNT1udWxsO2Z1bmN0aW9uIEM2KCl7aWYoaDUhPW51bGwpcmV0dXJuIGg1O2lmKHR5cGVvZiBDU1M+InUifHx0eXBlb2YgQ1NTLnN1cHBvcnRzIT09ImZ1bmN0aW9uIilyZXR1cm4hMTtyZXR1cm4gaDU9Q1NTLnN1cHBvcnRzKCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIiwibGluZWFyKDAsIDEpIiksaDV9dmFyIEdKPTQwLEY2PTE0LGs2PTI0MCxNNj0zMCxPNj0wLjE1LFZKPTgwLEE2PTE1MCxXNj0yNTAscDM9InNlcnZlLXNpbTpzaW11bGF0b3ItZnJhbWUtc2NhbGUiO2Z1bmN0aW9uIHUzKCQsSixRLFope2xldCBLPSQqMyxZPUo+MD9NYXRoLm1heCgxODAsSi00OCk6SyxxPVE+MCYmTnVtYmVyLmlzRmluaXRlKFopJiZaPjA/TWF0aC5tYXgoMTgwLChRLTEzNikqWik6SztyZXR1cm4gTWF0aC5tYXgoMTgwLE1hdGgubWluKEssWSxxKSl9ZnVuY3Rpb24gbjAoJCxKLFEsWixLKXtsZXQgWT11MyhKLFEsWixLKSxxPU1hdGgubWluKDI4MCxZKTtyZXR1cm4gTWF0aC5taW4oWSxNYXRoLm1heChxLCQpKX1mdW5jdGlvbiBfNigkLEosUSxaLEspe2xldCBZPU51bWJlci5pc0Zpbml0ZShLKT8kKks6JDtyZXR1cm4gbjAoWSwkLEosUSxaKX1mdW5jdGlvbiBmNSgkKXtpZighTnVtYmVyLmlzRmluaXRlKCQpKXJldHVybiAkO2xldCBKPXR5cGVvZiB3aW5kb3c8InUiP01hdGgubWF4KDEsd2luZG93LmRldmljZVBpeGVsUmF0aW98fDEpOjE7cmV0dXJuIE1hdGgucm91bmQoJCpKKS9KfWZ1bmN0aW9uIGwzKCQsSil7aWYoJDw9MHx8Sjw9MClyZXR1cm4gMDtsZXQgUT0wLjU1LFo9JCpKKlEvKEorUSokKTtyZXR1cm4gTWF0aC5taW4oR0osWil9ZnVuY3Rpb24gUDYoJCxKLFEpe2xldCBaPSQsSz1RO2ZvcihsZXQgWSBvZiBKKXtsZXQgcT1NYXRoLmFicygkLVkpO2lmKHE8SylaPVksSz1xfXJldHVybiBafWZ1bmN0aW9uIEQ2KCQpe2xldHtmcm9tOkosdG86USx2ZWxvY2l0eTpaLHN0aWZmbmVzczpLLGRhbXBpbmc6WSxvblVwZGF0ZTpxLG9uQ29tcGxldGU6R309JCxOPTAuNCxCPTAuMDMzMzMzMzMzMzMzMzMzMzMsTD1KLFY9WixVPXBlcmZvcm1hbmNlLm5vdygpLHo9MCxrPSExLEg9KEMpPT57aWYoaylyZXR1cm47bGV0IEY9TWF0aC5taW4oKEMtVSkvMTAwMCwwLjAzMzMzMzMzMzMzMzMzMzMzKTtVPUM7bGV0IE89LUsqKEwtUSktWSpWO2lmKFYrPU8qRixMKz1WKkYsTWF0aC5hYnMoVik8MC40JiZNYXRoLmFicyhMLVEpPDAuNCl7cShRKSxHPy4oKTtyZXR1cm59cShMKSx6PXJlcXVlc3RBbmltYXRpb25GcmFtZShIKX07cmV0dXJuIHo9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKEgpLCgpPT57aWYoaz0hMCx6KWNhbmNlbEFuaW1hdGlvbkZyYW1lKHopfX1mdW5jdGlvbiB3NigkKXtpZigkLmxlbmd0aDwyKXJldHVybiAwO2xldCBKPSRbJC5sZW5ndGgtMV0sUT0kWzBdO2ZvcihsZXQgSz0kLmxlbmd0aC0xO0s+PTA7Sy0tKWlmKEoudC0kW0tdLnQ+PVZKKXtRPSRbS107YnJlYWt9bGV0IFo9KEoudC1RLnQpLzEwMDA7cmV0dXJuIFo+MD8oSi54LVEueCkvWjowfXZhciBUNj0iZHJvcC1zaGFkb3coMCAwLjVweCAxcHggcmdiYSgwLDAsMCwwLjEpKSBkcm9wLXNoYWRvdygwIDJweCA1cHggcmdiYSgwLDAsMCwwLjEzKSkiO2Z1bmN0aW9uIEJKKHthcmM6JCxwaGFzZTpKLHJlZHVjZWRNb3Rpb246USxoaWdoQ29udHJhc3Q6Wixmb2N1c1Zpc2libGU6S30pe2xldCBZPUohPT0iaWRsZSIscT1aPzEuMTI6MSxHPVE/MTpMNltKXSxOPVU2W0pdKnEsQj1aPzE6SDZbSl0sTD1ZP1Y2OkI2LFY9WT9xNjpnNSxVPVkmJkM2KCk/RzY6Vix6PVE/Im5vbmUiOmB0cmFuc2Zvcm0gJHtMfSAke1V9YCxrPVE/Im5vbmUiOmBzdHJva2UgJHtMfSAke1Z9LCBzdHJva2Utd2lkdGggJHtMfSAke1Z9YCxIPSQudmlld0JveFNpemUsQz0kLmQsRj17dHJhbnNmb3JtOmB0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoJHtHfSlgLHRyYW5zZm9ybU9yaWdpbjoiMTAwJSAxMDAlIix0cmFuc2l0aW9uOnosd2lsbENoYW5nZTpRP3ZvaWQgMDoidHJhbnNmb3JtIixiYWNrZmFjZVZpc2liaWxpdHk6ImhpZGRlbiIsV2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OiJoaWRkZW4ifTtyZXR1cm4gWCgic3ZnIix7d2lkdGg6SCxoZWlnaHQ6SCx2aWV3Qm94OmAwIDAgJHtIfSAke0h9YCxmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJhcmlhLWhpZGRlbiI6InRydWUiLHNoYXBlUmVuZGVyaW5nOiJnZW9tZXRyaWNQcmVjaXNpb24iLHN0eWxlOntkaXNwbGF5OiJibG9jayIsb3ZlcmZsb3c6InZpc2libGUiLGN1cnNvcjoiaW5oZXJpdCIsdG91Y2hBY3Rpb246Im5vbmUiLHBvaW50ZXJFdmVudHM6Im5vbmUifSxjaGlsZHJlbjpbWCgiZyIseyJhcmlhLWhpZGRlbiI6InRydWUiLHN0eWxlOntwb2ludGVyRXZlbnRzOiJub25lIn0sY2hpbGRyZW46W1goInBhdGgiLHtkOkMsZmlsbDoibm9uZSIsc3Ryb2tlOiJyZ2JhKDEwLCAxMzIsIDI1NSwgMC45NSkiLHN0cm9rZVdpZHRoOihONioyKzYpKnEsc3Ryb2tlTGluZWNhcDoicm91bmQiLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTp7b3BhY2l0eTpLPzAuOTU6MCx0cmFuc2l0aW9uOlE/Im9wYWNpdHkgODBtcyBsaW5lYXIiOmBvcGFjaXR5IDIwMG1zICR7ZzV9YCxmaWx0ZXI6ImRyb3Atc2hhZG93KDAgMCAycHggcmdiYSgxMCwxMzIsMjU1LDAuNTUpKSBkcm9wLXNoYWRvdygwIDAgNHB4IHJnYmEoMTAsMTMyLDI1NSwwLjMyKSkifX0pLFgoInBhdGgiLHtkOkMsZmlsbDoibm9uZSIsc3Ryb2tlOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOTUpIixzdHJva2VXaWR0aDoxLjUqcSxzdHJva2VMaW5lY2FwOiJyb3VuZCIsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOntvcGFjaXR5Oks/MC43OjAsdHJhbnNpdGlvbjpRPyJvcGFjaXR5IDgwbXMgbGluZWFyIjpgb3BhY2l0eSAyMDBtcyAke2c1fWB9fSldfSksWCgiZyIseyJhcmlhLWhpZGRlbiI6InRydWUiLHN0eWxlOkYsY2hpbGRyZW46WCgiZyIse3N0eWxlOntwb2ludGVyRXZlbnRzOiJub25lIn0sY2hpbGRyZW46W1goInBhdGgiLHtkOkMsc3Ryb2tlOiIjMzQzNjNiIixzdHJva2VXaWR0aDpOKzIuMipxLHN0cm9rZUxpbmVjYXA6InJvdW5kIix2ZWN0b3JFZmZlY3Q6Im5vbi1zY2FsaW5nLXN0cm9rZSIsc3R5bGU6e29wYWNpdHk6TWF0aC5taW4oMSxCKzAuMDgpLHRyYW5zaXRpb246YCR7a30sIG9wYWNpdHkgJHtMfSAke1Z9YCxmaWx0ZXI6VDZ9fSksWCgicGF0aCIse2Q6QyxzdHJva2U6ejZbSl0sc3Ryb2tlV2lkdGg6TixzdHJva2VMaW5lY2FwOiJyb3VuZCIsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOntvcGFjaXR5OkIsdHJhbnNpdGlvbjpgJHtrfSwgb3BhY2l0eSAke0x9ICR7Vn1gLGZpbHRlcjpUNn19KV19KX0pXX0pfWZ1bmN0aW9uIEk2KHtzaW11bGF0b3JSZXNpemU6JCxkZXZpY2VUeXBlOkosc3RyZWFtQ29uZmlnOlEsY29udGFpbmVyV2lkdGg6Wixjb250YWluZXJIZWlnaHQ6S30pe2xldCBZPVI1KCkscT1YNigpLFtHLE5dPUEoITEpLEI9VDEoKCk9PlczKHt0eXBlOkosY29uZmlnOlE/P251bGwsY29udGFpbmVyV2lkdGg6Wixjb250YWluZXJIZWlnaHQ6S30pLFtKLFEsWixLXSksTD0kLmlzUmVzaXppbmd8fCQuaXNJbmVydGlhPyJkcmFnIjokLmhhbmRsZUhvdmVyZWQ/ImhvdmVyIjoiaWRsZSI7cmV0dXJuIFgoImRpdiIse3JvbGU6InNlcGFyYXRvciIsImFyaWEtbGFiZWwiOiJSZXNpemUgc2ltdWxhdG9yIHdpZHRoLiBEcmFnIHRoZSBjb3JuZXIgb3IgdXNlIExlZnQgYW5kIFJpZ2h0IEFycm93IGtleXM7IGhvbGQgU2hpZnQgZm9yIGxhcmdlciBzdGVwcy4iLCJhcmlhLW9yaWVudGF0aW9uIjoidmVydGljYWwiLCJhcmlhLXZhbHVlbWluIjpNYXRoLnJvdW5kKCQubWluV2lkdGgpLCJhcmlhLXZhbHVlbWF4IjpNYXRoLnJvdW5kKCQubWF4V2lkdGgpLCJhcmlhLXZhbHVlbm93IjpNYXRoLnJvdW5kKCQuY29tbWl0dGVkV2lkdGgpLHRhYkluZGV4OjAscmVmOiQuaGFuZGxlUmVmLG9uS2V5RG93bjokLm9uS2V5RG93bixvblBvaW50ZXJEb3duOiQub25Qb2ludGVyRG93bixvblBvaW50ZXJNb3ZlOiQub25Qb2ludGVyTW92ZSxvblBvaW50ZXJVcDokLm9uUG9pbnRlckVuZCxvblBvaW50ZXJDYW5jZWw6JC5vblBvaW50ZXJFbmQsb25Mb3N0UG9pbnRlckNhcHR1cmU6JC5vblBvaW50ZXJFbmQsb25Qb2ludGVyRW50ZXI6KCk9PiQuc2V0SGFuZGxlSG92ZXJlZCghMCksb25Qb2ludGVyTGVhdmU6KCk9PiQuc2V0SGFuZGxlSG92ZXJlZCghMSksb25Gb2N1czooVik9PntOKFYuY3VycmVudFRhcmdldC5tYXRjaGVzPy4oIjpmb2N1cy12aXNpYmxlIik/PyExKX0sb25CbHVyOigpPT5OKCExKSxzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixyaWdodDotMTQsYm90dG9tOi0xNCx3aWR0aDo2MCxoZWlnaHQ6NjAsYm9yZGVyOiJub25lIixwYWRkaW5nOjAsbWFyZ2luOjAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiZmxleC1lbmQiLGp1c3RpZnlDb250ZW50OiJmbGV4LWVuZCIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGN1cnNvcjoibndzZS1yZXNpemUiLHRvdWNoQWN0aW9uOiJub25lIixwb2ludGVyRXZlbnRzOiJhdXRvIixvdXRsaW5lOiJub25lIix6SW5kZXg6MjUsV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6InRyYW5zcGFyZW50In0sY2hpbGRyZW46WChCSix7YXJjOkIscGhhc2U6TCxyZWR1Y2VkTW90aW9uOlksaGlnaENvbnRyYXN0OnEsZm9jdXNWaXNpYmxlOkd9KX0pfWZ1bmN0aW9uIE5KKCQpe2lmKCEkfHx0eXBlb2YgZG9jdW1lbnQ+InUiKXJldHVybjtsZXQgSj1kb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLFE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtRLnR5cGU9InRleHQvY3NzIixKLmFwcGVuZENoaWxkKFEpLFEuc3R5bGVTaGVldD9RLnN0eWxlU2hlZXQuY3NzVGV4dD0kOlEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJCkpfXZhciBMSj0oJCk9Pntzd2l0Y2goJCl7Y2FzZSJzdWNjZXNzIjpyZXR1cm4gSEo7Y2FzZSJpbmZvIjpyZXR1cm4gRko7Y2FzZSJ3YXJuaW5nIjpyZXR1cm4gQ0o7Y2FzZSJlcnJvciI6cmV0dXJuIGtKO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSx6Sj1BcnJheSgxMikuZmlsbCgwKSxVSj0oe3Zpc2libGU6JCxjbGFzc05hbWU6Sn0pPT57cmV0dXJuIGYuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOlsic29ubmVyLWxvYWRpbmctd3JhcHBlciIsSl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKSwiZGF0YS12aXNpYmxlIjokfSxmLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToic29ubmVyLXNwaW5uZXIifSx6Si5tYXAoKFEsWik9PmYuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJzb25uZXItbG9hZGluZy1iYXIiLGtleTpgc3Bpbm5lci1iYXItJHtafWB9KSkpKX0sSEo9Zi5jcmVhdGVFbGVtZW50KCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyMCAyMCIsZmlsbDoiY3VycmVudENvbG9yIixoZWlnaHQ6IjIwIix3aWR0aDoiMjAifSxmLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTMuODU3LTkuODA5YS43NS43NSAwIDAwLTEuMjE0LS44ODJsLTMuNDgzIDQuNzktMS44OC0xLjg4YS43NS43NSAwIDEwLTEuMDYgMS4wNjFsMi41IDIuNWEuNzUuNzUgMCAwMDEuMTM3LS4wODlsNC01LjV6IixjbGlwUnVsZToiZXZlbm9kZCJ9KSksQ0o9Zi5jcmVhdGVFbGVtZW50KCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoiY3VycmVudENvbG9yIixoZWlnaHQ6IjIwIix3aWR0aDoiMjAifSxmLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTkuNDAxIDMuMDAzYzEuMTU1LTIgNC4wNDMtMiA1LjE5NyAwbDcuMzU1IDEyLjc0OGMxLjE1NCAyLS4yOSA0LjUtMi41OTkgNC41SDQuNjQ1Yy0yLjMwOSAwLTMuNzUyLTIuNS0yLjU5OC00LjVMOS40IDMuMDAzek0xMiA4LjI1YS43NS43NSAwIDAxLjc1Ljc1djMuNzVhLjc1Ljc1IDAgMDEtMS41IDBWOWEuNzUuNzUgMCAwMS43NS0uNzV6bTAgOC4yNWEuNzUuNzUgMCAxMDAtMS41Ljc1Ljc1IDAgMDAwIDEuNXoiLGNsaXBSdWxlOiJldmVub2RkIn0pKSxGSj1mLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdmlld0JveDoiMCAwIDIwIDIwIixmaWxsOiJjdXJyZW50Q29sb3IiLGhlaWdodDoiMjAiLHdpZHRoOiIyMCJ9LGYuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixkOiJNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6bS03LTRhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwek05IDlhLjc1Ljc1IDAgMDAwIDEuNWguMjUzYS4yNS4yNSAwIDAxLjI0NC4zMDRsLS40NTkgMi4wNjZBMS43NSAxLjc1IDAgMDAxMC43NDcgMTVIMTFhLjc1Ljc1IDAgMDAwLTEuNWgtLjI1M2EuMjUuMjUgMCAwMS0uMjQ0LS4zMDRsLjQ1OS0yLjA2NkExLjc1IDEuNzUgMCAwMDkuMjUzIDlIOXoiLGNsaXBSdWxlOiJldmVub2RkIn0pKSxrSj1mLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdmlld0JveDoiMCAwIDIwIDIwIixmaWxsOiJjdXJyZW50Q29sb3IiLGhlaWdodDoiMjAiLHdpZHRoOiIyMCJ9LGYuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixkOiJNMTggMTBhOCA4IDAgMTEtMTYgMCA4IDggMCAwMTE2IDB6bS04LTVhLjc1Ljc1IDAgMDEuNzUuNzV2NC41YS43NS43NSAwIDAxLTEuNSAwdi00LjVBLjc1Ljc1IDAgMDExMCA1em0wIDEwYTEgMSAwIDEwMC0yIDEgMSAwIDAwMCAyeiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpLE1KPWYuY3JlYXRlRWxlbWVudCgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMTIiLGhlaWdodDoiMTIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIxLjUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQifSxmLmNyZWF0ZUVsZW1lbnQoImxpbmUiLHt4MToiMTgiLHkxOiI2Iix4MjoiNiIseTI6IjE4In0pLGYuY3JlYXRlRWxlbWVudCgibGluZSIse3gxOiI2Iix5MToiNiIseDI6IjE4Iix5MjoiMTgifSkpLE9KPSgpPT57bGV0WyQsSl09Zi51c2VTdGF0ZShkb2N1bWVudC5oaWRkZW4pO3JldHVybiBmLnVzZUVmZmVjdCgoKT0+e2xldCBRPSgpPT57Sihkb2N1bWVudC5oaWRkZW4pfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsUSksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixRKX0sW10pLCR9LGQzPTE7Y2xhc3MgYjZ7Y29uc3RydWN0b3IoKXt0aGlzLnN1YnNjcmliZT0oJCk9PntyZXR1cm4gdGhpcy5zdWJzY3JpYmVycy5wdXNoKCQpLCgpPT57bGV0IEo9dGhpcy5zdWJzY3JpYmVycy5pbmRleE9mKCQpO3RoaXMuc3Vic2NyaWJlcnMuc3BsaWNlKEosMSl9fSx0aGlzLnB1Ymxpc2g9KCQpPT57dGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKChKKT0+SigkKSl9LHRoaXMuYWRkVG9hc3Q9KCQpPT57dGhpcy5wdWJsaXNoKCQpLHRoaXMudG9hc3RzPVsuLi50aGlzLnRvYXN0cywkXX0sdGhpcy5jcmVhdGU9KCQpPT57dmFyIEo7bGV0e21lc3NhZ2U6USwuLi5afT0kLEs9dHlwZW9mKCQ9PW51bGw/dm9pZCAwOiQuaWQpPT09Im51bWJlciJ8fCgoSj0kLmlkKT09bnVsbD92b2lkIDA6Si5sZW5ndGgpPjA/JC5pZDpkMysrLFk9dGhpcy50b2FzdHMuZmluZCgoRyk9PntyZXR1cm4gRy5pZD09PUt9KSxxPSQuZGlzbWlzc2libGU9PT12b2lkIDA/ITA6JC5kaXNtaXNzaWJsZTtpZih0aGlzLmRpc21pc3NlZFRvYXN0cy5oYXMoSykpdGhpcy5kaXNtaXNzZWRUb2FzdHMuZGVsZXRlKEspO2lmKFkpdGhpcy50b2FzdHM9dGhpcy50b2FzdHMubWFwKChHKT0+e2lmKEcuaWQ9PT1LKXJldHVybiB0aGlzLnB1Ymxpc2goey4uLkcsLi4uJCxpZDpLLHRpdGxlOlF9KSx7Li4uRywuLi4kLGlkOkssZGlzbWlzc2libGU6cSx0aXRsZTpRfTtyZXR1cm4gR30pO2Vsc2UgdGhpcy5hZGRUb2FzdCh7dGl0bGU6USwuLi5aLGRpc21pc3NpYmxlOnEsaWQ6S30pO3JldHVybiBLfSx0aGlzLmRpc21pc3M9KCQpPT57aWYoJCl0aGlzLmRpc21pc3NlZFRvYXN0cy5hZGQoJCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT50aGlzLnN1YnNjcmliZXJzLmZvckVhY2goKEopPT5KKHtpZDokLGRpc21pc3M6ITB9KSkpO2Vsc2UgdGhpcy50b2FzdHMuZm9yRWFjaCgoSik9Pnt0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goKFEpPT5RKHtpZDpKLmlkLGRpc21pc3M6ITB9KSl9KTtyZXR1cm4gJH0sdGhpcy5tZXNzYWdlPSgkLEopPT57cmV0dXJuIHRoaXMuY3JlYXRlKHsuLi5KLG1lc3NhZ2U6JH0pfSx0aGlzLmVycm9yPSgkLEopPT57cmV0dXJuIHRoaXMuY3JlYXRlKHsuLi5KLG1lc3NhZ2U6JCx0eXBlOiJlcnJvciJ9KX0sdGhpcy5zdWNjZXNzPSgkLEopPT57cmV0dXJuIHRoaXMuY3JlYXRlKHsuLi5KLHR5cGU6InN1Y2Nlc3MiLG1lc3NhZ2U6JH0pfSx0aGlzLmluZm89KCQsSik9PntyZXR1cm4gdGhpcy5jcmVhdGUoey4uLkosdHlwZToiaW5mbyIsbWVzc2FnZTokfSl9LHRoaXMud2FybmluZz0oJCxKKT0+e3JldHVybiB0aGlzLmNyZWF0ZSh7Li4uSix0eXBlOiJ3YXJuaW5nIixtZXNzYWdlOiR9KX0sdGhpcy5sb2FkaW5nPSgkLEopPT57cmV0dXJuIHRoaXMuY3JlYXRlKHsuLi5KLHR5cGU6ImxvYWRpbmciLG1lc3NhZ2U6JH0pfSx0aGlzLnByb21pc2U9KCQsSik9PntpZighSilyZXR1cm47bGV0IFE9dm9pZCAwO2lmKEoubG9hZGluZyE9PXZvaWQgMClRPXRoaXMuY3JlYXRlKHsuLi5KLHByb21pc2U6JCx0eXBlOiJsb2FkaW5nIixtZXNzYWdlOkoubG9hZGluZyxkZXNjcmlwdGlvbjp0eXBlb2YgSi5kZXNjcmlwdGlvbiE9PSJmdW5jdGlvbiI/Si5kZXNjcmlwdGlvbjp2b2lkIDB9KTtsZXQgWj1Qcm9taXNlLnJlc29sdmUoJCBpbnN0YW5jZW9mIEZ1bmN0aW9uPyQoKTokKSxLPVEhPT12b2lkIDAsWSxxPVoudGhlbihhc3luYyhOKT0+e2lmKFk9WyJyZXNvbHZlIixOXSxmLmlzVmFsaWRFbGVtZW50KE4pKUs9ITEsdGhpcy5jcmVhdGUoe2lkOlEsdHlwZToiZGVmYXVsdCIsbWVzc2FnZTpOfSk7ZWxzZSBpZihXSihOKSYmIU4ub2spe0s9ITE7bGV0IEw9dHlwZW9mIEouZXJyb3I9PT0iZnVuY3Rpb24iP2F3YWl0IEouZXJyb3IoYEhUVFAgZXJyb3IhIHN0YXR1czogJHtOLnN0YXR1c31gKTpKLmVycm9yLFY9dHlwZW9mIEouZGVzY3JpcHRpb249PT0iZnVuY3Rpb24iP2F3YWl0IEouZGVzY3JpcHRpb24oYEhUVFAgZXJyb3IhIHN0YXR1czogJHtOLnN0YXR1c31gKTpKLmRlc2NyaXB0aW9uLHo9dHlwZW9mIEw9PT0ib2JqZWN0IiYmIWYuaXNWYWxpZEVsZW1lbnQoTCk/TDp7bWVzc2FnZTpMfTt0aGlzLmNyZWF0ZSh7aWQ6USx0eXBlOiJlcnJvciIsZGVzY3JpcHRpb246ViwuLi56fSl9ZWxzZSBpZihOIGluc3RhbmNlb2YgRXJyb3Ipe0s9ITE7bGV0IEw9dHlwZW9mIEouZXJyb3I9PT0iZnVuY3Rpb24iP2F3YWl0IEouZXJyb3IoTik6Si5lcnJvcixWPXR5cGVvZiBKLmRlc2NyaXB0aW9uPT09ImZ1bmN0aW9uIj9hd2FpdCBKLmRlc2NyaXB0aW9uKE4pOkouZGVzY3JpcHRpb24sej10eXBlb2YgTD09PSJvYmplY3QiJiYhZi5pc1ZhbGlkRWxlbWVudChMKT9MOnttZXNzYWdlOkx9O3RoaXMuY3JlYXRlKHtpZDpRLHR5cGU6ImVycm9yIixkZXNjcmlwdGlvbjpWLC4uLnp9KX1lbHNlIGlmKEouc3VjY2VzcyE9PXZvaWQgMCl7Sz0hMTtsZXQgTD10eXBlb2YgSi5zdWNjZXNzPT09ImZ1bmN0aW9uIj9hd2FpdCBKLnN1Y2Nlc3MoTik6Si5zdWNjZXNzLFY9dHlwZW9mIEouZGVzY3JpcHRpb249PT0iZnVuY3Rpb24iP2F3YWl0IEouZGVzY3JpcHRpb24oTik6Si5kZXNjcmlwdGlvbix6PXR5cGVvZiBMPT09Im9iamVjdCImJiFmLmlzVmFsaWRFbGVtZW50KEwpP0w6e21lc3NhZ2U6TH07dGhpcy5jcmVhdGUoe2lkOlEsdHlwZToic3VjY2VzcyIsZGVzY3JpcHRpb246ViwuLi56fSl9fSkuY2F0Y2goYXN5bmMoTik9PntpZihZPVsicmVqZWN0IixOXSxKLmVycm9yIT09dm9pZCAwKXtLPSExO2xldCBCPXR5cGVvZiBKLmVycm9yPT09ImZ1bmN0aW9uIj9hd2FpdCBKLmVycm9yKE4pOkouZXJyb3IsTD10eXBlb2YgSi5kZXNjcmlwdGlvbj09PSJmdW5jdGlvbiI/YXdhaXQgSi5kZXNjcmlwdGlvbihOKTpKLmRlc2NyaXB0aW9uLFU9dHlwZW9mIEI9PT0ib2JqZWN0IiYmIWYuaXNWYWxpZEVsZW1lbnQoQik/Qjp7bWVzc2FnZTpCfTt0aGlzLmNyZWF0ZSh7aWQ6USx0eXBlOiJlcnJvciIsZGVzY3JpcHRpb246TCwuLi5VfSl9fSkuZmluYWxseSgoKT0+e2lmKEspdGhpcy5kaXNtaXNzKFEpLFE9dm9pZCAwO0ouZmluYWxseT09bnVsbHx8Si5maW5hbGx5LmNhbGwoSil9KSxHPSgpPT5uZXcgUHJvbWlzZSgoTixCKT0+cS50aGVuKCgpPT5ZWzBdPT09InJlamVjdCI/QihZWzFdKTpOKFlbMV0pKS5jYXRjaChCKSk7aWYodHlwZW9mIFEhPT0ic3RyaW5nIiYmdHlwZW9mIFEhPT0ibnVtYmVyIilyZXR1cm57dW53cmFwOkd9O2Vsc2UgcmV0dXJuIE9iamVjdC5hc3NpZ24oUSx7dW53cmFwOkd9KX0sdGhpcy5jdXN0b209KCQsSik9PntsZXQgUT0oSj09bnVsbD92b2lkIDA6Si5pZCl8fGQzKys7cmV0dXJuIHRoaXMuY3JlYXRlKHtqc3g6JChRKSxpZDpRLC4uLkp9KSxRfSx0aGlzLmdldEFjdGl2ZVRvYXN0cz0oKT0+e3JldHVybiB0aGlzLnRvYXN0cy5maWx0ZXIoKCQpPT4hdGhpcy5kaXNtaXNzZWRUb2FzdHMuaGFzKCQuaWQpKX0sdGhpcy5zdWJzY3JpYmVycz1bXSx0aGlzLnRvYXN0cz1bXSx0aGlzLmRpc21pc3NlZFRvYXN0cz1uZXcgU2V0fX12YXIgSzA9bmV3IGI2LEFKPSgkLEopPT57bGV0IFE9KEo9PW51bGw/dm9pZCAwOkouaWQpfHxkMysrO3JldHVybiBLMC5hZGRUb2FzdCh7dGl0bGU6JCwuLi5KLGlkOlF9KSxRfSxXSj0oJCk9PntyZXR1cm4gJCYmdHlwZW9mICQ9PT0ib2JqZWN0IiYmIm9rImluICQmJnR5cGVvZiAkLm9rPT09ImJvb2xlYW4iJiYic3RhdHVzImluICQmJnR5cGVvZiAkLnN0YXR1cz09PSJudW1iZXIifSxfSj1BSixQSj0oKT0+SzAudG9hc3RzLERKPSgpPT5LMC5nZXRBY3RpdmVUb2FzdHMoKSxjMj1PYmplY3QuYXNzaWduKF9KLHtzdWNjZXNzOkswLnN1Y2Nlc3MsaW5mbzpLMC5pbmZvLHdhcm5pbmc6SzAud2FybmluZyxlcnJvcjpLMC5lcnJvcixjdXN0b206SzAuY3VzdG9tLG1lc3NhZ2U6SzAubWVzc2FnZSxwcm9taXNlOkswLnByb21pc2UsZGlzbWlzczpLMC5kaXNtaXNzLGxvYWRpbmc6SzAubG9hZGluZ30se2dldEhpc3Rvcnk6UEosZ2V0VG9hc3RzOkRKfSk7TkooIltkYXRhLXNvbm5lci10b2FzdGVyXVtkaXI9bHRyXSxodG1sW2Rpcj1sdHJdey0tdG9hc3QtaWNvbi1tYXJnaW4tc3RhcnQ6LTNweDstLXRvYXN0LWljb24tbWFyZ2luLWVuZDo0cHg7LS10b2FzdC1zdmctbWFyZ2luLXN0YXJ0Oi0xcHg7LS10b2FzdC1zdmctbWFyZ2luLWVuZDowcHg7LS10b2FzdC1idXR0b24tbWFyZ2luLXN0YXJ0OmF1dG87LS10b2FzdC1idXR0b24tbWFyZ2luLWVuZDowOy0tdG9hc3QtY2xvc2UtYnV0dG9uLXN0YXJ0OjA7LS10b2FzdC1jbG9zZS1idXR0b24tZW5kOnVuc2V0Oy0tdG9hc3QtY2xvc2UtYnV0dG9uLXRyYW5zZm9ybTp0cmFuc2xhdGUoLTM1JSwgLTM1JSl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2Rpcj1ydGxdLGh0bWxbZGlyPXJ0bF17LS10b2FzdC1pY29uLW1hcmdpbi1zdGFydDo0cHg7LS10b2FzdC1pY29uLW1hcmdpbi1lbmQ6LTNweDstLXRvYXN0LXN2Zy1tYXJnaW4tc3RhcnQ6MHB4Oy0tdG9hc3Qtc3ZnLW1hcmdpbi1lbmQ6LTFweDstLXRvYXN0LWJ1dHRvbi1tYXJnaW4tc3RhcnQ6MDstLXRvYXN0LWJ1dHRvbi1tYXJnaW4tZW5kOmF1dG87LS10b2FzdC1jbG9zZS1idXR0b24tc3RhcnQ6dW5zZXQ7LS10b2FzdC1jbG9zZS1idXR0b24tZW5kOjA7LS10b2FzdC1jbG9zZS1idXR0b24tdHJhbnNmb3JtOnRyYW5zbGF0ZSgzNSUsIC0zNSUpfVtkYXRhLXNvbm5lci10b2FzdGVyXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDp2YXIoLS13aWR0aCk7Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppOy0tZ3JheTE6aHNsKDAsIDAlLCA5OSUpOy0tZ3JheTI6aHNsKDAsIDAlLCA5Ny4zJSk7LS1ncmF5Mzpoc2woMCwgMCUsIDk1LjElKTstLWdyYXk0OmhzbCgwLCAwJSwgOTMlKTstLWdyYXk1OmhzbCgwLCAwJSwgOTAuOSUpOy0tZ3JheTY6aHNsKDAsIDAlLCA4OC43JSk7LS1ncmF5Nzpoc2woMCwgMCUsIDg1LjglKTstLWdyYXk4OmhzbCgwLCAwJSwgNzglKTstLWdyYXk5OmhzbCgwLCAwJSwgNTYuMSUpOy0tZ3JheTEwOmhzbCgwLCAwJSwgNTIuMyUpOy0tZ3JheTExOmhzbCgwLCAwJSwgNDMuNSUpOy0tZ3JheTEyOmhzbCgwLCAwJSwgOSUpOy0tYm9yZGVyLXJhZGl1czo4cHg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MDttYXJnaW46MDtsaXN0LXN0eWxlOm5vbmU7b3V0bGluZTowO3otaW5kZXg6OTk5OTk5OTk5O3RyYW5zaXRpb246dHJhbnNmb3JtIC40cyBlYXNlfUBtZWRpYSAoaG92ZXI6bm9uZSkgYW5kIChwb2ludGVyOmNvYXJzZSl7W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtbGlmdGVkPXRydWVde3RyYW5zZm9ybTpub25lfX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS14LXBvc2l0aW9uPXJpZ2h0XXtyaWdodDp2YXIoLS1vZmZzZXQtcmlnaHQpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249bGVmdF17bGVmdDp2YXIoLS1vZmZzZXQtbGVmdCl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteC1wb3NpdGlvbj1jZW50ZXJde2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXktcG9zaXRpb249dG9wXXt0b3A6dmFyKC0tb2Zmc2V0LXRvcCl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteS1wb3NpdGlvbj1ib3R0b21de2JvdHRvbTp2YXIoLS1vZmZzZXQtYm90dG9tKX1bZGF0YS1zb25uZXItdG9hc3Rdey0teTp0cmFuc2xhdGVZKDEwMCUpOy0tbGlmdC1hbW91bnQ6Y2FsYyh2YXIoLS1saWZ0KSAqIHZhcigtLWdhcCkpO3otaW5kZXg6dmFyKC0tei1pbmRleCk7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO3RyYW5zZm9ybTp2YXIoLS15KTt0b3VjaC1hY3Rpb246bm9uZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNHMsb3BhY2l0eSAuNHMsaGVpZ2h0IC40cyxib3gtc2hhZG93IC4ycztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3V0bGluZTowO292ZXJmbG93LXdyYXA6YW55d2hlcmV9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXXtwYWRkaW5nOjE2cHg7YmFja2dyb3VuZDp2YXIoLS1ub3JtYWwtYmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbm9ybWFsLWJvcmRlcik7Y29sb3I6dmFyKC0tbm9ybWFsLXRleHQpO2JvcmRlci1yYWRpdXM6dmFyKC0tYm9yZGVyLXJhZGl1cyk7Ym94LXNoYWRvdzowIDRweCAxMnB4IHJnYmEoMCwwLDAsLjEpO3dpZHRoOnZhcigtLXdpZHRoKTtmb250LXNpemU6MTNweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHh9W2RhdGEtc29ubmVyLXRvYXN0XTpmb2N1cy12aXNpYmxle2JveC1zaGFkb3c6MCA0cHggMTJweCByZ2JhKDAsMCwwLC4xKSwwIDAgMCAycHggcmdiYSgwLDAsMCwuMil9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXktcG9zaXRpb249dG9wXXt0b3A6MDstLXk6dHJhbnNsYXRlWSgtMTAwJSk7LS1saWZ0OjE7LS1saWZ0LWFtb3VudDpjYWxjKDEgKiB2YXIoLS1nYXApKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEteS1wb3NpdGlvbj1ib3R0b21de2JvdHRvbTowOy0teTp0cmFuc2xhdGVZKDEwMCUpOy0tbGlmdDotMTstLWxpZnQtYW1vdW50OmNhbGModmFyKC0tbGlmdCkgKiB2YXIoLS1nYXApKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWRlc2NyaXB0aW9uXXtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS40O2NvbG9yOiMzZjNmM2Z9W2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWRlc2NyaXB0aW9uXXtjb2xvcjppbmhlcml0fVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXNvbm5lci10aGVtZT1kYXJrXSBbZGF0YS1kZXNjcmlwdGlvbl17Y29sb3I6I2U4ZThlOH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLXRpdGxlXXtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS41O2NvbG9yOmluaGVyaXR9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1pY29uXXtkaXNwbGF5OmZsZXg7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDtwb3NpdGlvbjpyZWxhdGl2ZTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1zaHJpbms6MDttYXJnaW4tbGVmdDp2YXIoLS10b2FzdC1pY29uLW1hcmdpbi1zdGFydCk7bWFyZ2luLXJpZ2h0OnZhcigtLXRvYXN0LWljb24tbWFyZ2luLWVuZCl9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXByb21pc2U9dHJ1ZV0gW2RhdGEtaWNvbl0+c3Zne29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO2FuaW1hdGlvbjpzb25uZXItZmFkZS1pbiAuM3MgZWFzZSBmb3J3YXJkc31bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWljb25dPip7ZmxleC1zaHJpbms6MH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWljb25dIHN2Z3ttYXJnaW4tbGVmdDp2YXIoLS10b2FzdC1zdmctbWFyZ2luLXN0YXJ0KTttYXJnaW4tcmlnaHQ6dmFyKC0tdG9hc3Qtc3ZnLW1hcmdpbi1lbmQpfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9dHJ1ZV0gW2RhdGEtY29udGVudF17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4fVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9dHJ1ZV0gW2RhdGEtYnV0dG9uXXtib3JkZXItcmFkaXVzOjRweDtwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6OHB4O2hlaWdodDoyNHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLW5vcm1hbC1iZyk7YmFja2dyb3VuZDp2YXIoLS1ub3JtYWwtdGV4dCk7bWFyZ2luLWxlZnQ6dmFyKC0tdG9hc3QtYnV0dG9uLW1hcmdpbi1zdGFydCk7bWFyZ2luLXJpZ2h0OnZhcigtLXRvYXN0LWJ1dHRvbi1tYXJnaW4tZW5kKTtib3JkZXI6bm9uZTtmb250LXdlaWdodDo1MDA7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTowO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1zaHJpbms6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjRzLGJveC1zaGFkb3cgLjJzfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9dHJ1ZV0gW2RhdGEtYnV0dG9uXTpmb2N1cy12aXNpYmxle2JveC1zaGFkb3c6MCAwIDAgMnB4IHJnYmEoMCwwLDAsLjQpfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9dHJ1ZV0gW2RhdGEtYnV0dG9uXTpmaXJzdC1vZi10eXBle21hcmdpbi1sZWZ0OnZhcigtLXRvYXN0LWJ1dHRvbi1tYXJnaW4tc3RhcnQpO21hcmdpbi1yaWdodDp2YXIoLS10b2FzdC1idXR0b24tbWFyZ2luLWVuZCl9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1jYW5jZWxde2NvbG9yOnZhcigtLW5vcm1hbC10ZXh0KTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA4KX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS1zb25uZXItdGhlbWU9ZGFya10gW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1jYW5jZWxde2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMyl9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1jbG9zZS1idXR0b25de3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6dmFyKC0tdG9hc3QtY2xvc2UtYnV0dG9uLXN0YXJ0KTtyaWdodDp2YXIoLS10b2FzdC1jbG9zZS1idXR0b24tZW5kKTt0b3A6MDtoZWlnaHQ6MjBweDt3aWR0aDoyMHB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjA7Y29sb3I6dmFyKC0tZ3JheTEyKTtiYWNrZ3JvdW5kOnZhcigtLW5vcm1hbC1iZyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ncmF5NCk7dHJhbnNmb3JtOnZhcigtLXRvYXN0LWNsb3NlLWJ1dHRvbi10cmFuc2Zvcm0pO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MTt0cmFuc2l0aW9uOm9wYWNpdHkgLjFzLGJhY2tncm91bmQgLjJzLGJvcmRlci1jb2xvciAuMnN9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1jbG9zZS1idXR0b25dOmZvY3VzLXZpc2libGV7Ym94LXNoYWRvdzowIDRweCAxMnB4IHJnYmEoMCwwLDAsLjEpLDAgMCAwIDJweCByZ2JhKDAsMCwwLC4yKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdIFtkYXRhLWRpc2FibGVkPXRydWVde2N1cnNvcjpub3QtYWxsb3dlZH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPXRydWVdOmhvdmVyIFtkYXRhLWNsb3NlLWJ1dHRvbl06aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1ncmF5Mik7Ym9yZGVyLWNvbG9yOnZhcigtLWdyYXk1KX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGluZz10cnVlXTo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTAwJTtyaWdodDotMTAwJTtoZWlnaHQ6MTAwJTt6LWluZGV4Oi0xfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS15LXBvc2l0aW9uPXRvcF1bZGF0YS1zd2lwaW5nPXRydWVdOjpiZWZvcmV7Ym90dG9tOjUwJTt0cmFuc2Zvcm06c2NhbGVZKDMpIHRyYW5zbGF0ZVkoNTAlKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEteS1wb3NpdGlvbj1ib3R0b21dW2RhdGEtc3dpcGluZz10cnVlXTo6YmVmb3Jle3RvcDo1MCU7dHJhbnNmb3JtOnNjYWxlWSgzKSB0cmFuc2xhdGVZKC01MCUpfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwaW5nPWZhbHNlXVtkYXRhLXJlbW92ZWQ9dHJ1ZV06OmJlZm9yZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7dHJhbnNmb3JtOnNjYWxlWSgyKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtZXhwYW5kZWQ9dHJ1ZV06OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2hlaWdodDpjYWxjKHZhcigtLWdhcCkgKyAxcHgpO2JvdHRvbToxMDAlO3dpZHRoOjEwMCV9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLW1vdW50ZWQ9dHJ1ZV17LS15OnRyYW5zbGF0ZVkoMCk7b3BhY2l0eToxfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1leHBhbmRlZD1mYWxzZV1bZGF0YS1mcm9udD1mYWxzZV17LS1zY2FsZTp2YXIoLS10b2FzdHMtYmVmb3JlKSAqIDAuMDUgKyAxOy0teTp0cmFuc2xhdGVZKGNhbGModmFyKC0tbGlmdC1hbW91bnQpICogdmFyKC0tdG9hc3RzLWJlZm9yZSkpKSBzY2FsZShjYWxjKC0xICogdmFyKC0tc2NhbGUpKSk7aGVpZ2h0OnZhcigtLWZyb250LXRvYXN0LWhlaWdodCl9W2RhdGEtc29ubmVyLXRvYXN0XT4qe3RyYW5zaXRpb246b3BhY2l0eSAuNHN9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXgtcG9zaXRpb249cmlnaHRde3JpZ2h0OjB9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXgtcG9zaXRpb249bGVmdF17bGVmdDowfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1leHBhbmRlZD1mYWxzZV1bZGF0YS1mcm9udD1mYWxzZV1bZGF0YS1zdHlsZWQ9dHJ1ZV0+KntvcGFjaXR5OjB9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXZpc2libGU9ZmFsc2Vde29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1tb3VudGVkPXRydWVdW2RhdGEtZXhwYW5kZWQ9dHJ1ZV17LS15OnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1saWZ0KSAqIHZhcigtLW9mZnNldCkpKTtoZWlnaHQ6dmFyKC0taW5pdGlhbC1oZWlnaHQpfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1yZW1vdmVkPXRydWVdW2RhdGEtZnJvbnQ9dHJ1ZV1bZGF0YS1zd2lwZS1vdXQ9ZmFsc2Vdey0teTp0cmFuc2xhdGVZKGNhbGModmFyKC0tbGlmdCkgKiAtMTAwJSkpO29wYWNpdHk6MH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtcmVtb3ZlZD10cnVlXVtkYXRhLWZyb250PWZhbHNlXVtkYXRhLXN3aXBlLW91dD1mYWxzZV1bZGF0YS1leHBhbmRlZD10cnVlXXstLXk6dHJhbnNsYXRlWShjYWxjKHZhcigtLWxpZnQpICogdmFyKC0tb2Zmc2V0KSArIHZhcigtLWxpZnQpICogLTEwMCUpKTtvcGFjaXR5OjB9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXJlbW92ZWQ9dHJ1ZV1bZGF0YS1mcm9udD1mYWxzZV1bZGF0YS1zd2lwZS1vdXQ9ZmFsc2VdW2RhdGEtZXhwYW5kZWQ9ZmFsc2Vdey0teTp0cmFuc2xhdGVZKDQwJSk7b3BhY2l0eTowO3RyYW5zaXRpb246dHJhbnNmb3JtIC41cyxvcGFjaXR5IC4yc31bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtcmVtb3ZlZD10cnVlXVtkYXRhLWZyb250PWZhbHNlXTo6YmVmb3Jle2hlaWdodDpjYWxjKHZhcigtLWluaXRpYWwtaGVpZ2h0KSArIDIwJSl9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBpbmc9dHJ1ZV17dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZVkodmFyKC0tc3dpcGUtYW1vdW50LXksMCkpIHRyYW5zbGF0ZVgodmFyKC0tc3dpcGUtYW1vdW50LXgsMCkpO3RyYW5zaXRpb246bm9uZX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGVkPXRydWVde3VzZXItc2VsZWN0Om5vbmV9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBlLW91dD10cnVlXVtkYXRhLXktcG9zaXRpb249Ym90dG9tXSxbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGUtb3V0PXRydWVdW2RhdGEteS1wb3NpdGlvbj10b3Bde2FuaW1hdGlvbi1kdXJhdGlvbjouMnM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dDthbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwZS1vdXQ9dHJ1ZV1bZGF0YS1zd2lwZS1kaXJlY3Rpb249bGVmdF17YW5pbWF0aW9uLW5hbWU6c3dpcGUtb3V0LWxlZnR9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBlLW91dD10cnVlXVtkYXRhLXN3aXBlLWRpcmVjdGlvbj1yaWdodF17YW5pbWF0aW9uLW5hbWU6c3dpcGUtb3V0LXJpZ2h0fVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwZS1vdXQ9dHJ1ZV1bZGF0YS1zd2lwZS1kaXJlY3Rpb249dXBde2FuaW1hdGlvbi1uYW1lOnN3aXBlLW91dC11cH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGUtb3V0PXRydWVdW2RhdGEtc3dpcGUtZGlyZWN0aW9uPWRvd25de2FuaW1hdGlvbi1uYW1lOnN3aXBlLW91dC1kb3dufUBrZXlmcmFtZXMgc3dpcGUtb3V0LWxlZnR7ZnJvbXt0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlWCh2YXIoLS1zd2lwZS1hbW91bnQteCkpO29wYWNpdHk6MX10b3t0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlWChjYWxjKHZhcigtLXN3aXBlLWFtb3VudC14KSAtIDEwMCUpKTtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgc3dpcGUtb3V0LXJpZ2h0e2Zyb217dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZVgodmFyKC0tc3dpcGUtYW1vdW50LXgpKTtvcGFjaXR5OjF9dG97dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZVgoY2FsYyh2YXIoLS1zd2lwZS1hbW91bnQteCkgKyAxMDAlKSk7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHN3aXBlLW91dC11cHtmcm9te3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKHZhcigtLXN3aXBlLWFtb3VudC15KSk7b3BhY2l0eToxfXRve3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKGNhbGModmFyKC0tc3dpcGUtYW1vdW50LXkpIC0gMTAwJSkpO29wYWNpdHk6MH19QGtleWZyYW1lcyBzd2lwZS1vdXQtZG93bntmcm9te3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKHZhcigtLXN3aXBlLWFtb3VudC15KSk7b3BhY2l0eToxfXRve3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKGNhbGModmFyKC0tc3dpcGUtYW1vdW50LXkpICsgMTAwJSkpO29wYWNpdHk6MH19QG1lZGlhIChtYXgtd2lkdGg6NjAwcHgpe1tkYXRhLXNvbm5lci10b2FzdGVyXXtwb3NpdGlvbjpmaXhlZDtyaWdodDp2YXIoLS1tb2JpbGUtb2Zmc2V0LXJpZ2h0KTtsZWZ0OnZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCk7d2lkdGg6MTAwJX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGlyPXJ0bF17bGVmdDpjYWxjKHZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCkgKiAtMSl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdIFtkYXRhLXNvbm5lci10b2FzdF17bGVmdDowO3JpZ2h0OjA7d2lkdGg6Y2FsYygxMDAlIC0gdmFyKC0tbW9iaWxlLW9mZnNldC1sZWZ0KSAqIDIpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249bGVmdF17bGVmdDp2YXIoLS1tb2JpbGUtb2Zmc2V0LWxlZnQpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXktcG9zaXRpb249Ym90dG9tXXtib3R0b206dmFyKC0tbW9iaWxlLW9mZnNldC1ib3R0b20pfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXktcG9zaXRpb249dG9wXXt0b3A6dmFyKC0tbW9iaWxlLW9mZnNldC10b3ApfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249Y2VudGVyXXtsZWZ0OnZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCk7cmlnaHQ6dmFyKC0tbW9iaWxlLW9mZnNldC1yaWdodCk7dHJhbnNmb3JtOm5vbmV9fVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXNvbm5lci10aGVtZT1saWdodF17LS1ub3JtYWwtYmc6I2ZmZjstLW5vcm1hbC1ib3JkZXI6dmFyKC0tZ3JheTQpOy0tbm9ybWFsLXRleHQ6dmFyKC0tZ3JheTEyKTstLXN1Y2Nlc3MtYmc6aHNsKDE0MywgODUlLCA5NiUpOy0tc3VjY2Vzcy1ib3JkZXI6aHNsKDE0NSwgOTIlLCA4NyUpOy0tc3VjY2Vzcy10ZXh0OmhzbCgxNDAsIDEwMCUsIDI3JSk7LS1pbmZvLWJnOmhzbCgyMDgsIDEwMCUsIDk3JSk7LS1pbmZvLWJvcmRlcjpoc2woMjIxLCA5MSUsIDkzJSk7LS1pbmZvLXRleHQ6aHNsKDIxMCwgOTIlLCA0NSUpOy0td2FybmluZy1iZzpoc2woNDksIDEwMCUsIDk3JSk7LS13YXJuaW5nLWJvcmRlcjpoc2woNDksIDkxJSwgODQlKTstLXdhcm5pbmctdGV4dDpoc2woMzEsIDkyJSwgNDUlKTstLWVycm9yLWJnOmhzbCgzNTksIDEwMCUsIDk3JSk7LS1lcnJvci1ib3JkZXI6aHNsKDM1OSwgMTAwJSwgOTQlKTstLWVycm9yLXRleHQ6aHNsKDM2MCwgMTAwJSwgNDUlKX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS1zb25uZXItdGhlbWU9bGlnaHRdIFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1pbnZlcnQ9dHJ1ZV17LS1ub3JtYWwtYmc6IzAwMDstLW5vcm1hbC1ib3JkZXI6aHNsKDAsIDAlLCAyMCUpOy0tbm9ybWFsLXRleHQ6dmFyKC0tZ3JheTEpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXNvbm5lci10aGVtZT1kYXJrXSBbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtaW52ZXJ0PXRydWVdey0tbm9ybWFsLWJnOiNmZmY7LS1ub3JtYWwtYm9yZGVyOnZhcigtLWdyYXkzKTstLW5vcm1hbC10ZXh0OnZhcigtLWdyYXkxMil9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtc29ubmVyLXRoZW1lPWRhcmtdey0tbm9ybWFsLWJnOiMwMDA7LS1ub3JtYWwtYmctaG92ZXI6aHNsKDAsIDAlLCAxMiUpOy0tbm9ybWFsLWJvcmRlcjpoc2woMCwgMCUsIDIwJSk7LS1ub3JtYWwtYm9yZGVyLWhvdmVyOmhzbCgwLCAwJSwgMjUlKTstLW5vcm1hbC10ZXh0OnZhcigtLWdyYXkxKTstLXN1Y2Nlc3MtYmc6aHNsKDE1MCwgMTAwJSwgNiUpOy0tc3VjY2Vzcy1ib3JkZXI6aHNsKDE0NywgMTAwJSwgMTIlKTstLXN1Y2Nlc3MtdGV4dDpoc2woMTUwLCA4NiUsIDY1JSk7LS1pbmZvLWJnOmhzbCgyMTUsIDEwMCUsIDYlKTstLWluZm8tYm9yZGVyOmhzbCgyMjMsIDQzJSwgMTclKTstLWluZm8tdGV4dDpoc2woMjE2LCA4NyUsIDY1JSk7LS13YXJuaW5nLWJnOmhzbCg2NCwgMTAwJSwgNiUpOy0td2FybmluZy1ib3JkZXI6aHNsKDYwLCAxMDAlLCA5JSk7LS13YXJuaW5nLXRleHQ6aHNsKDQ2LCA4NyUsIDY1JSk7LS1lcnJvci1iZzpoc2woMzU4LCA3NiUsIDEwJSk7LS1lcnJvci1ib3JkZXI6aHNsKDM1NywgODklLCAxNiUpOy0tZXJyb3ItdGV4dDpoc2woMzU4LCAxMDAlLCA4MSUpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXNvbm5lci10aGVtZT1kYXJrXSBbZGF0YS1zb25uZXItdG9hc3RdIFtkYXRhLWNsb3NlLWJ1dHRvbl17YmFja2dyb3VuZDp2YXIoLS1ub3JtYWwtYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1ub3JtYWwtYm9yZGVyKTtjb2xvcjp2YXIoLS1ub3JtYWwtdGV4dCl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtc29ubmVyLXRoZW1lPWRhcmtdIFtkYXRhLXNvbm5lci10b2FzdF0gW2RhdGEtY2xvc2UtYnV0dG9uXTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLW5vcm1hbC1iZy1ob3Zlcik7Ym9yZGVyLWNvbG9yOnZhcigtLW5vcm1hbC1ib3JkZXItaG92ZXIpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9c3VjY2Vzc117YmFja2dyb3VuZDp2YXIoLS1zdWNjZXNzLWJnKTtib3JkZXItY29sb3I6dmFyKC0tc3VjY2Vzcy1ib3JkZXIpO2NvbG9yOnZhcigtLXN1Y2Nlc3MtdGV4dCl9W2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdHlwZT1zdWNjZXNzXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0tc3VjY2Vzcy1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLXN1Y2Nlc3MtYm9yZGVyKTtjb2xvcjp2YXIoLS1zdWNjZXNzLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9aW5mb117YmFja2dyb3VuZDp2YXIoLS1pbmZvLWJnKTtib3JkZXItY29sb3I6dmFyKC0taW5mby1ib3JkZXIpO2NvbG9yOnZhcigtLWluZm8tdGV4dCl9W2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdHlwZT1pbmZvXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0taW5mby1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWluZm8tYm9yZGVyKTtjb2xvcjp2YXIoLS1pbmZvLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9d2FybmluZ117YmFja2dyb3VuZDp2YXIoLS13YXJuaW5nLWJnKTtib3JkZXItY29sb3I6dmFyKC0td2FybmluZy1ib3JkZXIpO2NvbG9yOnZhcigtLXdhcm5pbmctdGV4dCl9W2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdHlwZT13YXJuaW5nXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0td2FybmluZy1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLXdhcm5pbmctYm9yZGVyKTtjb2xvcjp2YXIoLS13YXJuaW5nLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9ZXJyb3Jde2JhY2tncm91bmQ6dmFyKC0tZXJyb3ItYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1lcnJvci1ib3JkZXIpO2NvbG9yOnZhcigtLWVycm9yLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9ZXJyb3JdIFtkYXRhLWNsb3NlLWJ1dHRvbl17YmFja2dyb3VuZDp2YXIoLS1lcnJvci1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWVycm9yLWJvcmRlcik7Y29sb3I6dmFyKC0tZXJyb3ItdGV4dCl9LnNvbm5lci1sb2FkaW5nLXdyYXBwZXJ7LS1zaXplOjE2cHg7aGVpZ2h0OnZhcigtLXNpemUpO3dpZHRoOnZhcigtLXNpemUpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ei1pbmRleDoxMH0uc29ubmVyLWxvYWRpbmctd3JhcHBlcltkYXRhLXZpc2libGU9ZmFsc2Vde3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO2FuaW1hdGlvbjpzb25uZXItZmFkZS1vdXQgLjJzIGVhc2UgZm9yd2FyZHN9LnNvbm5lci1zcGlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDo1MCU7bGVmdDo1MCU7aGVpZ2h0OnZhcigtLXNpemUpO3dpZHRoOnZhcigtLXNpemUpfS5zb25uZXItbG9hZGluZy1iYXJ7YW5pbWF0aW9uOnNvbm5lci1zcGluIDEuMnMgbGluZWFyIGluZmluaXRlO2JhY2tncm91bmQ6dmFyKC0tZ3JheTExKTtib3JkZXItcmFkaXVzOjZweDtoZWlnaHQ6OCU7bGVmdDotMTAlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMy45JTt3aWR0aDoyNCV9LnNvbm5lci1sb2FkaW5nLWJhcjpmaXJzdC1jaGlsZHthbmltYXRpb24tZGVsYXk6LTEuMnM7dHJhbnNmb3JtOnJvdGF0ZSguMDAwMWRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDIpe2FuaW1hdGlvbi1kZWxheTotMS4xczt0cmFuc2Zvcm06cm90YXRlKDMwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi0xczt0cmFuc2Zvcm06cm90YXRlKDYwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoNCl7YW5pbWF0aW9uLWRlbGF5Oi0uOXM7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDUpe2FuaW1hdGlvbi1kZWxheTotLjhzO3RyYW5zZm9ybTpyb3RhdGUoMTIwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi0uN3M7dHJhbnNmb3JtOnJvdGF0ZSgxNTBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCg3KXthbmltYXRpb24tZGVsYXk6LS42czt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDgpe2FuaW1hdGlvbi1kZWxheTotLjVzO3RyYW5zZm9ybTpyb3RhdGUoMjEwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoOSl7YW5pbWF0aW9uLWRlbGF5Oi0uNHM7dHJhbnNmb3JtOnJvdGF0ZSgyNDBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxMCl7YW5pbWF0aW9uLWRlbGF5Oi0uM3M7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxMSl7YW5pbWF0aW9uLWRlbGF5Oi0uMnM7dHJhbnNmb3JtOnJvdGF0ZSgzMDBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxMil7YW5pbWF0aW9uLWRlbGF5Oi0uMXM7dHJhbnNmb3JtOnJvdGF0ZSgzMzBkZWcpIHRyYW5zbGF0ZSgxNDYlKX1Aa2V5ZnJhbWVzIHNvbm5lci1mYWRlLWluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZSgxKX19QGtleWZyYW1lcyBzb25uZXItZmFkZS1vdXR7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZSgxKX0xMDAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpfX1Aa2V5ZnJhbWVzIHNvbm5lci1zcGluezAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6LjE1fX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pey5zb25uZXItbG9hZGluZy1iYXIsW2RhdGEtc29ubmVyLXRvYXN0XSxbZGF0YS1zb25uZXItdG9hc3RdPip7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudDthbmltYXRpb246bm9uZSFpbXBvcnRhbnR9fS5zb25uZXItbG9hZGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246b3BhY2l0eSAuMnMsdHJhbnNmb3JtIC4yc30uc29ubmVyLWxvYWRlcltkYXRhLXZpc2libGU9ZmFsc2Vde29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpIHRyYW5zbGF0ZSgtNTAlLC01MCUpfSIpO2Z1bmN0aW9uIG01KCQpe3JldHVybiAkLmxhYmVsIT09dm9pZCAwfXZhciB3Sj0zLFRKPSIyNHB4IixJSj0iMTZweCIsRTY9NDAwMCxFSj0zNTYseUo9MTQsYko9NDUsU0o9MjAwO2Z1bmN0aW9uIGIwKC4uLiQpe3JldHVybiAkLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIil9ZnVuY3Rpb24geEooJCl7bGV0W0osUV09JC5zcGxpdCgiLSIpLFo9W107aWYoSilaLnB1c2goSik7aWYoUSlaLnB1c2goUSk7cmV0dXJuIFp9dmFyIGpKPSgkKT0+e3ZhciBKLFEsWixLLFkscSxHLE4sQjtsZXR7aW52ZXJ0OkwsdG9hc3Q6Vix1bnN0eWxlZDpVLGludGVyYWN0aW5nOnosc2V0SGVpZ2h0czprLHZpc2libGVUb2FzdHM6SCxoZWlnaHRzOkMsaW5kZXg6Rix0b2FzdHM6TyxleHBhbmRlZDpJLHJlbW92ZVRvYXN0OncsZGVmYXVsdFJpY2hDb2xvcnM6UyxjbG9zZUJ1dHRvbjpqLHN0eWxlOiQxLGNhbmNlbEJ1dHRvblN0eWxlOm0sYWN0aW9uQnV0dG9uU3R5bGU6YyxjbGFzc05hbWU6bj0iIixkZXNjcmlwdGlvbkNsYXNzTmFtZTpvPSIiLGR1cmF0aW9uOnIscG9zaXRpb246UTEsZ2FwOk4xLGV4cGFuZEJ5RGVmYXVsdDpkLGNsYXNzTmFtZXM6eCxpY29uczphLGNsb3NlQnV0dG9uQXJpYUxhYmVsOksxPSJDbG9zZSB0b2FzdCJ9PSQsW0wxLEoxXT1mLnVzZVN0YXRlKG51bGwpLFtZMSxDMV09Zi51c2VTdGF0ZShudWxsKSxbeSxnXT1mLnVzZVN0YXRlKCExKSxbXyxwXT1mLnVzZVN0YXRlKCExKSxbdSx2XT1mLnVzZVN0YXRlKCExKSxbRzEsejFdPWYudXNlU3RhdGUoITEpLFtBMSxXMV09Zi51c2VTdGF0ZSghMSksW2kxLE8xXT1mLnVzZVN0YXRlKDApLFtqMSxfMV09Zi51c2VTdGF0ZSgwKSxsMT1mLnVzZVJlZihWLmR1cmF0aW9ufHxyfHxFNiksVTE9Zi51c2VSZWYobnVsbCksSTE9Zi51c2VSZWYobnVsbCksZDE9Rj09PTAsdDE9RisxPD1ILGgxPVYudHlwZSxhMT1WLmRpc21pc3NpYmxlIT09ITEsJDA9Vi5jbGFzc05hbWV8fCIiLFYwPVYuZGVzY3JpcHRpb25DbGFzc05hbWV8fCIiLHMxPWYudXNlTWVtbygoKT0+Qy5maW5kSW5kZXgoKFgxKT0+WDEudG9hc3RJZD09PVYuaWQpfHwwLFtDLFYuaWRdKSx2MD1mLnVzZU1lbW8oKCk9Pnt2YXIgWDE7cmV0dXJuKFgxPVYuY2xvc2VCdXR0b24pIT1udWxsP1gxOmp9LFtWLmNsb3NlQnV0dG9uLGpdKSxtMT1mLnVzZU1lbW8oKCk9PlYuZHVyYXRpb258fHJ8fEU2LFtWLmR1cmF0aW9uLHJdKSxxMD1mLnVzZVJlZigwKSxKMD1mLnVzZVJlZigwKSxfMD1mLnVzZVJlZigwKSxjMT1mLnVzZVJlZihudWxsKSxbbjEsUDBdPVExLnNwbGl0KCItIiksdjE9Zi51c2VNZW1vKCgpPT57cmV0dXJuIEMucmVkdWNlKChYMSxQLGwpPT57aWYobD49czEpcmV0dXJuIFgxO3JldHVybiBYMStQLmhlaWdodH0sMCl9LFtDLHMxXSksQzA9T0ooKSxCMD1WLmludmVydHx8TCxEMT1oMT09PSJsb2FkaW5nIjtKMC5jdXJyZW50PWYudXNlTWVtbygoKT0+czEqTjErdjEsW3MxLHYxXSksZi51c2VFZmZlY3QoKCk9PntsMS5jdXJyZW50PW0xfSxbbTFdKSxmLnVzZUVmZmVjdCgoKT0+e2coITApfSxbXSksZi51c2VFZmZlY3QoKCk9PntsZXQgWDE9STEuY3VycmVudDtpZihYMSl7bGV0IFA9WDEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O3JldHVybiBfMShQKSxrKChsKT0+W3t0b2FzdElkOlYuaWQsaGVpZ2h0OlAscG9zaXRpb246Vi5wb3NpdGlvbn0sLi4ubF0pLCgpPT5rKChsKT0+bC5maWx0ZXIoKGkpPT5pLnRvYXN0SWQhPT1WLmlkKSl9fSxbayxWLmlkXSksZi51c2VMYXlvdXRFZmZlY3QoKCk9PntpZigheSlyZXR1cm47bGV0IFgxPUkxLmN1cnJlbnQsUD1YMS5zdHlsZS5oZWlnaHQ7WDEuc3R5bGUuaGVpZ2h0PSJhdXRvIjtsZXQgbD1YMS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7WDEuc3R5bGUuaGVpZ2h0PVAsXzEobCksaygoaSk9PntpZighaS5maW5kKChWMSk9PlYxLnRvYXN0SWQ9PT1WLmlkKSlyZXR1cm5be3RvYXN0SWQ6Vi5pZCxoZWlnaHQ6bCxwb3NpdGlvbjpWLnBvc2l0aW9ufSwuLi5pXTtlbHNlIHJldHVybiBpLm1hcCgoVjEpPT5WMS50b2FzdElkPT09Vi5pZD97Li4uVjEsaGVpZ2h0Omx9OlYxKX0pfSxbeSxWLnRpdGxlLFYuZGVzY3JpcHRpb24sayxWLmlkLFYuanN4LFYuYWN0aW9uLFYuY2FuY2VsXSk7bGV0IHkxPWYudXNlQ2FsbGJhY2soKCk9PntwKCEwKSxPMShKMC5jdXJyZW50KSxrKChYMSk9PlgxLmZpbHRlcigoUCk9PlAudG9hc3RJZCE9PVYuaWQpKSxzZXRUaW1lb3V0KCgpPT57dyhWKX0sU0opfSxbVix3LGssSjBdKTtmLnVzZUVmZmVjdCgoKT0+e2lmKFYucHJvbWlzZSYmaDE9PT0ibG9hZGluZyJ8fFYuZHVyYXRpb249PT0xLzB8fFYudHlwZT09PSJsb2FkaW5nIilyZXR1cm47bGV0IFgxLFA9KCk9PntpZihfMC5jdXJyZW50PHEwLmN1cnJlbnQpe2xldCBpPW5ldyBEYXRlKCkuZ2V0VGltZSgpLXEwLmN1cnJlbnQ7bDEuY3VycmVudD1sMS5jdXJyZW50LWl9XzAuY3VycmVudD1uZXcgRGF0ZSgpLmdldFRpbWUoKX0sbD0oKT0+e2lmKGwxLmN1cnJlbnQ9PT0xLzApcmV0dXJuO3EwLmN1cnJlbnQ9bmV3IERhdGUoKS5nZXRUaW1lKCksWDE9c2V0VGltZW91dCgoKT0+e1Yub25BdXRvQ2xvc2U9PW51bGx8fFYub25BdXRvQ2xvc2UuY2FsbChWLFYpLHkxKCl9LGwxLmN1cnJlbnQpfTtpZihJfHx6fHxDMClQKCk7ZWxzZSBsKCk7cmV0dXJuKCk9PmNsZWFyVGltZW91dChYMSl9LFtJLHosVixoMSxDMCx5MV0pLGYudXNlRWZmZWN0KCgpPT57aWYoVi5kZWxldGUpeTEoKSxWLm9uRGlzbWlzcz09bnVsbHx8Vi5vbkRpc21pc3MuY2FsbChWLFYpfSxbeTEsVi5kZWxldGVdKTtmdW5jdGlvbiBRMCgpe3ZhciBYMTtpZihhPT1udWxsP3ZvaWQgMDphLmxvYWRpbmcpe3ZhciBQO3JldHVybiBmLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpiMCh4PT1udWxsP3ZvaWQgMDp4LmxvYWRlcixWPT1udWxsP3ZvaWQgMDooUD1WLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpQLmxvYWRlciwic29ubmVyLWxvYWRlciIpLCJkYXRhLXZpc2libGUiOmgxPT09ImxvYWRpbmcifSxhLmxvYWRpbmcpfXJldHVybiBmLmNyZWF0ZUVsZW1lbnQoVUose2NsYXNzTmFtZTpiMCh4PT1udWxsP3ZvaWQgMDp4LmxvYWRlcixWPT1udWxsP3ZvaWQgMDooWDE9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6WDEubG9hZGVyKSx2aXNpYmxlOmgxPT09ImxvYWRpbmcifSl9bGV0IEYwPVYuaWNvbnx8KGE9PW51bGw/dm9pZCAwOmFbaDFdKXx8TEooaDEpO3ZhciBOMCxrMDtyZXR1cm4gZi5jcmVhdGVFbGVtZW50KCJsaSIse3RhYkluZGV4OjAscmVmOkkxLGNsYXNzTmFtZTpiMChuLCQwLHg9PW51bGw/dm9pZCAwOngudG9hc3QsVj09bnVsbD92b2lkIDA6KEo9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6Si50b2FzdCx4PT1udWxsP3ZvaWQgMDp4LmRlZmF1bHQseD09bnVsbD92b2lkIDA6eFtoMV0sVj09bnVsbD92b2lkIDA6KFE9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6UVtoMV0pLCJkYXRhLXNvbm5lci10b2FzdCI6IiIsImRhdGEtcmljaC1jb2xvcnMiOihOMD1WLnJpY2hDb2xvcnMpIT1udWxsP04wOlMsImRhdGEtc3R5bGVkIjohQm9vbGVhbihWLmpzeHx8Vi51bnN0eWxlZHx8VSksImRhdGEtbW91bnRlZCI6eSwiZGF0YS1wcm9taXNlIjpCb29sZWFuKFYucHJvbWlzZSksImRhdGEtc3dpcGVkIjpBMSwiZGF0YS1yZW1vdmVkIjpfLCJkYXRhLXZpc2libGUiOnQxLCJkYXRhLXktcG9zaXRpb24iOm4xLCJkYXRhLXgtcG9zaXRpb24iOlAwLCJkYXRhLWluZGV4IjpGLCJkYXRhLWZyb250IjpkMSwiZGF0YS1zd2lwaW5nIjp1LCJkYXRhLWRpc21pc3NpYmxlIjphMSwiZGF0YS10eXBlIjpoMSwiZGF0YS1pbnZlcnQiOkIwLCJkYXRhLXN3aXBlLW91dCI6RzEsImRhdGEtc3dpcGUtZGlyZWN0aW9uIjpZMSwiZGF0YS1leHBhbmRlZCI6Qm9vbGVhbihJfHxkJiZ5KSwiZGF0YS10ZXN0aWQiOlYudGVzdElkLHN0eWxlOnsiLS1pbmRleCI6RiwiLS10b2FzdHMtYmVmb3JlIjpGLCItLXotaW5kZXgiOk8ubGVuZ3RoLUYsIi0tb2Zmc2V0IjpgJHtfP2kxOkowLmN1cnJlbnR9cHhgLCItLWluaXRpYWwtaGVpZ2h0IjpkPyJhdXRvIjpgJHtqMX1weGAsLi4uJDEsLi4uVi5zdHlsZX0sb25EcmFnRW5kOigpPT57dighMSksSjEobnVsbCksYzEuY3VycmVudD1udWxsfSxvblBvaW50ZXJEb3duOihYMSk9PntpZihYMS5idXR0b249PT0yKXJldHVybjtpZihEMXx8IWExKXJldHVybjtpZihVMS5jdXJyZW50PW5ldyBEYXRlLE8xKEowLmN1cnJlbnQpLFgxLnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShYMS5wb2ludGVySWQpLFgxLnRhcmdldC50YWdOYW1lPT09IkJVVFRPTiIpcmV0dXJuO3YoITApLGMxLmN1cnJlbnQ9e3g6WDEuY2xpZW50WCx5OlgxLmNsaWVudFl9fSxvblBvaW50ZXJVcDooKT0+e3ZhciBYMSxQLGw7aWYoRzF8fCFhMSlyZXR1cm47YzEuY3VycmVudD1udWxsO2xldCBpPU51bWJlcigoKFgxPUkxLmN1cnJlbnQpPT1udWxsP3ZvaWQgMDpYMS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLXN3aXBlLWFtb3VudC14IikucmVwbGFjZSgicHgiLCIiKSl8fDApLGsxPU51bWJlcigoKFA9STEuY3VycmVudCk9PW51bGw/dm9pZCAwOlAuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1zd2lwZS1hbW91bnQteSIpLnJlcGxhY2UoInB4IiwiIikpfHwwKSxWMT1uZXcgRGF0ZSgpLmdldFRpbWUoKS0oKGw9VTEuY3VycmVudCk9PW51bGw/dm9pZCAwOmwuZ2V0VGltZSgpKSxCMT1MMT09PSJ4Ij9pOmsxLGcxPU1hdGguYWJzKEIxKS9WMTtpZihNYXRoLmFicyhCMSk+PWJKfHxnMT4wLjExKXtpZihPMShKMC5jdXJyZW50KSxWLm9uRGlzbWlzcz09bnVsbHx8Vi5vbkRpc21pc3MuY2FsbChWLFYpLEwxPT09IngiKUMxKGk+MD8icmlnaHQiOiJsZWZ0Iik7ZWxzZSBDMShrMT4wPyJkb3duIjoidXAiKTt5MSgpLHoxKCEwKTtyZXR1cm59ZWxzZXt2YXIgcDEseDE7KHAxPUkxLmN1cnJlbnQpPT1udWxsfHxwMS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1zd2lwZS1hbW91bnQteCIsIjBweCIpLCh4MT1JMS5jdXJyZW50KT09bnVsbHx8eDEuc3R5bGUuc2V0UHJvcGVydHkoIi0tc3dpcGUtYW1vdW50LXkiLCIwcHgiKX1XMSghMSksdighMSksSjEobnVsbCl9LG9uUG9pbnRlck1vdmU6KFgxKT0+e3ZhciBQLGwsaTtpZighYzEuY3VycmVudHx8IWExKXJldHVybjtpZigoKFA9d2luZG93LmdldFNlbGVjdGlvbigpKT09bnVsbD92b2lkIDA6UC50b1N0cmluZygpLmxlbmd0aCk+MClyZXR1cm47bGV0IFYxPVgxLmNsaWVudFktYzEuY3VycmVudC55LEIxPVgxLmNsaWVudFgtYzEuY3VycmVudC54O3ZhciBnMTtsZXQgcDE9KGcxPSQuc3dpcGVEaXJlY3Rpb25zKSE9bnVsbD9nMTp4SihRMSk7aWYoIUwxJiYoTWF0aC5hYnMoQjEpPjF8fE1hdGguYWJzKFYxKT4xKSlKMShNYXRoLmFicyhCMSk+TWF0aC5hYnMoVjEpPyJ4IjoieSIpO2xldCB4MT17eDowLHk6MH0sTTA9KFowKT0+e3JldHVybiAxLygxLjUrTWF0aC5hYnMoWjApLzIwKX07aWYoTDE9PT0ieSIpe2lmKHAxLmluY2x1ZGVzKCJ0b3AiKXx8cDEuaW5jbHVkZXMoImJvdHRvbSIpKWlmKHAxLmluY2x1ZGVzKCJ0b3AiKSYmVjE8MHx8cDEuaW5jbHVkZXMoImJvdHRvbSIpJiZWMT4wKXgxLnk9VjE7ZWxzZXtsZXQgWjA9VjEqTTAoVjEpO3gxLnk9TWF0aC5hYnMoWjApPE1hdGguYWJzKFYxKT9aMDpWMX19ZWxzZSBpZihMMT09PSJ4Iil7aWYocDEuaW5jbHVkZXMoImxlZnQiKXx8cDEuaW5jbHVkZXMoInJpZ2h0IikpaWYocDEuaW5jbHVkZXMoImxlZnQiKSYmQjE8MHx8cDEuaW5jbHVkZXMoInJpZ2h0IikmJkIxPjApeDEueD1CMTtlbHNle2xldCBaMD1CMSpNMChCMSk7eDEueD1NYXRoLmFicyhaMCk8TWF0aC5hYnMoQjEpP1owOkIxfX1pZihNYXRoLmFicyh4MS54KT4wfHxNYXRoLmFicyh4MS55KT4wKVcxKCEwKTsobD1JMS5jdXJyZW50KT09bnVsbHx8bC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1zd2lwZS1hbW91bnQteCIsYCR7eDEueH1weGApLChpPUkxLmN1cnJlbnQpPT1udWxsfHxpLnN0eWxlLnNldFByb3BlcnR5KCItLXN3aXBlLWFtb3VudC15IixgJHt4MS55fXB4YCl9fSx2MCYmIVYuanN4JiZoMSE9PSJsb2FkaW5nIj9mLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIseyJhcmlhLWxhYmVsIjpLMSwiZGF0YS1kaXNhYmxlZCI6RDEsImRhdGEtY2xvc2UtYnV0dG9uIjohMCxvbkNsaWNrOkQxfHwhYTE/KCk9Pnt9OigpPT57eTEoKSxWLm9uRGlzbWlzcz09bnVsbHx8Vi5vbkRpc21pc3MuY2FsbChWLFYpfSxjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC5jbG9zZUJ1dHRvbixWPT1udWxsP3ZvaWQgMDooWj1WLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpaLmNsb3NlQnV0dG9uKX0sKGswPWE9PW51bGw/dm9pZCAwOmEuY2xvc2UpIT1udWxsP2swOk1KKTpudWxsLChoMXx8Vi5pY29ufHxWLnByb21pc2UpJiZWLmljb24hPT1udWxsJiYoKGE9PW51bGw/dm9pZCAwOmFbaDFdKSE9PW51bGx8fFYuaWNvbik/Zi5jcmVhdGVFbGVtZW50KCJkaXYiLHsiZGF0YS1pY29uIjoiIixjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC5pY29uLFY9PW51bGw/dm9pZCAwOihLPVYuY2xhc3NOYW1lcyk9PW51bGw/dm9pZCAwOksuaWNvbil9LFYucHJvbWlzZXx8Vi50eXBlPT09ImxvYWRpbmciJiYhVi5pY29uP1YuaWNvbnx8UTAoKTpudWxsLFYudHlwZSE9PSJsb2FkaW5nIj9GMDpudWxsKTpudWxsLGYuY3JlYXRlRWxlbWVudCgiZGl2Iix7ImRhdGEtY29udGVudCI6IiIsY2xhc3NOYW1lOmIwKHg9PW51bGw/dm9pZCAwOnguY29udGVudCxWPT1udWxsP3ZvaWQgMDooWT1WLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpZLmNvbnRlbnQpfSxmLmNyZWF0ZUVsZW1lbnQoImRpdiIseyJkYXRhLXRpdGxlIjoiIixjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC50aXRsZSxWPT1udWxsP3ZvaWQgMDoocT1WLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpxLnRpdGxlKX0sVi5qc3g/Vi5qc3g6dHlwZW9mIFYudGl0bGU9PT0iZnVuY3Rpb24iP1YudGl0bGUoKTpWLnRpdGxlKSxWLmRlc2NyaXB0aW9uP2YuY3JlYXRlRWxlbWVudCgiZGl2Iix7ImRhdGEtZGVzY3JpcHRpb24iOiIiLGNsYXNzTmFtZTpiMChvLFYwLHg9PW51bGw/dm9pZCAwOnguZGVzY3JpcHRpb24sVj09bnVsbD92b2lkIDA6KEc9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6Ry5kZXNjcmlwdGlvbil9LHR5cGVvZiBWLmRlc2NyaXB0aW9uPT09ImZ1bmN0aW9uIj9WLmRlc2NyaXB0aW9uKCk6Vi5kZXNjcmlwdGlvbik6bnVsbCksZi5pc1ZhbGlkRWxlbWVudChWLmNhbmNlbCk/Vi5jYW5jZWw6Vi5jYW5jZWwmJm01KFYuY2FuY2VsKT9mLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIseyJkYXRhLWJ1dHRvbiI6ITAsImRhdGEtY2FuY2VsIjohMCxzdHlsZTpWLmNhbmNlbEJ1dHRvblN0eWxlfHxtLG9uQ2xpY2s6KFgxKT0+e2lmKCFtNShWLmNhbmNlbCkpcmV0dXJuO2lmKCFhMSlyZXR1cm47Vi5jYW5jZWwub25DbGljaz09bnVsbHx8Vi5jYW5jZWwub25DbGljay5jYWxsKFYuY2FuY2VsLFgxKSx5MSgpfSxjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC5jYW5jZWxCdXR0b24sVj09bnVsbD92b2lkIDA6KE49Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6Ti5jYW5jZWxCdXR0b24pfSxWLmNhbmNlbC5sYWJlbCk6bnVsbCxmLmlzVmFsaWRFbGVtZW50KFYuYWN0aW9uKT9WLmFjdGlvbjpWLmFjdGlvbiYmbTUoVi5hY3Rpb24pP2YuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7ImRhdGEtYnV0dG9uIjohMCwiZGF0YS1hY3Rpb24iOiEwLHN0eWxlOlYuYWN0aW9uQnV0dG9uU3R5bGV8fGMsb25DbGljazooWDEpPT57aWYoIW01KFYuYWN0aW9uKSlyZXR1cm47aWYoVi5hY3Rpb24ub25DbGljaz09bnVsbHx8Vi5hY3Rpb24ub25DbGljay5jYWxsKFYuYWN0aW9uLFgxKSxYMS5kZWZhdWx0UHJldmVudGVkKXJldHVybjt5MSgpfSxjbGFzc05hbWU6YjAoeD09bnVsbD92b2lkIDA6eC5hY3Rpb25CdXR0b24sVj09bnVsbD92b2lkIDA6KEI9Vi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6Qi5hY3Rpb25CdXR0b24pfSxWLmFjdGlvbi5sYWJlbCk6bnVsbCl9O2Z1bmN0aW9uIHk2KCl7aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuImx0ciI7aWYodHlwZW9mIGRvY3VtZW50PiJ1IilyZXR1cm4ibHRyIjtsZXQgJD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKTtpZigkPT09ImF1dG8ifHwhJClyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5kaXJlY3Rpb247cmV0dXJuICR9ZnVuY3Rpb24gdkooJCxKKXtsZXQgUT17fTtyZXR1cm5bJCxKXS5mb3JFYWNoKChaLEspPT57bGV0IFk9Sz09PTEscT1ZPyItLW1vYmlsZS1vZmZzZXQiOiItLW9mZnNldCIsRz1ZP0lKOlRKO2Z1bmN0aW9uIE4oQil7WyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5mb3JFYWNoKChMKT0+e1FbYCR7cX0tJHtMfWBdPXR5cGVvZiBCPT09Im51bWJlciI/YCR7Qn1weGA6Qn0pfWlmKHR5cGVvZiBaPT09Im51bWJlciJ8fHR5cGVvZiBaPT09InN0cmluZyIpTihaKTtlbHNlIGlmKHR5cGVvZiBaPT09Im9iamVjdCIpWyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5mb3JFYWNoKChCKT0+e2lmKFpbQl09PT12b2lkIDApUVtgJHtxfS0ke0J9YF09RztlbHNlIFFbYCR7cX0tJHtCfWBdPXR5cGVvZiBaW0JdPT09Im51bWJlciI/YCR7WltCXX1weGA6WltCXX0pO2Vsc2UgTihHKX0pLFF9dmFyIFM2PWYuZm9yd2FyZFJlZihmdW5jdGlvbihKLFEpe2xldHtpZDpaLGludmVydDpLLHBvc2l0aW9uOlk9ImJvdHRvbS1yaWdodCIsaG90a2V5OnE9WyJhbHRLZXkiLCJLZXlUIl0sZXhwYW5kOkcsY2xvc2VCdXR0b246TixjbGFzc05hbWU6QixvZmZzZXQ6TCxtb2JpbGVPZmZzZXQ6Vix0aGVtZTpVPSJsaWdodCIscmljaENvbG9yczp6LGR1cmF0aW9uOmssc3R5bGU6SCx2aXNpYmxlVG9hc3RzOkM9d0osdG9hc3RPcHRpb25zOkYsZGlyOk89eTYoKSxnYXA6ST15SixpY29uczp3LGNvbnRhaW5lckFyaWFMYWJlbDpTPSJOb3RpZmljYXRpb25zIn09SixbaiwkMV09Zi51c2VTdGF0ZShbXSksbT1mLnVzZU1lbW8oKCk9PntpZihaKXJldHVybiBqLmZpbHRlcigoeSk9PnkudG9hc3RlcklkPT09Wik7cmV0dXJuIGouZmlsdGVyKCh5KT0+IXkudG9hc3RlcklkKX0sW2osWl0pLGM9Zi51c2VNZW1vKCgpPT57cmV0dXJuIEFycmF5LmZyb20obmV3IFNldChbWV0uY29uY2F0KG0uZmlsdGVyKCh5KT0+eS5wb3NpdGlvbikubWFwKCh5KT0+eS5wb3NpdGlvbikpKSl9LFttLFldKSxbbixvXT1mLnVzZVN0YXRlKFtdKSxbcixRMV09Zi51c2VTdGF0ZSghMSksW04xLGRdPWYudXNlU3RhdGUoITEpLFt4LGFdPWYudXNlU3RhdGUoVSE9PSJzeXN0ZW0iP1U6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcz8iZGFyayI6ImxpZ2h0IjoibGlnaHQiKSxLMT1mLnVzZVJlZihudWxsKSxMMT1xLmpvaW4oIisiKS5yZXBsYWNlKC9LZXkvZywiIikucmVwbGFjZSgvRGlnaXQvZywiIiksSjE9Zi51c2VSZWYobnVsbCksWTE9Zi51c2VSZWYoITEpLEMxPWYudXNlQ2FsbGJhY2soKHkpPT57JDEoKGcpPT57dmFyIF87aWYoISgoXz1nLmZpbmQoKHApPT5wLmlkPT09eS5pZCkpPT1udWxsP3ZvaWQgMDpfLmRlbGV0ZSkpSzAuZGlzbWlzcyh5LmlkKTtyZXR1cm4gZy5maWx0ZXIoKHtpZDpwfSk9PnAhPT15LmlkKX0pfSxbXSk7cmV0dXJuIGYudXNlRWZmZWN0KCgpPT57cmV0dXJuIEswLnN1YnNjcmliZSgoeSk9PntpZih5LmRpc21pc3Mpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+eyQxKChnKT0+Zy5tYXAoKF8pPT5fLmlkPT09eS5pZD97Li4uXyxkZWxldGU6ITB9Ol8pKX0pO3JldHVybn1zZXRUaW1lb3V0KCgpPT57Zi5mbHVzaFN5bmMoKCk9PnskMSgoZyk9PntsZXQgXz1nLmZpbmRJbmRleCgocCk9PnAuaWQ9PT15LmlkKTtpZihfIT09LTEpcmV0dXJuWy4uLmcuc2xpY2UoMCxfKSx7Li4uZ1tfXSwuLi55fSwuLi5nLnNsaWNlKF8rMSldO3JldHVyblt5LC4uLmddfSl9KX0pfSl9LFtqXSksZi51c2VFZmZlY3QoKCk9PntpZihVIT09InN5c3RlbSIpe2EoVSk7cmV0dXJufWlmKFU9PT0ic3lzdGVtIilpZih3aW5kb3cubWF0Y2hNZWRpYSYmd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKS5tYXRjaGVzKWEoImRhcmsiKTtlbHNlIGEoImxpZ2h0Iik7aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuO2xldCB5PXdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIik7dHJ5e3kuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoe21hdGNoZXM6Z30pPT57aWYoZylhKCJkYXJrIik7ZWxzZSBhKCJsaWdodCIpfSl9Y2F0Y2goZyl7eS5hZGRMaXN0ZW5lcigoe21hdGNoZXM6X30pPT57dHJ5e2lmKF8pYSgiZGFyayIpO2Vsc2UgYSgibGlnaHQiKX1jYXRjaChwKXtjb25zb2xlLmVycm9yKHApfX0pfX0sW1VdKSxmLnVzZUVmZmVjdCgoKT0+e2lmKGoubGVuZ3RoPD0xKVExKCExKX0sW2pdKSxmLnVzZUVmZmVjdCgoKT0+e2xldCB5PShnKT0+e3ZhciBfO2lmKHEuZXZlcnkoKHYpPT5nW3ZdfHxnLmNvZGU9PT12KSl7dmFyIHU7UTEoITApLCh1PUsxLmN1cnJlbnQpPT1udWxsfHx1LmZvY3VzKCl9aWYoZy5jb2RlPT09IkVzY2FwZSImJihkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09SzEuY3VycmVudHx8KChfPUsxLmN1cnJlbnQpPT1udWxsP3ZvaWQgMDpfLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSkpUTEoITEpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIseSksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHkpfSxbcV0pLGYudXNlRWZmZWN0KCgpPT57aWYoSzEuY3VycmVudClyZXR1cm4oKT0+e2lmKEoxLmN1cnJlbnQpSjEuY3VycmVudC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLEoxLmN1cnJlbnQ9bnVsbCxZMS5jdXJyZW50PSExfX0sW0sxLmN1cnJlbnRdKSxmLmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iLHtyZWY6USwiYXJpYS1sYWJlbCI6YCR7U30gJHtMMX1gLHRhYkluZGV4Oi0xLCJhcmlhLWxpdmUiOiJwb2xpdGUiLCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIHRleHQiLCJhcmlhLWF0b21pYyI6ImZhbHNlIixzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6ITB9LGMubWFwKCh5LGcpPT57dmFyIF87bGV0W3AsdV09eS5zcGxpdCgiLSIpO2lmKCFtLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gZi5jcmVhdGVFbGVtZW50KCJvbCIse2tleTp5LGRpcjpPPT09ImF1dG8iP3k2KCk6Tyx0YWJJbmRleDotMSxyZWY6SzEsY2xhc3NOYW1lOkIsImRhdGEtc29ubmVyLXRvYXN0ZXIiOiEwLCJkYXRhLXNvbm5lci10aGVtZSI6eCwiZGF0YS15LXBvc2l0aW9uIjpwLCJkYXRhLXgtcG9zaXRpb24iOnUsc3R5bGU6eyItLWZyb250LXRvYXN0LWhlaWdodCI6YCR7KChfPW5bMF0pPT1udWxsP3ZvaWQgMDpfLmhlaWdodCl8fDB9cHhgLCItLXdpZHRoIjpgJHtFSn1weGAsIi0tZ2FwIjpgJHtJfXB4YCwuLi5ILC4uLnZKKEwsVil9LG9uQmx1cjoodik9PntpZihZMS5jdXJyZW50JiYhdi5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKHYucmVsYXRlZFRhcmdldCkpe2lmKFkxLmN1cnJlbnQ9ITEsSjEuY3VycmVudClKMS5jdXJyZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksSjEuY3VycmVudD1udWxsfX0sb25Gb2N1czoodik9PntpZih2LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZ2LnRhcmdldC5kYXRhc2V0LmRpc21pc3NpYmxlPT09ImZhbHNlIilyZXR1cm47aWYoIVkxLmN1cnJlbnQpWTEuY3VycmVudD0hMCxKMS5jdXJyZW50PXYucmVsYXRlZFRhcmdldH0sb25Nb3VzZUVudGVyOigpPT5RMSghMCksb25Nb3VzZU1vdmU6KCk9PlExKCEwKSxvbk1vdXNlTGVhdmU6KCk9PntpZighTjEpUTEoITEpfSxvbkRyYWdFbmQ6KCk9PlExKCExKSxvblBvaW50ZXJEb3duOih2KT0+e2lmKHYudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJnYudGFyZ2V0LmRhdGFzZXQuZGlzbWlzc2libGU9PT0iZmFsc2UiKXJldHVybjtkKCEwKX0sb25Qb2ludGVyVXA6KCk9PmQoITEpfSxtLmZpbHRlcigodik9PiF2LnBvc2l0aW9uJiZnPT09MHx8di5wb3NpdGlvbj09PXkpLm1hcCgodixHMSk9Pnt2YXIgejEsQTE7cmV0dXJuIGYuY3JlYXRlRWxlbWVudChqSix7a2V5OnYuaWQsaWNvbnM6dyxpbmRleDpHMSx0b2FzdDp2LGRlZmF1bHRSaWNoQ29sb3JzOnosZHVyYXRpb246KHoxPUY9PW51bGw/dm9pZCAwOkYuZHVyYXRpb24pIT1udWxsP3oxOmssY2xhc3NOYW1lOkY9PW51bGw/dm9pZCAwOkYuY2xhc3NOYW1lLGRlc2NyaXB0aW9uQ2xhc3NOYW1lOkY9PW51bGw/dm9pZCAwOkYuZGVzY3JpcHRpb25DbGFzc05hbWUsaW52ZXJ0OkssdmlzaWJsZVRvYXN0czpDLGNsb3NlQnV0dG9uOihBMT1GPT1udWxsP3ZvaWQgMDpGLmNsb3NlQnV0dG9uKSE9bnVsbD9BMTpOLGludGVyYWN0aW5nOk4xLHBvc2l0aW9uOnksc3R5bGU6Rj09bnVsbD92b2lkIDA6Ri5zdHlsZSx1bnN0eWxlZDpGPT1udWxsP3ZvaWQgMDpGLnVuc3R5bGVkLGNsYXNzTmFtZXM6Rj09bnVsbD92b2lkIDA6Ri5jbGFzc05hbWVzLGNhbmNlbEJ1dHRvblN0eWxlOkY9PW51bGw/dm9pZCAwOkYuY2FuY2VsQnV0dG9uU3R5bGUsYWN0aW9uQnV0dG9uU3R5bGU6Rj09bnVsbD92b2lkIDA6Ri5hY3Rpb25CdXR0b25TdHlsZSxjbG9zZUJ1dHRvbkFyaWFMYWJlbDpGPT1udWxsP3ZvaWQgMDpGLmNsb3NlQnV0dG9uQXJpYUxhYmVsLHJlbW92ZVRvYXN0OkMxLHRvYXN0czptLmZpbHRlcigoVzEpPT5XMS5wb3NpdGlvbj09di5wb3NpdGlvbiksaGVpZ2h0czpuLmZpbHRlcigoVzEpPT5XMS5wb3NpdGlvbj09di5wb3NpdGlvbiksc2V0SGVpZ2h0czpvLGV4cGFuZEJ5RGVmYXVsdDpHLGdhcDpJLGV4cGFuZGVkOnIsc3dpcGVEaXJlY3Rpb25zOkouc3dpcGVEaXJlY3Rpb25zfSl9KSl9KSl9KTtmdW5jdGlvbiB4Nigpe3JldHVybiBYKFM2LHt0aGVtZToiZGFyayIscG9zaXRpb246ImJvdHRvbS1jZW50ZXIiLHZpc2libGVUb2FzdHM6NCxnYXA6OCxvZmZzZXQ6e2JvdHRvbToyNH0sdG9hc3RPcHRpb25zOnt1bnN0eWxlZDohMH0sc3R5bGU6e3pJbmRleDoyMTQ3NDgzNjQ3fSxjb250YWluZXJBcmlhTGFiZWw6InNlcnZlLXNpbSBub3RpZmljYXRpb25zIn0pfWZ1bmN0aW9uIGo2KHt0b2FzdDokfSl7bGV0IEo9JC5zdGF0dXM9PT0iZXJyb3IiLFE9JC5zdGF0dXM9PT0idXBsb2FkaW5nIixaPVEmJiQucHJvZ3Jlc3MhPT1udWxsLEs9JC5wcm9ncmVzcyE9bnVsbD9NYXRoLnJvdW5kKCQucHJvZ3Jlc3MqMTAwKTowO3JldHVybiBYKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJ1cGxvYWQtdG9hc3QiLGNsYXNzTmFtZTpgZmxleCB3LVttaW4oMzIwcHgsY2FsYygxMDB2dy0zMnB4KSldIGZsZXgtY29sIGdhcC0xLjUgcHgtMyBweS0yIGJnLXBhbmVsIGJvcmRlciBib3JkZXItd2hpdGUvMTIgcm91bmRlZC1sZyB0ZXh0LXdoaXRlLzkwIHRleHQtWzEycHhdIGZvbnQtbW9ubyBzaGFkb3ctWzBfOHB4XzI0cHhfcmdiYSgwLDAsMCwwLjQ1KV0gJHtKPyJzZWxlY3QtdGV4dCBjdXJzb3ItdGV4dCI6InNlbGVjdC1ub25lIGN1cnNvci1kZWZhdWx0In1gLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIG1pbi13LTAiLGNoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJzaXplLTEuNSByb3VuZGVkLWZ1bGwgc2hyaW5rLTAgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjNzXSIsc3R5bGU6e2JhY2tncm91bmQ6UT8iI2E1YjRmYyI6JC5zdGF0dXM9PT0ic3VjY2VzcyI/IiM0YWRlODAiOiIjZjg3MTcxIn19KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4LTEgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAiLGNoaWxkcmVuOltRJiZaJiZgVXBsb2FkaW5nICR7JC5uYW1lfeKApiAke0t9JWAsUSYmIVomJigkLmtpbmQ9PT0iaXBhIj9gSW5zdGFsbGluZyAkeyQubmFtZX3igKZgOmBBZGRpbmcgJHskLm5hbWV94oCmYCksJC5zdGF0dXM9PT0ic3VjY2VzcyImJigkLmtpbmQ9PT0iaXBhIj9gSW5zdGFsbGVkICR7JC5uYW1lfWA6YEFkZGVkICR7JC5uYW1lfSB0byBQaG90b3NgKSxKJiZgJHskLm5hbWV9OiAkeyQubWVzc2FnZT8/IlVwbG9hZCBmYWlsZWQifWBdfSldfSksUSYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSBoLVszcHhdIHctZnVsbCBiZy13aGl0ZS84IHJvdW5kZWQtWzJweF0gb3ZlcmZsb3ctaGlkZGVuIixjaGlsZHJlbjpaP1goImRpdiIse2NsYXNzTmFtZToiaC1mdWxsIGJnLWFjY2VudCByb3VuZGVkLVsycHhdIFt0cmFuc2l0aW9uOndpZHRoXzEyMG1zX2xpbmVhcl0iLHN0eWxlOnt3aWR0aDpgJHtLfSVgfX0pOlgoImRpdiIse2NsYXNzTmFtZToic2VydmUtc2ltLXRvYXN0LWluZGV0ZXJtaW5hdGUgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGgtZnVsbCB3LVs0MCVdIGJnLWFjY2VudCByb3VuZGVkLVsycHhdIn0pfSldfSl9ZnVuY3Rpb24gdjYoe3dpZHRoOiQsaGVpZ2h0OkosdmlzaWJsZTpRfSl7cmV0dXJuIFgoImRpdiIseyJhcmlhLWhpZGRlbiI6InRydWUiLGNsYXNzTmFtZToiYWJzb2x1dGUgcmlnaHQtMyBib3R0b20tMyB6LTIwIHBvaW50ZXItZXZlbnRzLW5vbmUgc2VsZWN0LW5vbmUgcm91bmRlZC1sZyBweC0yLjUgcHktMSB0ZXh0LVsxMS41cHhdIGZvbnQtbW9ubyBsZWFkaW5nLW5vbmUgdHJhY2tpbmctd2lkZSB0ZXh0LXdoaXRlLzk1IGJnLXBhbmVsLWJnLXRyYW5zbHVjZW50IHNoYWRvdy1bMF8xcHhfMnB4X3JnYmEoMCwwLDAsMC4xOCksMF82cHhfMThweF9yZ2JhKDAsMCwwLDAuMjgpLGluc2V0XzBfMF8wXzFweF9yZ2JhKDI1NSwyNTUsMjU1LDAuMDYpXSBiYWNrZHJvcC1ibHVyLW1kIGJhY2tkcm9wLXNhdHVyYXRlLTE1MCB3aGl0ZXNwYWNlLW5vd3JhcCIsc3R5bGU6e29wYWNpdHk6UT8xOjAsdHJhbnNmb3JtOmB0cmFuc2xhdGVZKCR7UT8wOjR9cHgpIHNjYWxlKCR7UT8xOjAuOTZ9KWAsdHJhbnNmb3JtT3JpZ2luOiIxMDAlIDEwMCUiLHRyYW5zaXRpb246Im9wYWNpdHkgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgdHJhbnNmb3JtIDIyMG1zIGN1YmljLWJlemllcigwLjIsIDAuODIsIDAuMjIsIDEpIn0sY2hpbGRyZW46W01hdGgucm91bmQoJCksIiAiLFgoInNwYW4iLHtjbGFzc05hbWU6Im9wYWNpdHktNjAgbXgtMC41IixjaGlsZHJlbjoiw5cifSksIiAiLE1hdGgucm91bmQoSildfSl9ZnVuY3Rpb24gUjYoe3N0cmVhbWluZzokfSl7bGV0IEo9JD8iIzRhZGU4MCI6IiM4ZThlOTMiO3JldHVybiBYKCJzcGFuIix7ImRhdGEtdGVzdGlkIjoic3RyZWFtLXN0YXR1cy1waWxsIixjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtWzVweF0gdGV4dC1bMTJweF0gZm9udC1tb25vIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSB3aGl0ZXNwYWNlLW5vd3JhcCIsc3R5bGU6e2NvbG9yOkp9LCJhcmlhLWxpdmUiOiJwb2xpdGUiLGNoaWxkcmVuOltYKCJzcGFuIix7ImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2xhc3NOYW1lOiJzaXplLTEuNSByb3VuZGVkLWZ1bGwgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjE4c19lYXNlXSIsc3R5bGU6e2JhY2tncm91bmQ6Sn19KSwkPyJsaXZlIjoiY29ubmVjdGluZyJdfSl9ZnVuY3Rpb24gUkooJCxKLFEpe2xldCBaPVEubGF0Kk1hdGguUEkvMTgwLEs9KCQtUS5sYXQpKk1hdGguUEkvMTgwO3JldHVybnt4OihKLVEubG5nKSpNYXRoLlBJLzE4MCpNYXRoLmNvcyhaKSo2MzcxMDAwLHo6LUsqNjM3MTAwMH19ZnVuY3Rpb24gaEooJCxKLFEpe2xldCBaPVEubGF0Kk1hdGguUEkvMTgwLEs9LUovNjM3MTAwMCooMTgwL01hdGguUEkpLFk9JC8oNjM3MTAwMCpNYXRoLmNvcyhaKSkqKDE4MC9NYXRoLlBJKTtyZXR1cm57bGF0OlEubGF0K0ssbG5nOlEubG5nK1l9fWZ1bmN0aW9uIGdKKCQsSixRLFosSyl7bGV0IFk9SypLLHE9WSpLLEc9KE4sQixMLFYpPT4wLjUqKDIqQisoLU4rTCkqSysoMipOLTUqQis0KkwtVikqWSsoLU4rMypCLTMqTCtWKSpxKTtyZXR1cm57eDpHKCQueCxKLngsUS54LFoueCksejpHKCQueixKLnosUS56LFoueikseTpHKCQueSxKLnksUS55LFoueSkscmF3QWx0OkcoJC5yYXdBbHQsSi5yYXdBbHQsUS5yYXdBbHQsWi5yYXdBbHQpfX1mdW5jdGlvbiBmSigkLEosUSl7aWYoJC5sZW5ndGg8MilyZXR1cm4gJC5zbGljZSgpO2xldCBaPVtdLEs9JC5sZW5ndGgsWT1RP0s6Sy0xO2ZvcihsZXQgcT0wO3E8WTtxKyspe2xldCBHPSRbUT8ocS0xK0spJUs6TWF0aC5tYXgoMCxxLTEpXSxOPSRbcSVLXSxCPSRbKHErMSklS10sTD0kW1E/KHErMiklSzpNYXRoLm1pbihLLTEscSsyKV0sVj1CLngtTi54LFU9Qi56LU4ueix6PU1hdGguaHlwb3QoVixVKSxrPU1hdGgubWF4KDIsTWF0aC5jZWlsKHovSikpO2ZvcihsZXQgSD0wO0g8aztIKyspe2xldCBDPUgvaztaLnB1c2goZ0ooRyxOLEIsTCxDKSl9fWlmKCFRKVoucHVzaCgkW0stMV0pO3JldHVybiBafWZ1bmN0aW9uIGg2KCQpe2lmKCQud2F5cG9pbnRzLmxlbmd0aDwyKXRocm93IEVycm9yKGBUcmFpbCAkeyQuaWR9IG5lZWRzIGF0IGxlYXN0IDIgd2F5cG9pbnRzYCk7bGV0IEo9e2xhdDokLndheXBvaW50cy5yZWR1Y2UoKEgsQyk9PkgrQy5sYXQsMCkvJC53YXlwb2ludHMubGVuZ3RoLGxuZzokLndheXBvaW50cy5yZWR1Y2UoKEgsQyk9PkgrQy5sbmcsMCkvJC53YXlwb2ludHMubGVuZ3RofSxRPSQud2F5cG9pbnRzLm1hcCgoSCk9PkguYWx0Pz8wKSxaPU1hdGgubWluKC4uLlEpLEs9TWF0aC5tYXgoLi4uUSksWT0kLndheXBvaW50cy5tYXAoKEgpPT57bGV0e3g6Qyx6OkZ9PVJKKEgubGF0LEgubG5nLEopLE89SC5hbHQ/PzA7cmV0dXJue3g6Qyx6OkYseTpPLVoscmF3QWx0Ok99fSkscT1mSihZLDgsISEkLmxvb3ApLEc9W10sTj0wO2ZvcihsZXQgSD0wO0g8cS5sZW5ndGg7SCsrKXtsZXQgQz1xW0hdO2lmKEg+MCl7bGV0IHc9cVtILTFdO04rPU1hdGguaHlwb3QoQy54LXcueCxDLnotdy56LEMueS13LnkpfWxldHtsYXQ6Rixsbmc6T309aEooQy54LEMueixKKSxJPU1hdGgubWF4KDAsQy55KTtHLnB1c2goe3g6Qy54LHo6Qy56LHk6SSxhcmM6TixsYXQ6Rixsbmc6T30pfWxldCBCPTEvMCxMPS0xLzAsVj0xLzAsVT0tMS8wLHo9MS8wLGs9LTEvMDtmb3IobGV0IEggb2YgRyl7aWYoSC54PEIpQj1ILng7aWYoSC54PkwpTD1ILng7aWYoSC56PFYpVj1ILno7aWYoSC56PlUpVT1ILno7aWYoSC55PHopej1ILnk7aWYoSC55Pmspaz1ILnl9cmV0dXJue3RyYWlsOiQsb3JpZ2luOkoscG9pbnRzOkcsdG90YWxEaXN0YW5jZTpHW0cubGVuZ3RoLTFdLmFyYyxib3VuZHM6e3g6W0IsTF0seTpbeixrXSx6OltWLFVdfSxyYXdNaW5BbHQ6WixyYXdNYXhBbHQ6S319ZnVuY3Rpb24gczAoJCxKKXtsZXQgUT0kLnRvdGFsRGlzdGFuY2U7aWYoUT09PTApcmV0dXJuICQucG9pbnRzWzBdO2xldCBaPUo7aWYoJC50cmFpbC5sb29wKVo9KFolUStRKSVRO2Vsc2V7aWYoWjw9MClyZXR1cm4gJC5wb2ludHNbMF07aWYoWj49USlyZXR1cm4gJC5wb2ludHNbJC5wb2ludHMubGVuZ3RoLTFdfWxldCBLPTAsWT0kLnBvaW50cy5sZW5ndGgtMTt3aGlsZShLKzE8WSl7bGV0IEw9SytZPj4+MTtpZigkLnBvaW50c1tMXS5hcmM8PVopSz1MO2Vsc2UgWT1MfWxldCBxPSQucG9pbnRzW0tdLEc9JC5wb2ludHNbWV0sTj1HLmFyYy1xLmFyYyxCPU49PT0wPzA6KFotcS5hcmMpL047cmV0dXJue3g6cS54KyhHLngtcS54KSpCLHo6cS56KyhHLnotcS56KSpCLHk6cS55KyhHLnktcS55KSpCLGFyYzpaLGxhdDpxLmxhdCsoRy5sYXQtcS5sYXQpKkIsbG5nOnEubG5nKyhHLmxuZy1xLmxuZykqQn19ZnVuY3Rpb24gYzMoJCl7c3dpdGNoKCQpe2Nhc2Uid2FsayI6cmV0dXJuIDEuNDtjYXNlInJ1biI6cmV0dXJuIDM7Y2FzZSJjeWNsZSI6cmV0dXJuIDUuNTtjYXNlImRyaXZlIjpyZXR1cm4gMTMuNH19dmFyIG1KPVt7bGF0OjM3LjMzMjcyLGxuZzotMTIyLjAwODMzLGFsdDo0OX0se2xhdDozNy4zMzMwOSxsbmc6LTEyMi4wMDczNSxhbHQ6NDh9LHtsYXQ6MzcuMzMzNzMsbG5nOi0xMjIuMDA2NjMsYWx0OjQ5fSx7bGF0OjM3LjMzNDU0LGxuZzotMTIyLjAwNjI3LGFsdDo0OX0se2xhdDozNy4zMzU0LGxuZzotMTIyLjAwNjMzLGFsdDo0OX0se2xhdDozNy4zMzYxOCxsbmc6LTEyMi4wMDY3OSxhbHQ6NDV9LHtsYXQ6MzcuMzM2NzUsbG5nOi0xMjIuMDA3NTksYWx0OjQ1fSx7bGF0OjM3LjMzNzA0LGxuZzotMTIyLjAwODYxLGFsdDo0Nn0se2xhdDozNy4zMzY5OCxsbmc6LTEyMi4wMDk2OSxhbHQ6NDh9LHtsYXQ6MzcuMzM2NjIsbG5nOi0xMjIuMDEwNjYsYWx0OjQ4fSx7bGF0OjM3LjMzNTk4LGxuZzotMTIyLjAxMTM4LGFsdDo0OX0se2xhdDozNy4zMzUxNyxsbmc6LTEyMi4wMTE3NCxhbHQ6NTB9LHtsYXQ6MzcuMzM0MzEsbG5nOi0xMjIuMDExNjksYWx0OjUwfSx7bGF0OjM3LjMzMzU0LGxuZzotMTIyLjAxMTIyLGFsdDo1MH0se2xhdDozNy4zMzI5Nixsbmc6LTEyMi4wMTA0MixhbHQ6NTF9LHtsYXQ6MzcuMzMyNjgsbG5nOi0xMjIuMDA5NCxhbHQ6NTB9XSxwSj1be2xhdDozNy44MzIxMixsbmc6LTEyMi40ODA2NSxhbHQ6MzB9LHtsYXQ6MzcuODI5MzcsbG5nOi0xMjIuNDc5NzQsYWx0OjMwfSx7bGF0OjM3LjgyNjQ5LGxuZzotMTIyLjQ3OTQsYWx0OjMwfSx7bGF0OjM3LjgyMzYyLGxuZzotMTIyLjQ3OTA3LGFsdDo0NX0se2xhdDozNy44MjA3NCxsbmc6LTEyMi40Nzg3MyxhbHQ6NTl9LHtsYXQ6MzcuODE3ODYsbG5nOi0xMjIuNDc4MzksYWx0OjY2fSx7bGF0OjM3LjgxNDk4LGxuZzotMTIyLjQ3ODA2LGFsdDo2Nn0se2xhdDozNy44MTIxMSxsbmc6LTEyMi40Nzc3MixhbHQ6NTh9LHtsYXQ6MzcuODA5MjMsbG5nOi0xMjIuNDc3MzQsYWx0OjQ0fSx7bGF0OjM3LjgwOTQ5LGxuZzotMTIyLjQ3NzMsYWx0OjQ1fSx7bGF0OjM3LjgxMjM2LGxuZzotMTIyLjQ3NzY1LGFsdDo1OX0se2xhdDozNy44MTUyNCxsbmc6LTEyMi40Nzc5OCxhbHQ6NjZ9LHtsYXQ6MzcuODE4MTIsbG5nOi0xMjIuNDc4MzIsYWx0OjY2fSx7bGF0OjM3LjgyMSxsbmc6LTEyMi40Nzg2NixhbHQ6NTh9LHtsYXQ6MzcuODIzODcsbG5nOi0xMjIuNDc5LGFsdDo0NH0se2xhdDozNy44MjY3NSxsbmc6LTEyMi40NzkzMyxhbHQ6MzB9LHtsYXQ6MzcuODI5NjMsbG5nOi0xMjIuNDc5NjcsYWx0OjMwfSx7bGF0OjM3LjgzMjMzLGxuZzotMTIyLjQ4MDcyLGFsdDozMH1dLHVKPVt7bGF0OjM3Ljg4NjY0LGxuZzotMTIyLjYyNTk5LGFsdDoxMjF9LHtsYXQ6MzcuODg4ODcsbG5nOi0xMjIuNjIzMzIsYWx0OjEzNX0se2xhdDozNy44OTExNSxsbmc6LTEyMi42MjE2LGFsdDoxNjR9LHtsYXQ6MzcuODkzNTMsbG5nOi0xMjIuNjE5MjEsYWx0OjE4MH0se2xhdDozNy44OTQ2Nixsbmc6LTEyMi42MTU3NyxhbHQ6MjIwfSx7bGF0OjM3Ljg5NjMxLGxuZzotMTIyLjYxMjY4LGFsdDoyNzN9LHtsYXQ6MzcuODk5MTcsbG5nOi0xMjIuNjEwOTgsYWx0OjMxM30se2xhdDozNy45MDE2Nixsbmc6LTEyMi42MDg1NSxhbHQ6MzQyfSx7bGF0OjM3LjkwMTk5LGxuZzotMTIyLjYwNjAxLGFsdDo0MDh9LHtsYXQ6MzcuOTAzMzksbG5nOi0xMjIuNjA0MDEsYWx0OjQ1MH0se2xhdDozNy45MDY2Mixsbmc6LTEyMi42MDI5MSxhbHQ6NDQwfSx7bGF0OjM3LjkwOTcxLGxuZzotMTIyLjYwMTczLGFsdDo0MzJ9LHtsYXQ6MzcuOTEyMTMsbG5nOi0xMjIuNjAwMDcsYWx0OjQzNn0se2xhdDozNy45MTQzOSxsbmc6LTEyMi41OTc4LGFsdDo0MTB9LHtsYXQ6MzcuOTEyODUsbG5nOi0xMjIuNTk1MDQsYWx0OjQyMn0se2xhdDozNy45MTI3NCxsbmc6LTEyMi41OTIwMixhbHQ6NDI1fSx7bGF0OjM3LjkxNSxsbmc6LTEyMi41OTAzMixhbHQ6NDEyfSx7bGF0OjM3LjkxNjM3LGxuZzotMTIyLjU4OTAzLGFsdDo0MDZ9LHtsYXQ6MzcuOTE0ODEsbG5nOi0xMjIuNTg1OTUsYWx0OjM4Mn0se2xhdDozNy45MTc0LGxuZzotMTIyLjU4Mzk4LGFsdDozNzJ9LHtsYXQ6MzcuOTE2NDIsbG5nOi0xMjIuNTgyMzYsYWx0OjM1Mn0se2xhdDozNy45MTQ4MSxsbmc6LTEyMi41ODAxMSxhbHQ6MzQyfV0sbEo9W3tsYXQ6NDAuNzgyMTYsbG5nOi03My45NjI1NCxhbHQ6Mzd9LHtsYXQ6NDAuNzgyMjEsbG5nOi03My45NjA5OCxhbHQ6MzZ9LHtsYXQ6NDAuNzgzMjgsbG5nOi03My45NjAxLGFsdDozNn0se2xhdDo0MC43ODQ0LGxuZzotNzMuOTU5MyxhbHQ6MzZ9LHtsYXQ6NDAuNzg1NSxsbmc6LTczLjk1ODQ4LGFsdDozNn0se2xhdDo0MC43ODY2NCxsbmc6LTczLjk1Nzc0LGFsdDozNn0se2xhdDo0MC43ODc5LGxuZzotNzMuOTU3NjQsYWx0OjM2fSx7bGF0OjQwLjc4ODk4LGxuZzotNzMuOTU3OTIsYWx0OjM2fSx7bGF0OjQwLjc4ODY4LGxuZzotNzMuOTU5NTEsYWx0OjM3fSx7bGF0OjQwLjc4ODk3LGxuZzotNzMuOTYxMTIsYWx0OjM2fSx7bGF0OjQwLjc4ODMzLGxuZzotNzMuOTYyNSxhbHQ6Mzd9LHtsYXQ6NDAuNzg4MjgsbG5nOi03My45NjQxNixhbHQ6Mzd9LHtsYXQ6NDAuNzg4MDUsbG5nOi03My45NjU3MyxhbHQ6MzZ9LHtsYXQ6NDAuNzg2OTEsbG5nOi03My45NjYzNixhbHQ6MzZ9LHtsYXQ6NDAuNzg1NjYsbG5nOi03My45NjY2NSxhbHQ6MzZ9LHtsYXQ6NDAuNzg0NTgsbG5nOi03My45NjYwOCxhbHQ6MzZ9LHtsYXQ6NDAuNzg0MDIsbG5nOi03My45NjQ1OSxhbHQ6MzZ9LHtsYXQ6NDAuNzgzMjIsbG5nOi03My45NjMzNCxhbHQ6Mzd9XSxkSj1be2xhdDozNy41OTY1OSxsbmc6LTEyMi41MDMxNixhbHQ6NH0se2xhdDozNy41OTU1NSxsbmc6LTEyMi41MDQyNCxhbHQ6NH0se2xhdDozNy41OTQ1Mixsbmc6LTEyMi41MDUzNCxhbHQ6NX0se2xhdDozNy41OTMyOSxsbmc6LTEyMi41MDU4OCxhbHQ6OX0se2xhdDozNy41OTIxMixsbmc6LTEyMi41MDUwOCxhbHQ6MjB9LHtsYXQ6MzcuNTkxLGxuZzotMTIyLjUwNDEzLGFsdDoyOX0se2xhdDozNy41ODk3NCxsbmc6LTEyMi41MDQxNixhbHQ6NDB9LHtsYXQ6MzcuNTg4Nyxsbmc6LTEyMi41MDUyNCxhbHQ6NTF9LHtsYXQ6MzcuNTg3NDUsbG5nOi0xMjIuNTA0OTYsYWx0OjYwfSx7bGF0OjM3LjU4NjI3LGxuZzotMTIyLjUwNDIyLGFsdDo3MX0se2xhdDozNy41ODUzOSxsbmc6LTEyMi41MDUzNCxhbHQ6ODJ9LHtsYXQ6MzcuNTg1MDUsbG5nOi0xMjIuNTA2OTgsYWx0OjkzfSx7bGF0OjM3LjU4NTM5LGxuZzotMTIyLjUwNTM0LGFsdDo4Mn0se2xhdDozNy41ODYyNyxsbmc6LTEyMi41MDQyMixhbHQ6NzF9LHtsYXQ6MzcuNTg3NDUsbG5nOi0xMjIuNTA0OTYsYWx0OjYwfSx7bGF0OjM3LjU4ODcsbG5nOi0xMjIuNTA1MjQsYWx0OjUxfSx7bGF0OjM3LjU4OTc0LGxuZzotMTIyLjUwNDE2LGFsdDo0MH0se2xhdDozNy41OTEsbG5nOi0xMjIuNTA0MTMsYWx0OjI5fSx7bGF0OjM3LjU5MjEyLGxuZzotMTIyLjUwNTA4LGFsdDoyMH0se2xhdDozNy41OTMyOSxsbmc6LTEyMi41MDU4OCxhbHQ6OX0se2xhdDozNy41OTQ1Mixsbmc6LTEyMi41MDUzNCxhbHQ6NX0se2xhdDozNy41OTU1NSxsbmc6LTEyMi41MDQyNCxhbHQ6NH1dLHQwPVt7aWQ6ImFwcGxlLXBhcmstbG9vcCIsbmFtZToiQXBwbGUgUGFyayBMb29wIixkZXNjcmlwdGlvbjoiQ3VwZXJ0aW5vIOKAoiBmbGF0IHJpbmcgcm9hZCIsbW9kZToid2FsayIsd2F5cG9pbnRzOm1KLGxvb3A6ITB9LHtpZDoiZ29sZGVuLWdhdGUiLG5hbWU6IkdvbGRlbiBHYXRlIENyb3NzaW5nIixkZXNjcmlwdGlvbjoiU2FuIEZyYW5jaXNjbyDigKIgYnJpZGdlIHJvdW5kLXRyaXAiLG1vZGU6InJ1biIsd2F5cG9pbnRzOnBKLGxvb3A6ITB9LHtpZDoidGFtLXJpZGdlIixuYW1lOiJNdC4gVGFtIFJpZGdlIixkZXNjcmlwdGlvbjoiU3RpbnNvbiBCZWFjaCDigKIgU3RlZXAgUmF2aW5lICsgTWF0dCBEYXZpcyBsb29wIixtb2RlOiJ3YWxrIix3YXlwb2ludHM6dUosbG9vcDohMH0se2lkOiJjZW50cmFsLXBhcmsiLG5hbWU6IlJlc2Vydm9pciBMb29wIixkZXNjcmlwdGlvbjoiQ2VudHJhbCBQYXJrIOKAoiAyLjUga20iLG1vZGU6InJ1biIsd2F5cG9pbnRzOmxKLGxvb3A6ITB9LHtpZDoicGNoLXBhY2lmaWNhIixuYW1lOiJQYWNpZmljIENvYXN0IEh3eSIsZGVzY3JpcHRpb246IlBhY2lmaWNhIOKAoiBEZXZpbCdzIFNsaWRlIHJvdW5kLXRyaXAiLG1vZGU6ImRyaXZlIix3YXlwb2ludHM6ZEosbG9vcDohMH1dO2Z1bmN0aW9uIGUxKHtvcGVuOiQsb25PcGVuQ2hhbmdlOkosc3VtbWFyeTpRLGNoaWxkcmVuOlosc3VtbWFyeUNsYXNzTmFtZTpLPSIiLGJvZHlDbGFzc05hbWU6WT0iZmxleCBmbGV4LWNvbCBnYXAtMi41IHB0LTIuNSIsY2xhc3NOYW1lOnE9IiIsLi4uR30pe3JldHVybiBYKCJkZXRhaWxzIix7b3BlbjokLG9uVG9nZ2xlOihOKT0+SihOLmN1cnJlbnRUYXJnZXQub3BlbiksY2xhc3NOYW1lOmBsZW0tc2VjdGlvbiBiZy1wYW5lbCByb3VuZGVkLVsxMHB4XSBweC0zIHB5LTIgJHtxfWAsLi4uRyxjaGlsZHJlbjpbWCgic3VtbWFyeSIse2NsYXNzTmFtZTpgbGVtLXRvZ2dsZSBjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZSB0ZXh0LXdoaXRlLzkwIG1pbi1oLVszNnB4XSBsZWFkaW5nLW5vbmUgcHktMi41IHB4LTEgLW15LTIgLW14LTEgdy1bY2FsYygxMDAlKzhweCldICR7S31gLGNoaWxkcmVuOltRLFgobTIse29wZW46JH0pXX0pLFgoImRpdiIse2NsYXNzTmFtZTpZLGNoaWxkcmVuOlp9KV19KX1mdW5jdGlvbiBwNSh7bGFiZWw6JCx2YWx1ZTpKLG9wdGlvbnM6USxkaXNhYmxlZDpaLG9uQ2hhbmdlOkssY2xhc3NOYW1lOll9KXtsZXRbcSxHXT1BKCExKSxOPVQobnVsbCksQj1UKG51bGwpLFtMLFZdPUEobnVsbCksVT0oKT0+e2xldCBDPU4uY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIUMpcmV0dXJuO1Yoe3RvcDpDLmJvdHRvbSs0LGxlZnQ6Qy5sZWZ0LG1pbldpZHRoOkMud2lkdGh9KX07VDAoKCk9PntpZihxKVUoKX0sW3FdKSxUMCgoKT0+e2lmKCFxfHwhTClyZXR1cm47bGV0IEM9Qi5jdXJyZW50O2lmKCFDKXJldHVybjtsZXQgRj04LE89d2luZG93LmlubmVyV2lkdGgtQy5vZmZzZXRXaWR0aC1GO2lmKEwubGVmdD5PKVYoey4uLkwsbGVmdDpNYXRoLm1heChGLE8pfSl9LFtxLExdKSxiKCgpPT57aWYoIXEpcmV0dXJuO2xldCBDPSgpPT5HKCExKSxGPShJKT0+e2xldCB3PUkudGFyZ2V0O2lmKCFCLmN1cnJlbnQ/LmNvbnRhaW5zKHcpJiYhTi5jdXJyZW50Py5jb250YWlucyh3KSlDKCl9LE89KEkpPT57aWYoIUIuY3VycmVudD8uY29udGFpbnMoSS50YXJnZXQpKVUoKX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLEYpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLE8sITApLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLEMpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsRiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsTywhMCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsQyl9fSxbcV0pO2xldCB6PVQoITEpO2IoKCk9PntpZighcSl7ei5jdXJyZW50PSExO3JldHVybn1pZighTHx8ei5jdXJyZW50KXJldHVybjtsZXQgQz1CLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoIltyb2xlPW9wdGlvbl0iKTtpZighQz8ubGVuZ3RoKXJldHVybjt6LmN1cnJlbnQ9ITA7bGV0IEY9US5maW5kSW5kZXgoKE8pPT5PLnZhbHVlPT09Sik7Q1tNYXRoLm1heChGLDApXT8uZm9jdXMoKX0sW3EsTCxRLEpdKTtsZXQgaz0oQyk9PntsZXQgRj1bLi4uQi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yQWxsKCJbcm9sZT1vcHRpb25dIik/P1tdXSxPPUYuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtpZihDLmtleT09PSJBcnJvd0Rvd24ifHxDLmtleT09PSJBcnJvd1VwIil7Qy5wcmV2ZW50RGVmYXVsdCgpO2xldCBJPUMua2V5PT09IkFycm93RG93biI/TWF0aC5taW4oTysxLEYubGVuZ3RoLTEpOk1hdGgubWF4KE8tMSwwKTtGW0ldPy5mb2N1cygpfWVsc2UgaWYoQy5rZXk9PT0iRXNjYXBlIilDLnByZXZlbnREZWZhdWx0KCksRyghMSksTi5jdXJyZW50Py5mb2N1cygpfSxIPVEuZmluZCgoQyk9PkMudmFsdWU9PT1KKTtyZXR1cm4gWChaMSx7Y2hpbGRyZW46W1goImJ1dHRvbiIse3JlZjpOLHR5cGU6ImJ1dHRvbiIsImFyaWEtbGFiZWwiOiQsImFyaWEtaGFzcG9wdXAiOiJsaXN0Ym94IiwiYXJpYS1leHBhbmRlZCI6cSxkaXNhYmxlZDpaLG9uQ2xpY2s6KCk9PkcoKEMpPT4hQyksY2xhc3NOYW1lOmB0ZXh0LWxlZnQgZm9udC1baW5oZXJpdF0gY3Vyc29yLXBvaW50ZXIgZGlzYWJsZWQ6Y3Vyc29yLWRlZmF1bHQgJHtZPz8iIn1gLGNoaWxkcmVuOlgoInNwYW4iLHtjbGFzc05hbWU6ImJsb2NrIHRydW5jYXRlIixjaGlsZHJlbjpIPy5sYWJlbD8/Sn0pfSkscSYmTCYmejMoWCgiZGl2Iix7cmVmOkIscm9sZToibGlzdGJveCIsImFyaWEtbGFiZWwiOiQsb25LZXlEb3duOmssc3R5bGU6e3RvcDpMLnRvcCxsZWZ0OkwubGVmdCxtaW5XaWR0aDpMLm1pbldpZHRofSxjbGFzc05hbWU6ImZpeGVkIG1heC1oLTkwIG92ZXJmbG93LXktYXV0byBiZy1wYW5lbCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHJvdW5kZWQtWzEwcHhdIHAtMSBzaGFkb3ctWzBfOHB4XzI0cHhfcmdiYSgwLDAsMCwwLjUpXSB0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlLzkwIHotNTAiLGNoaWxkcmVuOlEubWFwKChDKT0+WCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixyb2xlOiJvcHRpb24iLCJhcmlhLXNlbGVjdGVkIjpDLnZhbHVlPT09SixvbkNsaWNrOigpPT57SyhDLnZhbHVlKSxHKCExKSxOLmN1cnJlbnQ/LmZvY3VzKCl9LGNsYXNzTmFtZTpgYmxvY2sgdy1mdWxsIHRleHQtbGVmdCBmb250LVtpbmhlcml0XSBweC0yLjUgcHktMSByb3VuZGVkLW1kIGN1cnNvci1wb2ludGVyIHdoaXRlc3BhY2Utbm93cmFwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLXdoaXRlLzggZm9jdXMtdmlzaWJsZTpiZy13aGl0ZS84IG91dGxpbmUtbm9uZSAke0MudmFsdWU9PT1KPyJ0ZXh0LWFjY2VudCI6IiJ9YCxjaGlsZHJlbjpDLmxhYmVsfSxDLnZhbHVlKSl9KSxkb2N1bWVudC5ib2R5KV19KX12YXIgY0o9NjUwLG8zPVsxLDIsNSwyMF0sZzY9MTAwMCxyMz17c3RhdHVzOiJpZGxlIixhcmM6MCxlbGFwc2VkTXM6MH07ZnVuY3Rpb24gZDYoe3VkaWQ6JCxleGVjOkp9KXtsZXRbUSxaXT1BKCExKSxbSyxZXT1BKHQwWzBdLmlkKSxbcSxHXT1BKHQwWzBdLm1vZGUpLFtOLEJdPUEoMSksW0wsVl09QShyMyksW1Usel09QShudWxsKSxrPVQxKCgpPT50MC5maW5kKChkKT0+ZC5pZD09PUspPz90MFswXSxbS10pLEg9VDEoKCk9Pmg2KGspLFtrXSksQz1UKDApLEY9VCgiaWRsZSIpLE89VChjMyhxKSpOKSxJPVQoMCksdz1UKEgpLFM9VChudWxsKTtiKCgpPT57Ty5jdXJyZW50PWMzKHEpKk59LFtxLE5dKTtsZXQgaj1UKG51bGwpO2IoKCk9PntsZXQgZD13LmN1cnJlbnQseD1DLmN1cnJlbnQ7aWYody5jdXJyZW50PUgsZCYmZCE9PUgpai5jdXJyZW50PWlKKGQseCxILHBlcmZvcm1hbmNlLm5vdygpKTtDLmN1cnJlbnQ9MCxJLmN1cnJlbnQ9MCxGLmN1cnJlbnQ9ImlkbGUiLFMuY3VycmVudD1udWxsLFYocjMpfSxbSF0pO2xldCAkMT1UKDApLG09VChudWxsKSxjPVQobnVsbCk7YigoKT0+e2xldCBkPTAseD0oYSk9PntsZXQgSzE9bS5jdXJyZW50LEwxPUsxPT1udWxsPzE2Ok1hdGgubWluKDY0LGEtSzEpO2lmKG0uY3VycmVudD1hLCQxLmN1cnJlbnQ9KCQxLmN1cnJlbnQrTDEqMC4wMDAxMiklKE1hdGguUEkqMiksRi5jdXJyZW50PT09InBsYXlpbmciKXtsZXQgWTE9Ty5jdXJyZW50KkwxLzEwMDA7Qy5jdXJyZW50Kz1ZMSxJLmN1cnJlbnQrPUwxO2xldCBDMT13LmN1cnJlbnQudG90YWxEaXN0YW5jZTtpZighdy5jdXJyZW50LnRyYWlsLmxvb3AmJkMuY3VycmVudD49QzEpQy5jdXJyZW50PUMxLEYuY3VycmVudD0icGF1c2VkIixWKHtzdGF0dXM6InBhdXNlZCIsYXJjOkMxLGVsYXBzZWRNczpJLmN1cnJlbnR9KX1sZXQgSjE9Yy5jdXJyZW50O2lmKEoxKXtsZXQgWTE9dy5jdXJyZW50LEMxPW51bGwseT1qLmN1cnJlbnQ7aWYoeSl7bGV0IGc9KGEteS5zdGFydE1zKS9jSjtpZihnPj0xKWouY3VycmVudD1udWxsO2Vsc2V7bGV0IF89c0ooZyk7WTE9bkooeSxfKSxDMT17eDp5LnByZXZNYXJrZXIueCsoeS5uZXh0TWFya2VyLngteS5wcmV2TWFya2VyLngpKl8seTp5LnByZXZNYXJrZXIueSsoeS5uZXh0TWFya2VyLnkteS5wcmV2TWFya2VyLnkpKl8sejp5LnByZXZNYXJrZXIueisoeS5uZXh0TWFya2VyLnoteS5wcmV2TWFya2VyLnopKl99fX10SihKMSxZMSxDLmN1cnJlbnQsJDEuY3VycmVudCxhLEYuY3VycmVudD09PSJwbGF5aW5nIixDMSl9ZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoeCl9O3JldHVybiBkPXJlcXVlc3RBbmltYXRpb25GcmFtZSh4KSwoKT0+Y2FuY2VsQW5pbWF0aW9uRnJhbWUoZCl9LFtdKSxiKCgpPT57bGV0IGQ9c2V0SW50ZXJ2YWwoKCk9PntpZihGLmN1cnJlbnQ9PT0icGxheWluZyIpVih7c3RhdHVzOiJwbGF5aW5nIixhcmM6Qy5jdXJyZW50LGVsYXBzZWRNczpJLmN1cnJlbnR9KX0sMjUwKTtyZXR1cm4oKT0+Y2xlYXJJbnRlcnZhbChkKX0sW10pLGIoKCk9PntpZihMLnN0YXR1cyE9PSJwbGF5aW5nIilyZXR1cm47bGV0IGQ9ITEseD0wLGE9bnVsbCxLMT1hc3luYygpPT57aWYoZHx8YSlyZXR1cm47bGV0IEoxPURhdGUubm93KCk7aWYoSjEteDxnNilyZXR1cm47eD1KMTtsZXQgWTE9czAody5jdXJyZW50LEMuY3VycmVudCksQzE9YHhjcnVuIHNpbWN0bCBsb2NhdGlvbiAkeyR9IHNldCAke1kxLmxhdC50b0ZpeGVkKDcpfSwke1kxLmxuZy50b0ZpeGVkKDcpfWA7YT1KKEMxKS50aGVuKCh5KT0+e2lmKGQpcmV0dXJuO2lmKHkuZXhpdENvZGUhPT0wKXoobDYoeS5zdGRlcnIpfHwic2ltY3RsIGxvY2F0aW9uIHNldCBmYWlsZWQiKTtlbHNlIHoobnVsbCl9KS5jYXRjaCgoeSk9PntpZighZCl6KHkgaW5zdGFuY2VvZiBFcnJvcj95Lm1lc3NhZ2U6U3RyaW5nKHkpKX0pLmZpbmFsbHkoKCk9PnthPW51bGx9KX07SzEoKTtsZXQgTDE9c2V0SW50ZXJ2YWwoSzEsZzYpO3JldHVybigpPT57ZD0hMCxjbGVhckludGVydmFsKEwxKX19LFtMLnN0YXR1cywkLEpdKTtsZXQgbj1EKCgpPT57aWYoRi5jdXJyZW50PT09InBsYXlpbmciKXtGLmN1cnJlbnQ9InBhdXNlZCIsVigoZCk9Pih7Li4uZCxzdGF0dXM6InBhdXNlZCJ9KSk7cmV0dXJufWlmKEMuY3VycmVudD49dy5jdXJyZW50LnRvdGFsRGlzdGFuY2UmJiF3LmN1cnJlbnQudHJhaWwubG9vcClDLmN1cnJlbnQ9MCxJLmN1cnJlbnQ9MDtpZihTLmN1cnJlbnQ9PW51bGwpe2xldCBkPXMwKHcuY3VycmVudCxDLmN1cnJlbnQpO1MuY3VycmVudD17bGF0OmQubGF0LGxuZzpkLmxuZ319Ri5jdXJyZW50PSJwbGF5aW5nIixWKChkKT0+KHsuLi5kLHN0YXR1czoicGxheWluZyIsYXJjOkMuY3VycmVudCxlbGFwc2VkTXM6SS5jdXJyZW50fSkpfSxbXSksbz1EKCgpPT57Ri5jdXJyZW50PSJpZGxlIixDLmN1cnJlbnQ9MCxJLmN1cnJlbnQ9MCxWKHIzKTtsZXQgZD1TLmN1cnJlbnQ7Uy5jdXJyZW50PW51bGw7bGV0IHg9ZD9geGNydW4gc2ltY3RsIGxvY2F0aW9uICR7JH0gc2V0ICR7ZC5sYXQudG9GaXhlZCg3KX0sJHtkLmxuZy50b0ZpeGVkKDcpfWA6YHhjcnVuIHNpbWN0bCBsb2NhdGlvbiAkeyR9IGNsZWFyYDtKKHgpLnRoZW4oKGEpPT57aWYoYS5leGl0Q29kZSE9PTApeihsNihhLnN0ZGVycil8fG51bGwpO2Vsc2UgeihudWxsKX0pfSxbSiwkXSkscj1EKChkKT0+e1koZCk7bGV0IHg9dDAuZmluZCgoYSk9PmEuaWQ9PT1kKTtpZih4KUcoeC5tb2RlKX0sW10pO2IoKCk9PigpPT57aWYoRi5jdXJyZW50PT09ImlkbGUiKXJldHVybjtsZXQgZD1TLmN1cnJlbnQseD1kP2B4Y3J1biBzaW1jdGwgbG9jYXRpb24gJHskfSBzZXQgJHtkLmxhdC50b0ZpeGVkKDcpfSwke2QubG5nLnRvRml4ZWQoNyl9YDpgeGNydW4gc2ltY3RsIGxvY2F0aW9uICR7JH0gY2xlYXJgO0ooeCkuY2F0Y2goKCk9Pnt9KX0sW0osJF0pO2xldCBRMT1MLnN0YXR1cz09PSJwbGF5aW5nIixOMT1RMT9gJHthMyhMLmFyYyl9IMK3ICR7cDYoTC5lbGFwc2VkTXMpfWA6YTMoSC50b3RhbERpc3RhbmNlKTtyZXR1cm4gWChlMSx7b3BlbjpRLG9uT3BlbkNoYW5nZTpaLHN1bW1hcnlDbGFzc05hbWU6ImdyaWQgW2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvX21pbm1heCgwLDFmcilfYXV0b10gW2NvbnRhaW5lci10eXBlOmlubGluZS1zaXplXSBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1sZWZ0IixzdW1tYXJ5OlgoWjEse2NoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIGxlYWRpbmctbm9uZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOiJMb2NhdGlvbiJ9KSxRP1goInNwYW4iLHsiZGF0YS1sb2NhdGlvbi1zdGF0dXMiOiEwLGNsYXNzTmFtZToibWluLXctMCB0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzU1IGZvbnQtbW9ubyBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBqdXN0aWZ5LXNlbGYtZW5kIGxlYWRpbmctbm9uZSB3aGl0ZXNwYWNlLW5vd3JhcCBvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpcyBtYXgtdy1mdWxsIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToic2l6ZS0xLjUgcm91bmRlZC1mdWxsIHNocmluay0wIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4ycyxib3gtc2hhZG93XzAuMnNdIixzdHlsZTp7YmFja2dyb3VuZDpRMT8iIzRhZGU4MCI6SC50b3RhbERpc3RhbmNlPjA/InJnYmEoMjU1LDI1NSwyNTUsMC4zKSI6InRyYW5zcGFyZW50Iixib3hTaGFkb3c6UTE/IjAgMCA2cHggcmdiYSg3NCwyMjIsMTI4LDAuNykiOiJub25lIn19KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJtaW4tdy0wIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIixjaGlsZHJlbjpOMX0pLCFRMSYmWCgic3BhbiIseyJkYXRhLWxvY2F0aW9uLXN0YXR1cy10b3RhbCI6ITAsY2xhc3NOYW1lOiJzaHJpbmstMCIsY2hpbGRyZW46InRvdGFsIn0pXX0pOlgoInNwYW4iLHt9KV19KSxjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0xIixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSBibG9jayIsY2hpbGRyZW46W1gocDUse2xhYmVsOiJUcmFpbCIsdmFsdWU6SyxvbkNoYW5nZTpyLG9wdGlvbnM6dDAubWFwKChkKT0+KHt2YWx1ZTpkLmlkLGxhYmVsOmQubmFtZX0pKSxjbGFzc05hbWU6ImJnLXdoaXRlL1swLjA0XSBib3JkZXIgYm9yZGVyLXdoaXRlLzggcm91bmRlZC1tZCB0ZXh0LXdoaXRlLzkwIHRleHQtWzEycHhdIHB5LTEuNSBwci1bMjZweF0gcGwtMiB3LWZ1bGwgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjEycyxib3JkZXItY29sb3JfMC4xMnNdIGhvdmVyOmJnLXdoaXRlL1swLjA3XSBob3Zlcjpib3JkZXItW3JnYmEoMjU1LDI1NSwyNTUsMC4xNildIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpiZy13aGl0ZS9bMC4wOF0gZm9jdXM6Ym9yZGVyLVtyZ2JhKDI1NSwyNTUsMjU1LDAuMjQpXSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSByaWdodC1bOXB4XSB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgcG9pbnRlci1ldmVudHMtbm9uZSBmbGV4IGl0ZW1zLWNlbnRlciIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WChtMix7b3BlbjohMX0pfSldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMHB4XSB0ZXh0LXdoaXRlLzQ1IixjaGlsZHJlbjprLmRlc2NyaXB0aW9ufSldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSB3LWZ1bGwgcm91bmRlZC1bMTBweF0gb3ZlcmZsb3ctaGlkZGVuIGJnLVsjMGEwYTBjXSBib3JkZXIgYm9yZGVyLXdoaXRlL1swLjA2XSBbYXNwZWN0LXJhdGlvOjE2LzExXSIsY2hpbGRyZW46W1goImNhbnZhcyIse3JlZjpjLGNsYXNzTmFtZToidy1mdWxsIGgtZnVsbCBibG9jayJ9KSxYKHJKLHtwcmVwYXJlZDpIfSldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyXzFmcl8xZnJdIGdhcC0xLjUiLGNoaWxkcmVuOltYKGkzLHtsYWJlbDoiRGlzdGFuY2UiLHZhbHVlOmEzKEwuYXJjKX0pLFgoaTMse2xhYmVsOiJQYWNlIix2YWx1ZTokUShPLmN1cnJlbnQpfSksWChpMyx7bGFiZWw6IkVsYXBzZWQiLHZhbHVlOnA2KEwuZWxhcHNlZE1zKX0pXX0pLFgoImRpdiIse2NsYXNzTmFtZToiZmxleCBnYXAtMS41IixjaGlsZHJlbjpbWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOm4sY2xhc3NOYW1lOmBmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEuNSBweS0yIHB4LTIuNSBib3JkZXItbm9uZSByb3VuZGVkLVs3cHhdIHRleHQtWzEycHhdIGZvbnQtc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgZm9udC1baW5oZXJpdF0gJHtRMT8iYmctd2hpdGUvWzAuMTZdIHRleHQtd2hpdGUgZW5hYmxlZDpob3ZlcjpiZy13aGl0ZS9bMC4yMl0iOiJiZy1zdWNjZXNzLWVtZXJhbGQgdGV4dC1bIzA2MjAxOF0gZW5hYmxlZDpob3ZlcjpicmlnaHRuZXNzLVsxLjA4XSJ9YCwiYXJpYS1wcmVzc2VkIjpRMSx0aXRsZTpRMT8iUGF1c2UiOiJQbGF5IixjaGlsZHJlbjpbUTE/WChEMyx7fSk6WChwMix7fSksWCgic3BhbiIse2NoaWxkcmVuOlExPyJQYXVzZSI6IlBsYXkifSldfSksWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOm8sY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMS41IHB5LTIgcHgtMyBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHJvdW5kZWQtWzdweF0gdGV4dC1bMTJweF0gZm9udC1tZWRpdW0gYmctdHJhbnNwYXJlbnQgdGV4dC13aGl0ZS84NSBjdXJzb3ItcG9pbnRlciBmb250LVtpbmhlcml0XSBlbmFibGVkOmhvdmVyOmJnLXdoaXRlL1swLjA2XSBlbmFibGVkOmhvdmVyOmJvcmRlci13aGl0ZS8yMCBlbmFibGVkOmhvdmVyOnRleHQtd2hpdGUgZGlzYWJsZWQ6b3BhY2l0eS00MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQiLGRpc2FibGVkOkwuc3RhdHVzPT09ImlkbGUiJiZMLmFyYz09PTAsdGl0bGU6IlN0b3AgYW5kIGNsZWFyIHNpbXVsYXRlZCBsb2NhdGlvbiIsY2hpbGRyZW46W1godTIse30pLFgoInNwYW4iLHtjaGlsZHJlbjoiU3RvcCJ9KV19KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1yb3cgaXRlbXMtc3RyZXRjaCBnYXAtMS41IixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4LTEgbWluLXctMCIsY2hpbGRyZW46WChvSix7YXJpYUxhYmVsOiJUcmFuc3BvcnQgbW9kZSIsdmFsdWU6cSxvbkNoYW5nZTooZCk9PkcoZCksb3B0aW9uczpbe3ZhbHVlOiJ3YWxrIixsYWJlbDoiV2FsayIsaWNvbjpYKFQzLHt9KX0se3ZhbHVlOiJydW4iLGxhYmVsOiJSdW4iLGljb246WChJMyx7fSl9LHt2YWx1ZToiY3ljbGUiLGxhYmVsOiJDeWNsZSIsaWNvbjpYKEUzLHt9KX0se3ZhbHVlOiJkcml2ZSIsbGFiZWw6IkRyaXZlIixpY29uOlgoeTMse30pfV19KX0pLFgoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+e2xldCBkPW8zLmluZGV4T2YoTikseD1vM1soZCsxKSVvMy5sZW5ndGhdO0IoeCl9LGNsYXNzTmFtZTpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEgcHgtMi41IGJvcmRlciByb3VuZGVkLVs3cHhdIGN1cnNvci1wb2ludGVyIGZvbnQtW2luaGVyaXRdIHRleHQtWzExcHhdIGZvbnQtc2VtaWJvbGQgbWluLXctWzU2cHhdIGFjdGl2ZTpzY2FsZS1bMC45N10gJHtOPjE/ImJnLXdoaXRlIGJvcmRlci13aGl0ZSB0ZXh0LVsjMGEwYTBjXSBob3ZlcjpiZy13aGl0ZS9bMC44OF0gaG92ZXI6Ym9yZGVyLXdoaXRlL1swLjg4XSBob3Zlcjp0ZXh0LVsjMGEwYTBjXSI6ImJnLXdoaXRlL1swLjA0XSBib3JkZXItd2hpdGUvOCB0ZXh0LXdoaXRlLzg1IGhvdmVyOmJnLXdoaXRlL1swLjA5XSBob3Zlcjpib3JkZXItW3JnYmEoMjU1LDI1NSwyNTUsMC4xOCldIGhvdmVyOnRleHQtd2hpdGUifWAsImFyaWEtbGFiZWwiOmBTcGVlZCAke059w5cg4oCUIHRhcCB0byBjeWNsZWAsdGl0bGU6YFNwZWVkICR7Tn3DlyDigJQgdGFwIHRvIGN5Y2xlYCxjaGlsZHJlbjpbWCh3Myx7fSksTj4xJiZYKCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LW1vbm8gW2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc10iLGNoaWxkcmVuOltOLCLDlyJdfSldfSldfSksVSYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJiZy1kYW5nZXIvMTAgYm9yZGVyIGJvcmRlci1kYW5nZXIvMjAgdGV4dC1kYW5nZXItc29mdCB0ZXh0LVsxMXB4XSBweC0yIHB5LTEuNSByb3VuZGVkLW1kIixjaGlsZHJlbjpVfSldfSl9dmFyIGkzPWMwKGZ1bmN0aW9uKHtsYWJlbDpKLHZhbHVlOlF9KXtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0wLjUgYmctd2hpdGUvWzAuMDNdIGJvcmRlciBib3JkZXItd2hpdGUvWzAuMDZdIHJvdW5kZWQtbWQgcHktWzVweF0gcHgtWzdweF0gbWluLXctMCIsY2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToidGV4dC1bOXB4XSB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMDZlbV0gdGV4dC13aGl0ZS80NSIsY2hpbGRyZW46Sn0pLFgoImRpdiIse2NsYXNzTmFtZToidGV4dC1bMTJweF0gZm9udC1tb25vIHRleHQtd2hpdGUgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAiLGNoaWxkcmVuOlF9KV19KX0pO2Z1bmN0aW9uIG9KKHt2YWx1ZTokLG9uQ2hhbmdlOkosb3B0aW9uczpRLGFyaWFMYWJlbDpafSl7cmV0dXJuIFgoImRpdiIse3JvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbCI6WixjbGFzc05hbWU6ImZsZXggYmctd2hpdGUvWzAuMDRdIGJvcmRlciBib3JkZXItd2hpdGUvOCByb3VuZGVkLVs3cHhdIHAtMC41IGdhcC0wLjUiLGNoaWxkcmVuOlEubWFwKChLKT0+e2xldCBZPUsudmFsdWU9PT0kO3JldHVybiBYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PkooSy52YWx1ZSksY2xhc3NOYW1lOmBmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLW5vbmUgcm91bmRlZC1bNXB4XSBweS1bNXB4XSBweC0yIHRleHQtWzExcHhdIGZvbnQtbWVkaXVtIGN1cnNvci1wb2ludGVyIGZvbnQtW2luaGVyaXRdIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xMnMsY29sb3JfMC4xMnNdIG1pbi1oLVsyMnB4XSAke1k/ImJnLXdoaXRlL1swLjEyXSB0ZXh0LXdoaXRlIjoiYmctdHJhbnNwYXJlbnQgdGV4dC13aGl0ZS82MCBob3ZlcjpiZy13aGl0ZS9bMC4wNV0gaG92ZXI6dGV4dC13aGl0ZS85MCJ9YCwiYXJpYS1wcmVzc2VkIjpZLCJhcmlhLWxhYmVsIjpLLmljb24/Sy5sYWJlbDp2b2lkIDAsdGl0bGU6Sy5pY29uP0subGFiZWw6dm9pZCAwLGNoaWxkcmVuOksuaWNvbj8/Sy5sYWJlbH0sSy52YWx1ZSl9KX0pfWZ1bmN0aW9uIHJKKHtwcmVwYXJlZDokfSl7aWYoJC5yYXdNYXhBbHQtJC5yYXdNaW5BbHQ8NSlyZXR1cm4gbnVsbDtyZXR1cm4gWChaMSx7Y2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgdG9wLTIgbGVmdC0yLjUgYmctcGFuZWwtb3ZlcmxheSB0ZXh0LXdoaXRlLzg1IHRleHQtWzEwcHhdIGZvbnQtbW9ubyBweC0xLjUgcHktMC41IHJvdW5kZWQtWzVweF0gZmxleCBpdGVtcy1jZW50ZXIgdHJhY2tpbmctWzAuMDJlbV0gYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4wNl0iLGNoaWxkcmVuOltYKFA1LHtkaXI6InVwIn0pLCIgIix1NigkLnJhd01heEFsdCldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSB0b3AtMiByaWdodC0yLjUgYmctcGFuZWwtb3ZlcmxheSB0ZXh0LXdoaXRlLzg1IHRleHQtWzEwcHhdIGZvbnQtbW9ubyBweC0xLjUgcHktMC41IHJvdW5kZWQtWzVweF0gZmxleCBpdGVtcy1jZW50ZXIgdHJhY2tpbmctWzAuMDJlbV0gYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4wNl0iLGNoaWxkcmVuOltYKFA1LHtkaXI6ImRvd24ifSksIiAiLHU2KCQucmF3TWluQWx0KV19KV19KX12YXIgZjY9MTQwO2Z1bmN0aW9uIG02KCQsSil7bGV0IFE9QXJyYXkoSik7Zm9yKGxldCBaPTA7WjxKO1orKyl7bGV0IEs9Sj09PTE/MDpaLyhKLTEpLFk9czAoJCxLKiQudG90YWxEaXN0YW5jZSk7UVtaXT17eDpZLngseTpZLnksejpZLnp9fXJldHVybiBRfWZ1bmN0aW9uIGlKKCQsSixRLFope2xldCBLPSgkLmJvdW5kcy54WzBdKyQuYm91bmRzLnhbMV0pLzIsWT0oJC5ib3VuZHMuelswXSskLmJvdW5kcy56WzFdKS8yLHE9JC5ib3VuZHMueVswXSxHPU1hdGgubWF4KDEsJC5ib3VuZHMueFsxXS0kLmJvdW5kcy54WzBdLCQuYm91bmRzLnpbMV0tJC5ib3VuZHMuelswXSksTj0oUS5ib3VuZHMueFswXStRLmJvdW5kcy54WzFdKS8yLEI9KFEuYm91bmRzLnpbMF0rUS5ib3VuZHMuelsxXSkvMixMPVEuYm91bmRzLnlbMF0sVT1NYXRoLm1heCgxLFEuYm91bmRzLnhbMV0tUS5ib3VuZHMueFswXSxRLmJvdW5kcy56WzFdLVEuYm91bmRzLnpbMF0pL0csaz1tNigkLGY2KS5tYXAoKGopPT4oe3g6KGoueC1LKSpVK04seTooai55LXEpKlUrTCx6OihqLnotWSkqVStCfSkpLEg9bTYoUSxmNiksQz0oJC50cmFpbC5sb29wfHxRLnRyYWlsLmxvb3ApPz8hMSxGPWFKKGssSCxDKSxPPXMwKCQsSiksST17eDooTy54LUspKlUrTix5OihPLnktcSkqVStMLHo6KE8uei1ZKSpVK0J9LHc9czAoUSwwKSxTPXt4OncueCx5OncueSx6Oncuen07cmV0dXJue2Zyb206JCx0bzpRLGZyb21QdHM6ayx0b1B0czpGLHByZXZNYXJrZXI6SSxuZXh0TWFya2VyOlMsc3RhcnRNczpafX1mdW5jdGlvbiBhSigkLEosUSl7bGV0IFo9JC5sZW5ndGgsSz0xLzAsWT0wLHE9ITEsRz1bSixbLi4uSl0ucmV2ZXJzZSgpXTtmb3IobGV0IEw9MDtMPEcubGVuZ3RoO0wrKyl7bGV0IFY9R1tMXSxVPVE/WjoxO2ZvcihsZXQgej0wO3o8VTt6Kyspe2xldCBrPTA7Zm9yKGxldCBIPTA7SDxaO0grKyl7bGV0IEM9JFtIXSxGPVZbKEgreiklWl0sTz1DLngtRi54LEk9Qy55LUYueSx3PUMuei1GLno7aWYoays9TypPK0kqSSt3Kncsaz49SylicmVha31pZihrPEspSz1rLFk9eixxPUw9PT0xfX1sZXQgTj1xP1suLi5KXS5yZXZlcnNlKCk6SixCPUFycmF5KFopO2ZvcihsZXQgTD0wO0w8WjtMKyspQltMXT1OWyhMK1kpJVpdO3JldHVybiBCfWZ1bmN0aW9uIG5KKCQsSil7bGV0IFE9JC5mcm9tUHRzLmxlbmd0aCxaPUFycmF5KFEpLEs9MCxZPW51bGwscT0xLzAsRz0tMS8wLE49MS8wLEI9LTEvMCxMPTEvMCxWPS0xLzA7Zm9yKGxldCBVPTA7VTxRO1UrKyl7bGV0IHo9JC5mcm9tUHRzW1VdLGs9JC50b1B0c1tVXSxIPXoueCsoay54LXoueCkqSixDPXoueSsoay55LXoueSkqSixGPXoueisoay56LXoueikqSjtpZihZKXtsZXQgST1ILVkueCx3PUMtWS55LFM9Ri1ZLno7Sys9TWF0aC5zcXJ0KEkqSSt3KncrUypTKX1sZXQgTz17eDpILHk6Qyx6OkYsYXJjOkssbGF0OjAsbG5nOjB9O2lmKFpbVV09TyxZPU8sSDxxKXE9SDtpZihIPkcpRz1IO2lmKEM8TilOPUM7aWYoQz5CKUI9QztpZihGPEwpTD1GO2lmKEY+VilWPUZ9cmV0dXJue3RyYWlsOiQudG8udHJhaWwsb3JpZ2luOiQudG8ub3JpZ2luLHBvaW50czpaLHRvdGFsRGlzdGFuY2U6Syxib3VuZHM6e3g6W3EsR10seTpbTixCXSx6OltMLFZdfSxyYXdNaW5BbHQ6JC50by5yYXdNaW5BbHQrKCQuZnJvbS5yYXdNaW5BbHQtJC50by5yYXdNaW5BbHQpKigxLUopLHJhd01heEFsdDokLnRvLnJhd01heEFsdCsoJC5mcm9tLnJhd01heEFsdC0kLnRvLnJhd01heEFsdCkqKDEtSil9fWZ1bmN0aW9uIHNKKCQpe3JldHVybiAkPDAuNT8yKiQqJDoxLU1hdGgucG93KC0yKiQrMiwyKS8yfWZ1bmN0aW9uIHRKKCQsSixRLFosSyxZLHEpe2xldCBHPSQuZ2V0Q29udGV4dCgiMmQiKTtpZighRylyZXR1cm47bGV0e2NsaWVudFdpZHRoOk4sY2xpZW50SGVpZ2h0OkJ9PSQ7aWYoTj09PTB8fEI9PT0wKXJldHVybjtsZXQgTD10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MToxLFY9TWF0aC5yb3VuZChOKkwpLFU9TWF0aC5yb3VuZChCKkwpO2lmKCQud2lkdGghPT1WfHwkLmhlaWdodCE9PVUpJC53aWR0aD1WLCQuaGVpZ2h0PVU7Ry5zZXRUcmFuc2Zvcm0oTCwwLDAsTCwwLDApLEcuY2xlYXJSZWN0KDAsMCxOLEIpO2xldCB6PUcuY3JlYXRlUmFkaWFsR3JhZGllbnQoTiowLjUsQiowLjU1LE1hdGgubWluKE4sQikqMC4yLE4qMC41LEIqMC41NSxNYXRoLm1heChOLEIpKjAuODUpO3ouYWRkQ29sb3JTdG9wKDAsIiMxYTFhMWQiKSx6LmFkZENvbG9yU3RvcCgxLCIjMGEwYTBjIiksRy5maWxsU3R5bGU9eixHLmZpbGxSZWN0KDAsMCxOLEIpLGVKKEcsTixCKTtsZXR7cG9pbnRzOmssYm91bmRzOkh9PUo7aWYoay5sZW5ndGg8MilyZXR1cm47bGV0IEM9MjgqTWF0aC5QSS8xODAsRj1NYXRoLnNpbihDKSxPPU1hdGguY29zKEMpLEk9TWF0aC5zaW4oWiksdz1NYXRoLmNvcyhaKSxTPShILnhbMF0rSC54WzFdKS8yLGo9KEguelswXStILnpbMV0pLzIsJDE9SC54WzFdLUgueFswXSxtPUguelsxXS1ILnpbMF0sYz1ILnlbMV0tSC55WzBdLG49TWF0aC5tYXgoJDEsbSkqMS4wNSxvPU1hdGgubWF4KG0qTytjKkYsJDEqMC40KSoxLjE1LHI9TiowLjA4LFExPUIqMC4xOCxOMT1NYXRoLm1pbigoTi1yKjIpL24sKEItUTEqMikvbykqMS40NSxkPWM8MT8xOk1hdGgubWluKDI0LDE0MC9NYXRoLm1heCgyMCxjKSkseD0oeSxnLF8pPT57bGV0IHA9eS1TLHU9Xy1qLHY9cCp3K3UqSSxHMT0tcCpJK3Uqdyx6MT1nKmQsQTE9ejEqTy1HMSpGLFcxPXoxKkYrRzEqTztyZXR1cm57c3g6Ti8yK3YqTjEsc3k6QiowLjU1LUExKk4xLGRlcHRoOlcxfX0sYT0zOCxLMT1rLm1hcCgoeSk9PntsZXQgZz14KHkueCx5LnkseS56KSxfPXgoeS54LDAseS56KSxwPXtzeDpnLnN4LHN5Ok1hdGgubWF4KF8uc3ksZy5zeSthKSxkZXB0aDpfLmRlcHRofTtyZXR1cm57cDp5LHRvcDpnLGJvdDpwfX0pO2ZvcihsZXQgeT0xO3k8SzEubGVuZ3RoO3krKyl7bGV0IGc9SzFbeS0xXSxfPUsxW3ldLHA9Ry5jcmVhdGVMaW5lYXJHcmFkaWVudCgoZy50b3Auc3grXy50b3Auc3gpLzIsKGcudG9wLnN5K18udG9wLnN5KS8yLChnLmJvdC5zeCtfLmJvdC5zeCkvMiwoZy5ib3Quc3krXy5ib3Quc3kpLzIpO3AuYWRkQ29sb3JTdG9wKDAsInJnYmEoMjU1LDI1NSwyNTUsMC41NSkiKSxwLmFkZENvbG9yU3RvcCgwLjQ1LCJyZ2JhKDE4MCwxODAsMTg1LDAuMjgpIikscC5hZGRDb2xvclN0b3AoMC44NSwicmdiYSg0MCw0MCw0NSwwLjE4KSIpLHAuYWRkQ29sb3JTdG9wKDEsInJnYmEoMCwwLDAsMCkiKSxHLmZpbGxTdHlsZT1wLEcuYmVnaW5QYXRoKCksRy5tb3ZlVG8oZy50b3Auc3gsZy50b3Auc3kpLEcubGluZVRvKF8udG9wLnN4LF8udG9wLnN5KSxHLmxpbmVUbyhfLmJvdC5zeCxfLmJvdC5zeSksRy5saW5lVG8oZy5ib3Quc3gsZy5ib3Quc3kpLEcuY2xvc2VQYXRoKCksRy5maWxsKCl9Ry5zdHJva2VTdHlsZT0iI2ZmZmZmZiIsRy5saW5lV2lkdGg9MS42LEcubGluZUNhcD0icm91bmQiLEcubGluZUpvaW49InJvdW5kIixHLmJlZ2luUGF0aCgpO2ZvcihsZXQgeT0wO3k8SzEubGVuZ3RoO3krKyl7bGV0e3RvcDpnfT1LMVt5XTtpZih5PT09MClHLm1vdmVUbyhnLnN4LGcuc3kpO2Vsc2UgRy5saW5lVG8oZy5zeCxnLnN5KX1HLnN0cm9rZSgpO2xldCBMMT1RO0cuc3Ryb2tlU3R5bGU9IiNmOWQyYTQiLEcubGluZVdpZHRoPTIuMixHLmJlZ2luUGF0aCgpO2xldCBKMT0hMTtmb3IobGV0IHk9MDt5PEsxLmxlbmd0aDt5Kyspe2xldHtwOmcsdG9wOl99PUsxW3ldO2lmKGcuYXJjPkwxKWJyZWFrO2lmKCFKMSlHLm1vdmVUbyhfLnN4LF8uc3kpLEoxPSEwO2Vsc2UgRy5saW5lVG8oXy5zeCxfLnN5KX1pZihKMSlHLnN0cm9rZSgpO2xldCBZMT1xPz9zMChKLFEpLEMxPXgoWTEueCxZMS55LFkxLnopO2lmKFkpe2xldCBfPUslMjYwMC8yNjAwLHA9NCsyMipfLHU9MC4yMiooMS1fKSx2PUcuY3JlYXRlUmFkaWFsR3JhZGllbnQoQzEuc3gsQzEuc3kscCowLjUsQzEuc3gsQzEuc3kscCk7di5hZGRDb2xvclN0b3AoMCwicmdiYSgyNTUsMjU1LDI1NSwwKSIpLHYuYWRkQ29sb3JTdG9wKDAuNyxgcmdiYSgyNTUsMjU1LDI1NSwke3UudG9GaXhlZCgzKX0pYCksdi5hZGRDb2xvclN0b3AoMSwicmdiYSgyNTUsMjU1LDI1NSwwKSIpLEcuZmlsbFN0eWxlPXYsRy5iZWdpblBhdGgoKSxHLmFyYyhDMS5zeCxDMS5zeSxwLDAsTWF0aC5QSSoyKSxHLmZpbGwoKX1HLmZpbGxTdHlsZT0iI2ZmZiIsRy5iZWdpblBhdGgoKSxHLmFyYyhDMS5zeCxDMS5zeSwzLjgsMCxNYXRoLlBJKjIpLEcuZmlsbCgpfWZ1bmN0aW9uIGVKKCQsSixRKXskLmZpbGxTdHlsZT0icmdiYSgyNTUsMjU1LDI1NSwwLjA2KSI7Zm9yKGxldCBZPTc7WTxRO1krPTE0KWZvcihsZXQgcT03O3E8SjtxKz0xNCkkLmJlZ2luUGF0aCgpLCQuYXJjKHEsWSwwLjcsMCxNYXRoLlBJKjIpLCQuZmlsbCgpfWZ1bmN0aW9uIGEzKCQpe2lmKCQ8MTAwMClyZXR1cm5gJHskLnRvRml4ZWQoMCl9IG1gO3JldHVybmAkeygkLzEwMDApLnRvRml4ZWQoMil9IGttYH1mdW5jdGlvbiBwNigkKXtsZXQgSj1NYXRoLmZsb29yKCQvMTAwMCksUT1NYXRoLmZsb29yKEovMzYwMCksWj1NYXRoLmZsb29yKEolMzYwMC82MCksSz1KJTYwO2lmKFE+MClyZXR1cm5gJHtRfToke1oudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7Sy50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gO3JldHVybmAke1p9OiR7Sy50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gfWZ1bmN0aW9uICRRKCQpe2lmKCQ8PTApcmV0dXJuIuKAlCI7aWYoJD43KXJldHVybmAkeygkKjMuNikudG9GaXhlZCgwKX0ga20vaGA7bGV0IEo9MTAwMC8kLFE9TWF0aC5mbG9vcihKLzYwKSxaPU1hdGgucm91bmQoSiU2MCk7cmV0dXJuYCR7UX06JHtaLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS9rbWB9ZnVuY3Rpb24gdTYoJCl7cmV0dXJuYCR7JC50b0ZpeGVkKDApfSBtYH1mdW5jdGlvbiBsNigkKXtsZXQgSj0kLnRyaW0oKTtpZighSilyZXR1cm4iIjtsZXQgUT1KLm1hdGNoKC9SZWFzb246XHMqKC4rKSQvbSk7aWYoUSlyZXR1cm4gUVsxXTtyZXR1cm4gSi5zcGxpdChgCmApLnNsaWNlKC0xKVswXT8/Sn1hc3luYyBmdW5jdGlvbiBuMygkLEosUSl7bGV0IFo9YXdhaXQgJChgeGNydW4gc2ltY3RsIGdldF9hcHBfY29udGFpbmVyICR7Sn0gJHtNMShRKX0gYXBwYCk7aWYoWi5leGl0Q29kZSE9PTApcmV0dXJue2Vycm9yOlouc3RkZXJyLnRyaW0oKXx8IkFwcCBub3QgZm91bmQgb24gc2ltdWxhdG9yIn07bGV0IEs9Wi5zdGRvdXQudHJpbSgpO2lmKCFLKXJldHVybntlcnJvcjoiRW1wdHkgYXBwIHBhdGgifTtsZXQgWT1hd2FpdCAkKGBwbHV0aWwgLWNvbnZlcnQganNvbiAtbyAtICR7TTEoSysiL0luZm8ucGxpc3QiKX1gKSxxPXt9O2lmKFkuZXhpdENvZGU9PT0wKXRyeXtxPUpTT04ucGFyc2UoWS5zdGRvdXQpfWNhdGNoe31sZXQgRyxCPShxPy5DRkJ1bmRsZUljb25zPy5DRkJ1bmRsZVByaW1hcnlJY29uPz9xPy5bIkNGQnVuZGxlSWNvbnN+aXBhZCJdPy5DRkJ1bmRsZVByaW1hcnlJY29uKT8uQ0ZCdW5kbGVJY29uRmlsZXM/P3E/LkNGQnVuZGxlSWNvbkZpbGVzO2lmKEImJkIubGVuZ3RoPjApRz1CW0IubGVuZ3RoLTFdO2Vsc2UgaWYodHlwZW9mIHE/LkNGQnVuZGxlSWNvbkZpbGU9PT0ic3RyaW5nIilHPXEuQ0ZCdW5kbGVJY29uRmlsZTtsZXQgTD1udWxsO2lmKEcpe2xldCBWPVtgJHtHfUAzeC5wbmdgLGAke0d9QDJ4LnBuZ2AsYCR7R30ucG5nYCxgJHtHfTYweDYwQDN4LnBuZ2AsYCR7R302MHg2MEAyeC5wbmdgXSx6PShhd2FpdCAkKGBiYXNoIC1jICR7TTEoVi5tYXAoKGspPT5gWyAtZiAke00xKEsrIi8iK2spfSBdICYmIGVjaG8gJHtNMShLKyIvIitrKX0gJiYgZXhpdCAwYCkuam9pbigiOyAiKSsiOyBleGl0IDEiKX1gKSkuc3Rkb3V0LnRyaW0oKTtpZih6KXtsZXQgaz1hd2FpdCAkKGBiYXNlNjQgLWkgJHtNMSh6KX1gKTtpZihrLmV4aXRDb2RlPT09MClMPWBkYXRhOmltYWdlL3BuZztiYXNlNjQsJHtrLnN0ZG91dC5yZXBsYWNlKC9ccysvZywiIil9YH19cmV0dXJue2FwcFBhdGg6SyxkaXNwbGF5TmFtZTpxLkNGQnVuZGxlRGlzcGxheU5hbWU/P3EuQ0ZCdW5kbGVOYW1lLHNob3J0VmVyc2lvbjpxLkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nLGJ1bmRsZVZlcnNpb246cS5DRkJ1bmRsZVZlcnNpb24sbWluT1M6cS5NaW5pbXVtT1NWZXJzaW9uLGV4ZWN1dGFibGU6cS5DRkJ1bmRsZUV4ZWN1dGFibGUsaWNvbkRhdGFVcmw6TH19dmFyIEgyPW5ldyBNYXA7ZnVuY3Rpb24gYzYoJCxKLFEpe2xldCBaPWAke0p9OiR7UX1gLEs9SDIuZ2V0KFopO2lmKEshPT12b2lkIDApcmV0dXJuIFByb21pc2UucmVzb2x2ZShLKTtsZXQgWT1uMygkLEosUSkudGhlbigocSk9PntsZXQgRz1xLmljb25EYXRhVXJsPz9udWxsO3JldHVybiBIMi5zZXQoWixHKSxHfSkuY2F0Y2goKCk9PntyZXR1cm4gSDIuc2V0KFosbnVsbCksbnVsbH0pO3JldHVybiBIMi5zZXQoWixZKSxZfWZ1bmN0aW9uIEpRKCQpe3JldHVybiAkLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS4iKX1mdW5jdGlvbiBRUSgkKXtpZigkPT09ImNvbS5hcHBsZS5zcHJpbmdib2FyZCIpcmV0dXJuIlNwcmluZ0JvYXJkIjtyZXR1cm4gJH1mdW5jdGlvbiBaUSh7YnVuZGxlSWQ6JH0pe2xldCBKPUpRKCQpO3JldHVybiBYKCJkaXYiLHsiZGF0YS10ZXN0aWQiOko/InN5c3RlbS1hcHAtaWNvbiI6ImFwcC1pY29uLWZhbGxiYWNrIixjbGFzc05hbWU6YHctMTAgaC0xMCByb3VuZGVkLVs4cHhdIHNocmluay0wIGJvcmRlciBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciAke0o/ImJvcmRlci1bIzNiNWY5OV0gYmctW2xpbmVhci1ncmFkaWVudCgxNDVkZWcsIzI1M2E1ZiwjMTYyMTMyKV0gdGV4dC1bI2M4ZDdmZl0iOiJib3JkZXItd2hpdGUvMTAgYmctd2hpdGUvWzAuMDZdIHRleHQtd2hpdGUvODAifWAsImFyaWEtbGFiZWwiOko/IlN5c3RlbSBhcHAiOiJBcHAgaWNvbiB1bmF2YWlsYWJsZSIsdGl0bGU6Sj8iU3lzdGVtIGFwcCI6IkFwcCBpY29uIHVuYXZhaWxhYmxlIixjaGlsZHJlbjpKP1goInN2ZyIse3JvbGU6ImltZyIsdmlld0JveDoiMCAwIDI0IDI0Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNsYXNzTmFtZToic2l6ZS1bMTlweF0iLGZpbGw6ImN1cnJlbnRDb2xvciIsY2hpbGRyZW46W1goInRpdGxlIix7Y2hpbGRyZW46IkFwcGxlIn0pLFgoInBhdGgiLHtkOiJNMTIuMTUyIDYuODk2Yy0uOTQ4IDAtMi40MTUtMS4wNzgtMy45Ni0xLjA0LTIuMDQuMDI3LTMuOTEgMS4xODMtNC45NjEgMy4wMTQtMi4xMTcgMy42NzUtLjU0NiA5LjEwMyAxLjUxOSAxMi4wOSAxLjAxMyAxLjQ1NCAyLjIwOCAzLjA5IDMuNzkyIDMuMDM5IDEuNTItLjA2NSAyLjA5LS45ODcgMy45MzUtLjk4NyAxLjgzMSAwIDIuMzUuOTg3IDMuOTYuOTQ4IDEuNjM3LS4wMjYgMi42NzYtMS40OCAzLjY3Ni0yLjk0OCAxLjE1Ni0xLjY4OCAxLjYzNi0zLjMyNSAxLjY2Mi0zLjQxNS0uMDM5LS4wMTMtMy4xODItMS4yMjEtMy4yMi00Ljg1Ny0uMDI2LTMuMDQgMi40OC00LjQ5NCAyLjU5Ny00LjU1OS0xLjQyOS0yLjA5LTMuNjIzLTIuMzI0LTQuMzktMi4zNzYtMi0uMTU2LTMuNjc1IDEuMDktNC42MSAxLjA5ek0xNS41MyAzLjgzYy44NDMtMS4wMTIgMS40LTIuNDI3IDEuMjQ1LTMuODMtMS4yMDcuMDUyLTIuNjYyLjgwNS0zLjUzMiAxLjgxOC0uNzguODk2LTEuNDU0IDIuMzM4LTEuMjczIDMuNzE0IDEuMzM4LjEwNCAyLjcxNS0uNjg4IDMuNTU5LTEuNzAxIn0pXX0pOlgoVDIse3NpemU6MTksc3Ryb2tlV2lkdGg6MS45fSl9KX1mdW5jdGlvbiBYUSh7YnVuZGxlSWQ6JCxpY29uRGF0YVVybDpKfSl7aWYoSilyZXR1cm4gWCgiaW1nIix7c3JjOkosY2xhc3NOYW1lOiJ3LTEwIGgtMTAgcm91bmRlZC1bOHB4XSBzaHJpbmstMCBvYmplY3QtY292ZXIgYm9yZGVyIGJvcmRlci13aGl0ZS84IixhbHQ6IiJ9KTtyZXR1cm4gWChaUSx7YnVuZGxlSWQ6JH0pfWZ1bmN0aW9uIG82KHt1ZGlkOiQsY3VycmVudEFwcDpKfSl7bGV0W1EsWl09QShudWxsKSxbSyxZXT1BKCExKTtpZihiKCgpPT57aWYoIUope1oobnVsbCk7cmV0dXJufWxldCBxPSExO3JldHVybiBaKHtidW5kbGVJZDpKLmJ1bmRsZUlkLGlzUmVhY3ROYXRpdmU6Si5pc1JlYWN0TmF0aXZlLHBpZDpKLnBpZCxsb2FkaW5nOiEwfSksbjMoRTEsJCxKLmJ1bmRsZUlkKS50aGVuKChHKT0+e2lmKHEpcmV0dXJuO1ooe2J1bmRsZUlkOkouYnVuZGxlSWQsaXNSZWFjdE5hdGl2ZTpKLmlzUmVhY3ROYXRpdmUscGlkOkoucGlkLGxvYWRpbmc6ITEsLi4uR30pfSksKCk9PntxPSEwfX0sWyQsSixKPy5idW5kbGVJZCxKPy5waWQsSj8uaXNSZWFjdE5hdGl2ZV0pLCFRKXJldHVybiBYKEtRLHt9KTtyZXR1cm4gWChlMSx7b3BlbjpLLG9uT3BlbkNoYW5nZTpZLHN1bW1hcnlDbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIHRleHQtbGVmdCIsc3VtbWFyeTpYKFoxLHtjaGlsZHJlbjpbWChYUSx7YnVuZGxlSWQ6US5idW5kbGVJZCxpY29uRGF0YVVybDpRLmljb25EYXRhVXJsfSksWChZUSx7YnVuZGxlSWQ6US5idW5kbGVJZCxkaXNwbGF5TmFtZTpRLmRpc3BsYXlOYW1lfSldfSksY2hpbGRyZW46W1EuZXJyb3ImJlgoImRpdiIse2NsYXNzTmFtZToiYmctZGFuZ2VyLzEwIGJvcmRlciBib3JkZXItZGFuZ2VyLzIwIHRleHQtZGFuZ2VyLXNvZnQgdGV4dC1bMTFweF0gcHgtMiBweS0xLjUgcm91bmRlZC1tZCIsY2hpbGRyZW46US5lcnJvcn0pLFgoImRsIix7Y2xhc3NOYW1lOiJtLTAgZmxleCBmbGV4LWNvbCBnYXAtMS41IixjaGlsZHJlbjpbWChDMix7bGFiZWw6IlZlcnNpb24iLHZhbHVlOlEuc2hvcnRWZXJzaW9uP2Ake1Euc2hvcnRWZXJzaW9ufSAoJHtRLmJ1bmRsZVZlcnNpb24/PyLigJQifSlgOlEubG9hZGluZz8i4oCmIjoi4oCUIn0pLFgoQzIse2xhYmVsOiJNaW4gaU9TIix2YWx1ZTpRLm1pbk9TPz8oUS5sb2FkaW5nPyLigKYiOiLigJQiKX0pLFgoQzIse2xhYmVsOiJFeGVjdXRhYmxlIix2YWx1ZTpRLmV4ZWN1dGFibGU/PyhRLmxvYWRpbmc/IuKApiI6IuKAlCIpfSksWChDMix7bGFiZWw6IlBJRCIsdmFsdWU6US5waWQhPW51bGw/U3RyaW5nKFEucGlkKToi4oCUIn0pLFEuaXNSZWFjdE5hdGl2ZSYmWChDMix7bGFiZWw6IlJlYWN0IE5hdGl2ZSIsdmFsdWU6IlllcyJ9KSxYKEMyLHtsYWJlbDoiQXBwIHBhdGgiLHZhbHVlOlEuYXBwUGF0aD8/KFEubG9hZGluZz8i4oCmIjoi4oCUIiksbW9ubzohMCxhY3Rpb246US5hcHBQYXRoP3t0aXRsZToiUmV2ZWFsIGluIEZpbmRlciIsb25DbGljazooKT0+e0UxKGBvcGVuIC1SICR7TTEoUS5hcHBQYXRoKX1gKX0saWNvbjpYKEkyLHtzaXplOjExLHN0cm9rZVdpZHRoOjIuMn0pfTp2b2lkIDB9KV19KV19KX1mdW5jdGlvbiBLUSgpe3JldHVybiBYKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJhcHAtZGV0ZWN0aW9uLXNrZWxldG9uIixjbGFzc05hbWU6ImJnLXBhbmVsIHJvdW5kZWQtWzEwcHhdIHB4LTMgcHktMiIsImFyaWEtbGFiZWwiOiJXYWl0aW5nIGZvciBmb3JlZ3JvdW5kIGFwcCIsY2hpbGRyZW46WCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyB0ZXh0LWxlZnQgbWluLWgtWzM2cHhdIGxlYWRpbmctbm9uZSBweS0yLjUgcHgtMSAtbXktMiAtbXgtMSB3LVtjYWxjKDEwMCUrOHB4KV0iLGNoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ3LTEwIGgtMTAgcm91bmRlZC1bOHB4XSBzaHJpbmstMCBiZy13aGl0ZS9bMC4wOF0ifSksWCgic3BhbiIse2NsYXNzTmFtZToibWluLXctMCBmbGV4LTEgZmxleCBmbGV4LWNvbCBnYXAtMiIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6ImgtMy41IHctWzQ2JV0gcm91bmRlZC1mdWxsIGJnLXdoaXRlL1swLjEyXSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJoLTIuNSB3LVs2OCVdIHJvdW5kZWQtZnVsbCBiZy13aGl0ZS9bMC4wOF0ifSldfSksWCgic3BhbiIse2NsYXNzTmFtZToidy0yLjUgaC0yLjUgcm91bmRlZC1mdWxsIGJnLXdoaXRlL1swLjA4XSJ9KV19KX0pfWZ1bmN0aW9uIFlRKHtidW5kbGVJZDokLGRpc3BsYXlOYW1lOkp9KXtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOiJtaW4tdy0wIGZsZXgtMSBsZWFkaW5nLXRpZ2h0IHRleHQtbGVmdCIsY2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToidGV4dC1bMTNweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzkwIHRydW5jYXRlIixjaGlsZHJlbjpKPz9RUSgkKX0pLFgoImRpdiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gdGV4dC13aGl0ZS81NSBmb250LW1vbm8gdHJ1bmNhdGUiLHRpdGxlOiQsY2hpbGRyZW46JH0pXX0pfWZ1bmN0aW9uIEMyKHtsYWJlbDokLHZhbHVlOkosbW9ubzpRLGFjdGlvbjpafSl7cmV0dXJuIFgoImRpdiIse2NsYXNzTmFtZToiZ3JvdXAgZmxleCBpdGVtcy1iYXNlbGluZSBnYXAtMiBtaW4tdy0wIixjaGlsZHJlbjpbWCgiZHQiLHtjbGFzc05hbWU6Im0tMCB0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzUwIHctMjEgc2hyaW5rLTAiLGNoaWxkcmVuOiR9KSxYKCJkZCIse2NsYXNzTmFtZTpgbS0wIHRleHQtd2hpdGUvOTAgZmxleC0xIG1pbi13LTAgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgcmVsYXRpdmUgJHtRPyJmb250LW1vbm8gdGV4dC1bMTFweF0iOiJ0ZXh0LVsxMnB4XSJ9YCx0aXRsZTpKLGNoaWxkcmVuOltKLFomJlgoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBib3R0b20tMCBwbC03IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGJnLVtsaW5lYXItZ3JhZGllbnQodG9fcmlnaHQscmdiYSgyOCwyOCwzMCwwKV8wJSwjMWMxYzFlXzU1JSldIFt0cmFuc2l0aW9uOm9wYWNpdHlfMC4xNXNfZWFzZSx0cmFuc2Zvcm1fMC4xNXNfZWFzZV0gb3BhY2l0eS0wIHRyYW5zbGF0ZS14LTEgcG9pbnRlci1ldmVudHMtbm9uZSBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC0wIGdyb3VwLWhvdmVyOnBvaW50ZXItZXZlbnRzLWF1dG8iLGNoaWxkcmVuOlgoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazpaLm9uQ2xpY2ssdGl0bGU6Wi50aXRsZSwiYXJpYS1sYWJlbCI6Wi50aXRsZSxjbGFzc05hbWU6InctNSBoLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcm91bmRlZCB0ZXh0LXdoaXRlIGN1cnNvci1wb2ludGVyIHAtMCIsY2hpbGRyZW46Wi5pY29ufSl9KV19KV19KX12YXIgcjY9W3trZXk6ImNhbWVyYSIsbGFiZWw6IkNhbWVyYSJ9LHtrZXk6Im1pY3JvcGhvbmUiLGxhYmVsOiJNaWNyb3Bob25lIn0se2tleToicGhvdG9zIixsYWJlbDoiUGhvdG9zIn0se2tleToicGhvdG9zLWFkZCIsbGFiZWw6IkFkZCB0byBQaG90b3MifSx7a2V5OiJjb250YWN0cyIsbGFiZWw6IkNvbnRhY3RzIn0se2tleToiY2FsZW5kYXIiLGxhYmVsOiJDYWxlbmRhciJ9LHtrZXk6InJlbWluZGVycyIsbGFiZWw6IlJlbWluZGVycyJ9LHtrZXk6ImxvY2F0aW9uIixsYWJlbDoiTG9jYXRpb24ifSx7a2V5OiJsb2NhdGlvbi1hbHdheXMiLGxhYmVsOiJMb2NhdGlvbiAoQWx3YXlzKSJ9LHtrZXk6Im5vdGlmaWNhdGlvbnMiLGxhYmVsOiJOb3RpZmljYXRpb25zIn0se2tleToibW90aW9uIixsYWJlbDoiTW90aW9uIn0se2tleToibWVkaWEtbGlicmFyeSIsbGFiZWw6Ik1lZGlhIExpYnJhcnkifSx7a2V5OiJzaXJpIixsYWJlbDoiU2lyaSJ9XTtmdW5jdGlvbiBpNih7dWRpZDokLGJ1bmRsZUlkOkp9KXtsZXRbUSxaXT1BKHt9KSxbSyxZXT1BKG51bGwpLFtxLEddPUEobnVsbCksW04sQl09QSghMSksTD1UMSgoKT0+e2xldCB6PXR5cGVvZiB3aW5kb3c+InUiP3ZvaWQgMDp3aW5kb3cuX19TSU1fUFJFVklFV19fPy5zZXJ2ZVNpbUJpbjtpZigheilyZXR1cm4ic2VydmUtc2ltIjtpZigvXC50cyQvLnRlc3QoeikpcmV0dXJuYGJ1biAke00xKHopfWA7aWYoL1wuanMkLy50ZXN0KHopKXJldHVybmBub2RlICR7TTEoeil9YDtyZXR1cm4gTTEoeil9LFtdKTtiKCgpPT57Wih7fSksRyhudWxsKX0sW0pdKTtsZXQgVj1EKGFzeW5jKHosayk9PntpZighSilyZXR1cm47bGV0IEg9YCR7en06JHtrfWA7WShIKSxHKG51bGwpO3RyeXtsZXQgQz1hd2FpdCBFMShgJHtMfSBwZXJtaXNzaW9ucyAke2t9ICR7en0gJHtNMShKKX0gLWQgJHtNMSgkKX1gKTtpZihDLmV4aXRDb2RlIT09MCl7RyhDLnN0ZGVyci50cmltKCl8fGBzZXJ2ZS1zaW0gcGVybWlzc2lvbnMgZmFpbGVkIChleGl0ICR7Qy5leGl0Q29kZX0pYCk7cmV0dXJufVooKEYpPT4oey4uLkYsW3pdOms9PT0icmVzZXQiP3ZvaWQgMDprfSkpfWZpbmFsbHl7WShudWxsKX19LFtMLCQsSl0pLFU9RChhc3luYygpPT57aWYoIUopcmV0dXJuO1koIl9fYWxsX18iKSxHKG51bGwpO3RyeXtsZXQgej1hd2FpdCBFMShgJHtMfSBwZXJtaXNzaW9ucyByZXNldCBhbGwgJHtNMShKKX0gLWQgJHtNMSgkKX1gKTtpZih6LmV4aXRDb2RlIT09MCl7Ryh6LnN0ZGVyci50cmltKCl8fGBzZXJ2ZS1zaW0gcGVybWlzc2lvbnMgZmFpbGVkIChleGl0ICR7ei5leGl0Q29kZX0pYCk7cmV0dXJufVooe30pfWZpbmFsbHl7WShudWxsKX19LFtMLCQsSl0pO2lmKCFKKXJldHVybiBYKHFRLHt9KTtyZXR1cm4gWChlMSx7b3BlbjpOLG9uT3BlbkNoYW5nZTpCLHN1bW1hcnlDbGFzc05hbWU6ImdyaWQgW2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvXzFmcl9hdXRvXSBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1sZWZ0IixzdW1tYXJ5OlgoWjEse2NoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIGxlYWRpbmctbm9uZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOiJQZXJtaXNzaW9ucyJ9KSxYKCJzcGFuIix7fSldfSksY2hpbGRyZW46W3EmJlgoImRpdiIse2NsYXNzTmFtZToiYmctZGFuZ2VyLzEwIGJvcmRlciBib3JkZXItZGFuZ2VyLzIwIHRleHQtZGFuZ2VyLXNvZnQgdGV4dC1bMTFweF0gcHgtMiBweS0xLjUgcm91bmRlZC1tZCIsY2hpbGRyZW46cX0pLFgoImRpdiIse2NsYXNzTmFtZToicmVsYXRpdmUiLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6Im1heC1oLVsyNjBweF0gb3ZlcmZsb3cteS1hdXRvIGZsZXggZmxleC1jb2wgZ2FwLTEgcHktMiBbc2Nyb2xsYmFyLXdpZHRoOnRoaW5dIixjaGlsZHJlbjpyNi5tYXAoKHtrZXk6eixsYWJlbDprfSk9PntsZXQgSD1RW3pdO3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBweC0wLjUgcHktMSIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzEycHhdIHRleHQtd2hpdGUvOTAgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgZmxleC0xIG1pbi13LTAiLGNoaWxkcmVuOmt9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZ2FwLTAuNSBiZy13aGl0ZS9bMC4wNF0gYm9yZGVyIGJvcmRlci13aGl0ZS84IHJvdW5kZWQtbWQgcC0wLjUiLHJvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbCI6ayxjaGlsZHJlbjpbWChzMyx7YWN0aXZlOkg9PT0iZ3JhbnQiLHBlbmRpbmc6Sz09PWAke3p9OmdyYW50YCxvbkNsaWNrOigpPT5WKHosImdyYW50IiksdmFyaWFudDoiZ3JhbnQiLHRpdGxlOiJBbGxvdyIsY2hpbGRyZW46WChFMix7c2l6ZToxMSxzdHJva2VXaWR0aDozfSl9KSxYKHMzLHthY3RpdmU6SD09PSJyZXZva2UiLHBlbmRpbmc6Sz09PWAke3p9OnJldm9rZWAsb25DbGljazooKT0+Vih6LCJyZXZva2UiKSx2YXJpYW50OiJyZXZva2UiLHRpdGxlOiJEZW55IixjaGlsZHJlbjpYKEcwLHtzaXplOjExLHN0cm9rZVdpZHRoOjN9KX0pLFgoczMse2FjdGl2ZTohMSxwZW5kaW5nOks9PT1gJHt6fTpyZXNldGAsb25DbGljazooKT0+Vih6LCJyZXNldCIpLHZhcmlhbnQ6InJlc2V0Iix0aXRsZToiUmVzZXQiLGNoaWxkcmVuOlgoaTAse3NpemU6MTEsc3Ryb2tlV2lkdGg6Mi40fSl9KV19KV19LHopfSl9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGgtWzE0cHhdIHBvaW50ZXItZXZlbnRzLW5vbmUgcm91bmRlZC10LVsxMHB4XSBiZy1bbGluZWFyLWdyYWRpZW50KHRvX2JvdHRvbSwjMWMxYzFlXzAlLHJnYmEoMjgsMjgsMzAsMClfMTAwJSldIn0pLFgoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgaC1bMTRweF0gcG9pbnRlci1ldmVudHMtbm9uZSBiZy1bbGluZWFyLWdyYWRpZW50KHRvX3RvcCwjMWMxYzFlXzAlLHJnYmEoMjgsMjgsMzAsMClfMTAwJSldIn0pXX0pLFgoImRpdiIse2NsYXNzTmFtZToiZmxleCBqdXN0aWZ5LWVuZCIsY2hpbGRyZW46WCgiYnV0dG9uIix7b25DbGljazpVLGRpc2FibGVkOks9PT0iX19hbGxfXyIsY2xhc3NOYW1lOiJiZy10cmFuc3BhcmVudCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHRleHQtd2hpdGUvNzAgdGV4dC1bMTBweF0gcHgtMiBweS1bM3B4XSByb3VuZGVkLVs1cHhdIGN1cnNvci1wb2ludGVyIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wNGVtXSIsdGl0bGU6InNlcnZlLXNpbSBwZXJtaXNzaW9ucyByZXNldCBhbGwiLGNoaWxkcmVuOks9PT0iX19hbGxfXyI/IuKApiI6IlJlc2V0IGFsbCJ9KX0pXX0pfWZ1bmN0aW9uIHFRKCl7cmV0dXJuIFgoImRpdiIseyJkYXRhLXRlc3RpZCI6ImFwcC1wZXJtaXNzaW9ucy1sb2FkaW5nIixjbGFzc05hbWU6ImJnLXBhbmVsIHJvdW5kZWQtWzEwcHhdIHB4LTMgcHktMiIsImFyaWEtZGlzYWJsZWQiOiJ0cnVlIiwiYXJpYS1idXN5IjoidHJ1ZSIsY2hpbGRyZW46WCgiZGl2Iix7Y2xhc3NOYW1lOiJzZWxlY3Qtbm9uZSB0ZXh0LXdoaXRlLzU1IG1pbi1oLVszNnB4XSBsZWFkaW5nLW5vbmUgcHktMi41IHB4LTEgLW15LTIgLW14LTEgdy1bY2FsYygxMDAlKzhweCldIGdyaWQgW2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvXzFmcl9hdXRvXSBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1sZWZ0IGN1cnNvci1kZWZhdWx0IixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMDhlbV0gbGVhZGluZy1ub25lIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsY2hpbGRyZW46IlBlcm1pc3Npb25zIn0pLFgoInNwYW4iLHt9KSxYKCJzcGFuIix7ImRhdGEtdGVzdGlkIjoicGVybWlzc2lvbnMtbG9hZGluZy1pbmRpY2F0b3IiLHJvbGU6InN0YXR1cyIsImFyaWEtbGFiZWwiOiJMb2FkaW5nIHBlcm1pc3Npb25zIixjbGFzc05hbWU6InNpemUtMi41IHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLVsjNWY2MjY4XSBib3JkZXItdC1bI2Y0ZjRmNV0gYW5pbWF0ZS1bZ3JpZC1zcGluXzAuN3NfbGluZWFyX2luZmluaXRlXSJ9KV19KX0pfWZ1bmN0aW9uIHMzKHthY3RpdmU6JCxwZW5kaW5nOkosb25DbGljazpRLHZhcmlhbnQ6Wix0aXRsZTpLLGNoaWxkcmVuOll9KXtsZXQgcT1aPT09ImdyYW50Ij8iIzRhZGU4MCI6Wj09PSJyZXZva2UiPyIjZjg3MTcxIjoiI2E1YjRmYyI7cmV0dXJuIFgoImJ1dHRvbiIse29uQ2xpY2s6USxkaXNhYmxlZDpKLHRpdGxlOkssImFyaWEtbGFiZWwiOkssY2xhc3NOYW1lOiJ3LTYgaC01LjUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLW5vbmUgcm91bmRlZCBwLTAgY3Vyc29yLXBvaW50ZXIgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjEycyxjb2xvcl8wLjEyc10iLHN0eWxlOntiYWNrZ3JvdW5kOiQ/YCR7cX0yMmA6InRyYW5zcGFyZW50Iixjb2xvcjokP3E6InJnYmEoMjU1LDI1NSwyNTUsMC41NSkiLG9wYWNpdHk6Sj8wLjU6MX0sY2hpbGRyZW46WX0pfWZ1bmN0aW9uIHU1KHtsYWJlbDokLGNoZWNrZWQ6SixkaXNhYmxlZDpRPSExLG9uQ2hhbmdlOlp9KXtyZXR1cm4gWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixyb2xlOiJzd2l0Y2giLCJhcmlhLWNoZWNrZWQiOkosImFyaWEtbGFiZWwiOiQsZGlzYWJsZWQ6USxvbkNsaWNrOigpPT5aKCFKKSxjbGFzc05hbWU6YHJlbGF0aXZlIGgtWzE4cHhdIHctOCBzaHJpbmstMCByb3VuZGVkLWZ1bGwgYm9yZGVyLW5vbmUgcC0wIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNdICR7UT8iY3Vyc29yLWRlZmF1bHQgYmctd2hpdGUvMjAiOko/ImN1cnNvci1wb2ludGVyIGJnLVsjMGE4NGZmXSI6ImN1cnNvci1wb2ludGVyIGJnLXdoaXRlLzIwIn1gLGNoaWxkcmVuOlgoInNwYW4iLHtjbGFzc05hbWU6YGFic29sdXRlIHRvcC1bMnB4XSBzaXplLVsxNHB4XSByb3VuZGVkLWZ1bGwgW3RyYW5zaXRpb246bGVmdF8wLjE1c10gJHtRPyJiZy13aGl0ZS81MCI6ImJnLXdoaXRlIn1gLHN0eWxlOntsZWZ0Oko/MTY6Mn19KX0pfXZhciBHUT0iYmctcGFuZWwgcm91bmRlZC1bMTBweF0iLFZRPSJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIG0tMCI7ZnVuY3Rpb24gbjYoe292ZXJsYXlFbmFibGVkOiQsb25Ub2dnbGVPdmVybGF5Okp9KXtsZXR7c25hcHNob3Q6UX09TjIoKSx7aGlnaGxpZ2h0ZWRLZXk6WixzZXRIaWdobGlnaHRlZEtleTpLfT1JNSgpLFk9UT8uZWxlbWVudHM/P1tdLHE9RDUoUSksRz1RPy5lcnJvcnM/LlswXT8/bnVsbDtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOmAke0dRfSBweC0zIHB5LTJgLGNoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6VlEsY2hpbGRyZW46IkFYIFRyZWUifSksWCh1NSx7bGFiZWw6IkVuYWJsZSBvdmVybGF5IixjaGVja2VkOiQsb25DaGFuZ2U6Sn0pXX0pLCEkP251bGw6cT9YKGE2LHtjaGlsZHJlbjoiQVggdW5hdmFpbGFibGUgb24gdGhpcyBzaW11bGF0b3IuIn0pOlkubGVuZ3RoPT09MD9YKGE2LHtzcGlubmVyOiFHLGNoaWxkcmVuOkc/PyJXYWl0aW5nIGZvciBhY2Nlc3NpYmlsaXR5IGRhdGHigKYifSk6WCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0xIG10LTIgcHktMiBtYXgtaC1bMjYwcHhdIG92ZXJmbG93LXktYXV0byBbc2Nyb2xsYmFyLXdpZHRoOnRoaW5dIixyb2xlOiJsaXN0IixjaGlsZHJlbjpZLm1hcCgoTixCKT0+e2xldCBMPWEwKE4pO3JldHVybiBYKEJRLHtlbGVtZW50Ok4saW5kZXg6QixhY3RpdmU6TD09PVosb25IaWdobGlnaHQ6S30sTCl9KX0pXX0pfWZ1bmN0aW9uIGE2KHtjaGlsZHJlbjokLHNwaW5uZXI6Sj0hMX0pe3JldHVybiBYKCJkaXYiLHtyb2xlOiJzdGF0dXMiLCJhcmlhLWxpdmUiOiJwb2xpdGUiLGNsYXNzTmFtZToibXQtMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiBweS00IHRleHQtWzEycHhdIHRleHQtd2hpdGUvNDUiLGNoaWxkcmVuOltKP1goInNwYW4iLHsiYXJpYS1oaWRkZW4iOiJ0cnVlIixjbGFzc05hbWU6InNpemUtMy41IHNocmluay0wIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItd2hpdGUvMjAgYm9yZGVyLXQtd2hpdGUvNjAgYW5pbWF0ZS1bZ3JpZC1zcGluXzAuOHNfbGluZWFyX2luZmluaXRlXSJ9KTpudWxsLFgoInNwYW4iLHtjaGlsZHJlbjokfSldfSl9dmFyIEJRPWMwKGZ1bmN0aW9uKHtlbGVtZW50OkosaW5kZXg6USxhY3RpdmU6WixvbkhpZ2hsaWdodDpLfSl7bGV0IFk9YTAoSikscT1UNShKLFEpLEc9YCR7TWF0aC5yb3VuZChKLmZyYW1lLndpZHRoKX14JHtNYXRoLnJvdW5kKEouZnJhbWUuaGVpZ2h0KX1gLE49W3EubGFiZWwscS5yb2xlfHxxLnR5cGV8fCJlbGVtZW50IixHXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpO3JldHVybiBYKCJkaXYiLHtyb2xlOiJsaXN0aXRlbSIsdGFiSW5kZXg6MCwiZGF0YS1heC1rZXkiOlksdGl0bGU6Tixvbk1vdXNlRW50ZXI6KCk9PksoWSksb25Nb3VzZUxlYXZlOigpPT5LKG51bGwpLG9uRm9jdXM6KCk9PksoWSksb25CbHVyOigpPT5LKG51bGwpLGNsYXNzTmFtZTpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHJvdW5kZWQtbWQgcHktMSBweC0wLjUgbWluLXctMCAke1o/ImJnLXdoaXRlL1swLjA2XSI6IiJ9YCxjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBnYXAtMC41IGZsZXgtMSBtaW4tdy0wIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC13aGl0ZS85MCB0ZXh0LVsxMnB4XSBmb250LW1lZGl1bSIsY2hpbGRyZW46Si5sYWJlbHx8Si5yb2xlfHwiVW5sYWJlbGVkIn0pLFgoInNwYW4iLHtjbGFzc05hbWU6Im92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtd2hpdGUvNDUgZm9udC1tb25vIHRleHQtWzEwcHhdIixjaGlsZHJlbjpKLnJvbGV8fEoudHlwZXx8ImVsZW1lbnQifSldfSksWCgiY29kZSIse2NsYXNzTmFtZToic2hyaW5rLTAgYmctd2hpdGUvWzAuMDRdIGJvcmRlciBib3JkZXItd2hpdGUvOCByb3VuZGVkLW1kIHRleHQtd2hpdGUvNTUgZm9udC1tb25vIHRleHQtWzEwcHhdIHB4LTEuNSBweS1bM3B4XSIsY2hpbGRyZW46R30pXX0pfSwoJCxKKT0+JC5pbmRleD09PUouaW5kZXgmJiQuYWN0aXZlPT09Si5hY3RpdmUmJiQub25IaWdobGlnaHQ9PT1KLm9uSGlnaGxpZ2h0JiZ3NSgkLmVsZW1lbnQsSi5lbGVtZW50KSk7dmFyIE5RPW5ldyBTZXQoWyJpbWFnZS9qcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvZ2lmIiwiaW1hZ2UvaGVpYyIsImltYWdlL2hlaWYiLCJpbWFnZS93ZWJwIiwidmlkZW8vbXA0IiwidmlkZW8vcXVpY2t0aW1lIl0pLHQzPTE5NjYwOCxzNj01MjQyODgwMDAsbDU9ImFwcGxpY2F0aW9uL3gtc2VydmUtc2ltLWhvc3QtcGF0aCI7YXN5bmMgZnVuY3Rpb24gdDYoJCxKLFEpe2xldCBaPWF3YWl0IEooYHhjcnVuIHNpbWN0bCBhZGRtZWRpYSAke1F9ICR7TTEoJCl9YCk7aWYoWi5leGl0Q29kZSE9PTApdGhyb3cgRXJyb3IoWi5zdGRlcnJ8fGBhZGRtZWRpYSBmYWlsZWQgKGV4aXQgJHtaLmV4aXRDb2RlfSlgKX1mdW5jdGlvbiBGMigkKXtsZXQgSj0kLm5hbWUsUT1KLmxhc3RJbmRleE9mKCIuIik7aWYoUT49MClyZXR1cm4gSi5zbGljZShRKzEpLnRvTG93ZXJDYXNlKCk7aWYoJC50eXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpKXJldHVybiJtcDQiO3JldHVybiJqcGcifWZ1bmN0aW9uIGU2KCQpe2lmKEYyKCQpPT09ImlwYSIpcmV0dXJuImlwYSI7aWYoTlEuaGFzKCQudHlwZSkpcmV0dXJuIm1lZGlhIjtyZXR1cm4gbnVsbH1mdW5jdGlvbiBMUSgkKXtsZXQgSj1uZXcgVWludDhBcnJheSgkKSxRPSIiO2ZvcihsZXQgWj0wO1o8Si5sZW5ndGg7Wis9MzI3NjgpUSs9U3RyaW5nLmZyb21DaGFyQ29kZSguLi5KLnN1YmFycmF5KFosWiszMjc2OCkpO3JldHVybiBidG9hKFEpfWFzeW5jIGZ1bmN0aW9uICQ0KCQsSixRLFope2xldCBLPTA7Zm9yKGxldCBZPTA7WTwkLnNpemU7WSs9dDMpe2xldCBxPWF3YWl0ICQuc2xpY2UoWSxZK3QzKS5hcnJheUJ1ZmZlcigpLEc9TFEocSksQj1hd2FpdCBRKGBiYXNoIC1jICdlY2hvICR7R30gfCBiYXNlNjQgLWQgJHtZPT09MD8iPiI6Ij4+In0gJHtKfSdgKTtpZihCLmV4aXRDb2RlIT09MCl0aHJvdyBFcnJvcihCLnN0ZGVycnx8YFdyaXRlIGZhaWxlZCAoZXhpdCAke0IuZXhpdENvZGV9KWApO2lmKCFaKWNvbnRpbnVlO2xldCBMPU1hdGgubWluKFkrdDMsJC5zaXplKSxWPU1hdGguZmxvb3IoTC8kLnNpemUqMTAwKTtpZihWIT09SylLPVYsWihMLyQuc2l6ZSl9fWFzeW5jIGZ1bmN0aW9uIEo0KCQsSixRLFope2lmKCQuc2l6ZT5zNil0aHJvdyBFcnJvcigiRmlsZSB0b28gbGFyZ2UgKG1heCA1MDBNQikiKTtsZXQgSz1gL3RtcC8ke0p9LSR7Y3J5cHRvLnJhbmRvbVVVSUQoKX0uJHtRfWA7cmV0dXJuIGF3YWl0ICQ0KCQsSyxaKSxLfWFzeW5jIGZ1bmN0aW9uIFE0KCQsSixRLFosSyl7aWYoJC5zaXplPnM2KXRocm93IEVycm9yKCJGaWxlIHRvbyBsYXJnZSAobWF4IDUwME1CKSIpO2xldCBZPUo9PT0iaXBhIj8iaXBhIjpGMigkKSxHPWAvdG1wLyR7Sj09PSJpcGEiPyJzZXJ2ZS1zaW0taW5zdGFsbCI6InNlcnZlLXNpbS11cGxvYWQifS0ke2NyeXB0by5yYW5kb21VVUlEKCl9LiR7WX1gO3RyeXtLKDApLGF3YWl0ICQ0KCQsRyxRLEspLEsobnVsbCk7bGV0IE49Sj09PSJpcGEiP2B4Y3J1biBzaW1jdGwgaW5zdGFsbCAke1p9ICR7R31gOmB4Y3J1biBzaW1jdGwgYWRkbWVkaWEgJHtafSAke0d9YCxCPWF3YWl0IFEoTik7aWYoQi5leGl0Q29kZSE9PTApe2xldCBMPUo9PT0iaXBhIj8iaW5zdGFsbCI6ImFkZG1lZGlhIjt0aHJvdyBFcnJvcihCLnN0ZGVycnx8YCR7TH0gZmFpbGVkIChleGl0ICR7Qi5leGl0Q29kZX0pYCl9fWZpbmFsbHl7UShgYmFzaCAtYyAncm0gLWYgJHtHfSdgKS5jYXRjaCgoKT0+e30pfX12YXIgelE9MzAwMDthc3luYyBmdW5jdGlvbiBVUSgkLEo9ZmV0Y2gpe3RyeXtsZXQgUT1hd2FpdCBKKCQse2NhY2hlOiJuby1zdG9yZSJ9KTtpZighUS5vaylyZXR1cm4gbnVsbDtsZXQgWj1hd2FpdCBRLmpzb24oKTtyZXR1cm4gWiYmdHlwZW9mIFo9PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoWik/WjpudWxsfWNhdGNoe3JldHVybiBudWxsfX12YXIgSFE9MjA5NzE1MjAwLENRPSJMYXJnZSB2aWRlbyAoPjIwMCBNQikg4oCUIG1heSBzdHV0dGVyIG9uIHNoYXJlZCBtZW1vcnkiLFg0PSJIRUlDIGRlY29kZSBmYWlsZWQg4oCUIGV4cG9ydCBhcyBKUEVHIG9yIFBORyBhbmQgcmV0cnkiO2Z1bmN0aW9uIEZRKCQsSil7aWYoSilyZXR1cm4iYWN0aXZlIjtpZigkPT09ImFjdGl2ZSIpcmV0dXJuImRpc2Nvbm5lY3RlZCI7aWYoJD09PSJkaXNjb25uZWN0ZWQiKXJldHVybiJyZWFkeSI7cmV0dXJuICR9ZnVuY3Rpb24ga1EoJCl7aWYoISQuaW5qZWN0ZWQpcmV0dXJuInBsYXkiO2lmKCQuc291cmNlPT09InBsYWNlaG9sZGVyIilyZXR1cm4icGxheSI7aWYoJC5idW5kbGVJZCYmISQuZm9yZWdyb3VuZElzSW5qZWN0ZWQpcmV0dXJuImF0dGFjaCI7cmV0dXJuInN0b3AifWZ1bmN0aW9uIE1RKCQpe3JldHVybiAkLnNwbGl0KGAKYCkubWFwKChKKT0+Si50cmltKCkpLmZpbHRlcihCb29sZWFuKS5mbGF0TWFwKChKKT0+e2xldCBRPUouaW5kZXhPZigiXHQiKTtpZihRPD0wKXJldHVybltdO2xldCBaPUouc2xpY2UoMCxRKS50cmltKCksSz1KLnNsaWNlKFErMSkudHJpbSgpO2lmKCFafHwhSylyZXR1cm5bXTtyZXR1cm5be2lkOlosbmFtZTpLfV19KX12YXIgT1E9bmV3IFNldChbIm1wNCIsIm00diIsIm1vdiIsInF0IiwiYXZpIiwibWt2Iiwid2VibSIsIm1wZyIsIm1wZWciLCIzZ3AiLCIzZzIiLCJ0cyIsIndtdiJdKTtmdW5jdGlvbiBLNCgkKXtpZigkLnR5cGUmJiQudHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iKSlyZXR1cm4hMDtsZXQgSj0oJC5uYW1lPz8iIikudG9Mb3dlckNhc2UoKSxRPUoubGFzdEluZGV4T2YoIi4iKTtpZihRPDApcmV0dXJuITE7cmV0dXJuIE9RLmhhcyhKLnNsaWNlKFErMSkpfWZ1bmN0aW9uIEFRKCQpe3JldHVybiBLNCgkKSYmJC5zaXplPkhRfWZ1bmN0aW9uIFdRKCQpe2xldCBKPSgkLnR5cGU/PyIiKS50b0xvd2VyQ2FzZSgpO2lmKEo9PT0iaW1hZ2UvaGVpYyJ8fEo9PT0iaW1hZ2UvaGVpZiIpcmV0dXJuITA7bGV0IFE9KCQubmFtZT8/IiIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIFEuZW5kc1dpdGgoIi5oZWljIil8fFEuZW5kc1dpdGgoIi5oZWlmIil9ZnVuY3Rpb24gX1Eoe3Jhd01lc3NhZ2U6JCxsYXN0RmlsZUlzSGVpYzpKLHNvdXJjZTpRfSl7aWYoSiYmKFE9PT0iaW1hZ2UifHxRPT09InZpZGVvIikpcmV0dXJuIFg0O3JldHVybiAkfWZ1bmN0aW9uIFBRKHtzdGF0ZTokfSl7bGV0IEo9JD09PSJhY3RpdmUiPyJBY3RpdmUiOiQ9PT0iZGlzY29ubmVjdGVkIj8iRGlzY29ubmVjdGVkIjoiUmVhZHkiLFE9JD09PSJhY3RpdmUiPyJzaXplLTEuNSByb3VuZGVkLWZ1bGwgYmctc3VjY2Vzcy1lbWVyYWxkIFtib3gtc2hhZG93OjBfMF82cHhfcmdiYSg3NCwyMjIsMTI4LDAuNyldIjokPT09ImRpc2Nvbm5lY3RlZCI/InNpemUtMS41IHJvdW5kZWQtZnVsbCBiZy1kYW5nZXItc29mdCBbYm94LXNoYWRvdzowXzBfNnB4X3JnYmEoMjQ4LDExMywxMTMsMC41NSldIjpudWxsO3JldHVybiBYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzU1IGZvbnQtbW9ubyBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBqdXN0aWZ5LXNlbGYtZW5kIGxlYWRpbmctbm9uZSIsImRhdGEtY2FtZXJhLXBpbGwtc3RhdGUiOiQsY2hpbGRyZW46W1EmJlgoInNwYW4iLHtjbGFzc05hbWU6UX0pLEpdfSl9ZnVuY3Rpb24gRFEoKXtyZXR1cm4gWCgicCIse2NsYXNzTmFtZToibS0wIHRleHQtY2VudGVyIHRleHQtWzEwcHhdIGxlYWRpbmctWzEuNV0gdGV4dC13aGl0ZS80NSIsImRhdGEtY2FtZXJhLXRlc3QtcGF0dGVybi1oaW50IjohMCxjaGlsZHJlbjoiVGVzdC1wYXR0ZXJuIGZlZWQifSl9ZnVuY3Rpb24gd1Eoe21vZGU6JCxmaWxlTmFtZTpKLHdlYmNhbU5hbWU6USxzb3VyY2VLaW5kOlp9KXtpZigkPT09InVwbG9hZGluZyIpcmV0dXJuIFgoInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzExcHhdIHRleHQtd2hpdGUvNTUiLGNoaWxkcmVuOiJVcGxvYWRpbmfigKYifSk7aWYoJD09PSJmaWxlIilyZXR1cm4gWChaMSx7Y2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToic2hyaW5rLTAgdGV4dC1bOXB4XSB0cmFja2luZy1bMC4xZW1dIHVwcGVyY2FzZSB0ZXh0LXdoaXRlLzU1IGJnLXdoaXRlL1swLjA2XSBib3JkZXIgYm9yZGVyLXdoaXRlLzggcHgtWzdweF0gcHktWzJweF0gcm91bmRlZC1mdWxsIixjaGlsZHJlbjpaPT09InZpZGVvIj8iVmlkZW8iOiJJbWFnZSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4LTEgbWluLXctMCB0cnVuY2F0ZSB0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlLzkwIGZvbnQtbW9ubyIsY2hpbGRyZW46Sj8/IiJ9KV19KTtpZigkPT09IndlYmNhbSIpcmV0dXJuIFgoWjEse2NoaWxkcmVuOltYKCJkaXYiLHtjbGFzc05hbWU6InNocmluay0wIHRleHQtWzlweF0gdHJhY2tpbmctWzAuMWVtXSB1cHBlcmNhc2UgdGV4dC13aGl0ZS81NSBiZy13aGl0ZS9bMC4wNl0gYm9yZGVyIGJvcmRlci13aGl0ZS84IHB4LVs3cHhdIHB5LVsycHhdIHJvdW5kZWQtZnVsbCIsY2hpbGRyZW46IldlYmNhbSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4LTEgbWluLXctMCB0cnVuY2F0ZSB0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlLzkwIGZvbnQtbW9ubyIsY2hpbGRyZW46UT8/IiJ9KV19KTtyZXR1cm4gWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTJweF0gdGV4dC13aGl0ZS84NSBmb250LW1lZGl1bSIsY2hpbGRyZW46IlNlbGVjdCBvciBkcm9wIG1lZGlhIn0pfWZ1bmN0aW9uIFo0KHtraW5kOiQsbWVzc2FnZTpKfSl7cmV0dXJuIFgoImRpdiIse2NsYXNzTmFtZTokPT09Indhcm5pbmciPyJiZy13YXJuaW5nLzEwIGJvcmRlciBib3JkZXItd2FybmluZy8yNSB0ZXh0LXdhcm5pbmctc29mdCB0ZXh0LVsxMXB4XSBweC0yIHB5LTEuNSByb3VuZGVkLW1kIGJyZWFrLXdvcmRzIjoiYmctZGFuZ2VyLzEwIGJvcmRlciBib3JkZXItZGFuZ2VyLzIwIHRleHQtZGFuZ2VyLXNvZnQgdGV4dC1bMTFweF0gcHgtMiBweS0xLjUgcm91bmRlZC1tZCBicmVhay13b3JkcyIsImRhdGEtY2FtZXJhLWJhbm5lci1raW5kIjokLHJvbGU6JD09PSJlcnJvciI/ImFsZXJ0Ijoic3RhdHVzIixjaGlsZHJlbjpKfSl9ZnVuY3Rpb24gWTQoe3VkaWQ6JCxidW5kbGVJZDpKfSl7bGV0W1EsWl09QSghMSksW0ssWV09QSgicGxhY2Vob2xkZXIiKSxbcSxHXT1BKCIiKSxbTixCXT1BKG51bGwpLFtMLFZdPUEoITEpLFU9VCgwKSxbeixrXT1BKCExKSxbSCxDXT1BKCExKSxGPVQobnVsbCksW08sSV09QShbXSksW3csU109QSghMSksW2osJDFdPUEoIiIpLFttLGNdPUEoIm9mZiIpLFtuLG9dPUEobnVsbCksW3IsUTFdPUEobnVsbCksTjE9biE9PW51bGx8fHIhPT1udWxsLFtkLHhdPUEobnVsbCksW2EsSzFdPUEobnVsbCksWyxMMV09QShudWxsKSxbSjEsWTFdPUEoITEpLFtDMSx5XT1BKCJyZWFkeSIpLFtnLF9dPUEoKCk9Pm5ldyBTZXQpLFtwLHVdPUEobnVsbCksW3YsRzFdPUEobnVsbCksejE9VCghMSksQTE9VCghMSksVzE9VCgib2ZmIiksaTE9VCghMSksTzE9VDEoKCk9PntsZXQgUD13aW5kb3cuX19TSU1fUFJFVklFV19fPy5zZXJ2ZVNpbUJpbjtpZighUClyZXR1cm4ic2VydmUtc2ltIjtpZigvXC50cyQvLnRlc3QoUCkpcmV0dXJuYGJ1biAke00xKFApfWA7aWYoL1wuanMkLy50ZXN0KFApKXJldHVybmBub2RlICR7TTEoUCl9YDtyZXR1cm4gTTEoUCl9LFtdKSxqMT1EKGFzeW5jKCk9PntsZXQgUD13aW5kb3cuX19TSU1fUFJFVklFV19fPy5jYW1lcmFTdGF0dXNFbmRwb2ludDtyZXR1cm4gUD9VUShQKTpudWxsfSxbXSksXzE9VChhc3luYygpPT57fSksbDE9VChKKTtiKCgpPT57bDEuY3VycmVudD1KfSxbSl0pLGIoKCk9PntsZXQgUD0hMTtyZXR1cm4oYXN5bmMoKT0+e2xldCBsPWF3YWl0IGoxKCk7aWYoUHx8IWx8fCFsLmFsaXZlKXJldHVybjtBMS5jdXJyZW50PSEwO2xldCBpPWwuc291cmNlO2lmKGk9PT0icGxhY2Vob2xkZXIifHxpPT09IndlYmNhbSJ8fGk9PT0iaW1hZ2UifHxpPT09InZpZGVvIilZKGkpO2lmKChpPT09ImltYWdlInx8aT09PSJ2aWRlbyIpJiZsLmFyZylHKGwuYXJnKSxCKGwuYXJnLnNwbGl0KCIvIikucG9wKCk/P251bGwpO2lmKGk9PT0id2ViY2FtIiYmbC5hcmcpJDEobC5hcmcpLF8xLmN1cnJlbnQoKTtsZXQgazE9bC5taXJyb3I9PT0ib24iPyJvbiI6Im9mZiI7YyhrMSksVzEuY3VycmVudD1rMSx1KGwuaGVscGVyUGlkPz9udWxsKSxZMSghMCk7bGV0IFYxPUFycmF5LmlzQXJyYXkobC5idW5kbGVJZHMpP2wuYnVuZGxlSWRzOltdO2lmKFYxLmxlbmd0aD4wKV8obmV3IFNldChWMSkpO2xldCBCMT1sMS5jdXJyZW50LGcxPWkmJmkhPT0icGxhY2Vob2xkZXIiO3koQjEmJlYxLmluY2x1ZGVzKEIxKSYmZzE/ImFjdGl2ZSI6InJlYWR5IiksTDEoYFJlYXR0YWNoZWQg4oaSICR7aT8/InJ1bm5pbmcgaGVscGVyIn0ke2wuYXJnP2AgKCR7bC5hcmd9KWA6IiJ9YCl9KSgpLCgpPT57UD0hMH19LFskLGoxXSksYigoKT0+e2xldCBQPSExLGw9ITEsaT1udWxsLGsxPWFzeW5jKCk9PntpZihQfHxsKXJldHVybjtpZih0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIilyZXR1cm47bD0hMDt0cnl7bGV0IEIxPWF3YWl0IGoxKCk7aWYoUClyZXR1cm47bGV0IGcxPSEhQjE/LmFsaXZlLHAxPUFycmF5LmlzQXJyYXkoQjE/LmJ1bmRsZUlkcyk/QjEuYnVuZGxlSWRzOm51bGwseDE9ISFKJiYocDE/cDEuaW5jbHVkZXMoSik6Zy5oYXMoSikpLE0wPUIxPy5zb3VyY2U/P251bGwsdzE9SjEmJmcxJiZ4MSYmISEoTTAmJk0wIT09InBsYWNlaG9sZGVyIikmJihwPT1udWxsfHxCMT8uaGVscGVyUGlkPT09cCk7aWYoeSgoTDApPT5GUShMMCx3MSkpLCFnMSlZMSgoTDApPT57aWYoIUwwKXJldHVybiBMMDtyZXR1cm4gXyhuZXcgU2V0KSx1KG51bGwpLFcxLmN1cnJlbnQ9Im9mZiIsITF9KTtlbHNlIGlmKEoxJiZwIT1udWxsJiZCMT8uaGVscGVyUGlkIT09cClZMSghMSksXyhuZXcgU2V0KSx1KG51bGwpLFcxLmN1cnJlbnQ9Im9mZiI7ZWxzZSBpZihnMSYmQXJyYXkuaXNBcnJheShCMT8uYnVuZGxlSWRzKSl7bGV0IEwwPUIxLmJ1bmRsZUlkcztfKChEMCk9PntpZihEMC5zaXplPT09TDAubGVuZ3RoJiZMMC5ldmVyeSgoUzApPT5EMC5oYXMoUzApKSlyZXR1cm4gRDA7cmV0dXJuIG5ldyBTZXQoTDApfSl9fWZpbmFsbHl7bD0hMX19O2k9c2V0SW50ZXJ2YWwoKCk9PntrMSgpfSx6USk7bGV0IFYxPSgpPT57aWYoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlPT09InZpc2libGUiKWsxKCl9O2lmKHR5cGVvZiBkb2N1bWVudDwidSIpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsVjEpO3JldHVybigpPT57aWYoUD0hMCxpKWNsZWFySW50ZXJ2YWwoaSk7aWYodHlwZW9mIGRvY3VtZW50PCJ1Iilkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixWMSl9fSxbajEsSjEscCxKLGddKTtsZXQgVTE9RChhc3luYygpPT57UyghMCkseChudWxsKTt0cnl7bGV0IFA9YXdhaXQgRTEoYCR7TzF9IGNhbWVyYSAtLWxpc3Qtd2ViY2Ftc2ApO2lmKFAuZXhpdENvZGUhPT0wKXt4KFAuc3RkZXJyLnRyaW0oKXx8YC0tbGlzdC13ZWJjYW1zIGZhaWxlZCAoJHtQLmV4aXRDb2RlfSlgKTtyZXR1cm59bGV0IGw9TVEoUC5zdGRvdXQpO2lmKEkobCksbC5sZW5ndGg+MCYmIWopJDEobFswXS5pZCl9ZmluYWxseXtTKCExKX19LFtqLE8xXSk7YigoKT0+e18xLmN1cnJlbnQ9VTF9LFtVMV0pLGIoKCk9PntpZihIJiZPLmxlbmd0aD09PTAmJiF3KVUxKCl9LFtILE8ubGVuZ3RoLHcsVTFdKTtsZXQgSTE9RCgoUCk9Pnt4KF9RKHtyYXdNZXNzYWdlOlAsbGFzdEZpbGVJc0hlaWM6ejEuY3VycmVudCxzb3VyY2U6S30pKX0sW0tdKSxkMT1EKGFzeW5jKFAsbCxpKT0+e2xldCBrMT1QPT09ImltYWdlInx8UD09PSJ2aWRlbyIsVjE9WyJjYW1lcmEiLCJzd2l0Y2giLGsxPyJmaWxlIjpQXTtpZihQPT09IndlYmNhbSImJmwpVjEucHVzaChNMShsKSk7aWYoazEpe2lmKCFpLnRyaW0oKSlyZXR1cm4geCgiRHJvcCBhIGZpbGUgaW50byB0aGUgcGFuZWwgb3IgcGljayBhbm90aGVyIHNvdXJjZS4iKSwhMTtWMS5wdXNoKE0xKGkudHJpbSgpKSl9VjEucHVzaCgiLWQiLCQsIi0tcXVpZXQiKTtsZXQgQjE9YXdhaXQgRTEoYCR7TzF9ICR7VjEuam9pbigiICIpfWApO2lmKEIxLmV4aXRDb2RlIT09MClyZXR1cm4gSTEoQjEuc3RkZXJyLnRyaW0oKXx8QjEuc3Rkb3V0LnRyaW0oKXx8YHN3aXRjaCBmYWlsZWQgKCR7QjEuZXhpdENvZGV9KWApLCExO3oxLmN1cnJlbnQ9ITE7dHJ5e2xldCBnMT1KU09OLnBhcnNlKEIxLnN0ZG91dC50cmltKCkpO0wxKGBTd2l0Y2hlZCDihpIgJHtnMS5zb3VyY2U/P1B9JHtnMS5hcmc/YCAoJHtnMS5hcmd9KWA6IiJ9YCl9Y2F0Y2h7TDEoYFN3aXRjaGVkIOKGkiAke1B9YCl9cmV0dXJuITB9LFskLE8xLEkxXSksdDE9RChhc3luYygpPT57aWYoIUopcmV0dXJuO28oImluamVjdCIpLHgobnVsbCksTDEobnVsbCk7dHJ5e2xldCBQPVsiY2FtZXJhIixNMShKKSwiLWQiLCQsIi0tcXVpZXQiXTtpZihLPT09ImltYWdlInx8Sz09PSJ2aWRlbyIpe2lmKCFxLnRyaW0oKSl7eCgiRHJvcCBhIGZpbGUgaW50byB0aGUgcGFuZWwgb3IgcGljayBhbm90aGVyIHNvdXJjZS4iKTtyZXR1cm59UC5wdXNoKCItLWZpbGUiLE0xKHEudHJpbSgpKSl9ZWxzZSBpZihLPT09IndlYmNhbSIpaWYoailQLnB1c2goIi0td2ViY2FtIixNMShqKSk7ZWxzZSBQLnB1c2goIi0td2ViY2FtIik7UC5wdXNoKCItLW1pcnJvciIsbSk7bGV0IGw9YXdhaXQgRTEoYCR7TzF9ICR7UC5qb2luKCIgIil9YCk7aWYobC5leGl0Q29kZSE9PTApe0kxKGwuc3RkZXJyLnRyaW0oKXx8bC5zdGRvdXQudHJpbSgpfHxgaW5qZWN0IGZhaWxlZCAoJHtsLmV4aXRDb2RlfSlgKTtyZXR1cm59ejEuY3VycmVudD0hMTtsZXQgaT1udWxsO3RyeXtsZXQgazE9SlNPTi5wYXJzZShsLnN0ZG91dC50cmltKCkpO2k9azEuaGVscGVyUGlkPz9udWxsO2xldCBWMT1rMS5oZWxwZXJSZWxhdW5jaGVkPT09ITE/IkF0dGFjaGVkIjoiSW5qZWN0ZWQiLEIxPWsxLnBpZD9gIHBpZCAke2sxLnBpZH1gOiIiLGcxPWsxLmhlbHBlclBpZD9gLCBoZWxwZXIgcGlkICR7azEuaGVscGVyUGlkfWA6IiI7TDEoYCR7VjF9ICR7azEuc291cmNlPz9LfSBpbnRvICR7Sn0ke0IxfSR7ZzF9YCl9Y2F0Y2h7TDEobC5zdGRvdXQudHJpbSgpfHwiSW5qZWN0ZWQuIil9WTEoITApLHkoSz09PSJwbGFjZWhvbGRlciI/InJlYWR5IjoiYWN0aXZlIiksdShpKSxfKChrMSk9PmsxLmhhcyhKKT9rMTpuZXcgU2V0KGsxKS5hZGQoSikpLFcxLmN1cnJlbnQ9bX1maW5hbGx5e28obnVsbCl9fSxbSiwkLEsscSxqLG0sTzEsSTFdKSxoMT1KMT9gJHtLfTo6JHtLPT09IndlYmNhbSI/ajoiIn06OiR7Sz09PSJpbWFnZSJ8fEs9PT0idmlkZW8iP3E6IiJ9YDpudWxsLGExPSEhSiYmZy5oYXMoSiksJDA9YTEmJkshPT0icGxhY2Vob2xkZXIiO2IoKCk9PntpZighJDApe2kxLmN1cnJlbnQ9ITE7cmV0dXJufWlmKGkxLmN1cnJlbnQpcmV0dXJuO2kxLmN1cnJlbnQ9ITAsWighMCl9LFskMF0pLGIoKCk9PntpZighdilyZXR1cm47aWYoIUp8fE4xfHx6KXJldHVybjtpZihLIT09IndlYmNhbSJ8fGohPT12KXJldHVybjtpZihHMShudWxsKSxKMSlyZXR1cm47dDEoKX0sW3YsSixOMSx6LEssaixKMSx0MV0pLGIoKCk9PntpZighSjEpcmV0dXJuO2lmKChLPT09ImltYWdlInx8Sz09PSJ2aWRlbyIpJiYhcS50cmltKCkpcmV0dXJuO2lmKEs9PT0id2ViY2FtIiYmIWopcmV0dXJuO2lmKEExLmN1cnJlbnQpe0ExLmN1cnJlbnQ9ITE7cmV0dXJufWxldCBQPSExO3JldHVybihhc3luYygpPT57UTEoInN3aXRjaCIpLHgobnVsbCk7dHJ5e2lmKFApcmV0dXJuO2F3YWl0IGQxKEssaixxKX1maW5hbGx5e2lmKCFQKVExKG51bGwpfX0pKCksKCk9PntQPSEwfX0sW2gxXSksYigoKT0+e2lmKCFKMSlyZXR1cm47aWYoVzEuY3VycmVudD09PW0pcmV0dXJuO2xldCBQPW0sbD0hMTtyZXR1cm4oYXN5bmMoKT0+e1ExKCJtaXJyb3IiKSx4KG51bGwpO3RyeXtsZXQgaT1hd2FpdCBFMShgJHtPMX0gY2FtZXJhIG1pcnJvciAke1B9IC1kICR7JH0gLS1xdWlldGApO2lmKGwpcmV0dXJuO2lmKGkuZXhpdENvZGUhPT0wKXt4KGkuc3RkZXJyLnRyaW0oKXx8aS5zdGRvdXQudHJpbSgpfHxgbWlycm9yIGZhaWxlZCAoJHtpLmV4aXRDb2RlfSlgKTtyZXR1cm59VzEuY3VycmVudD1QLEwxKGBNaXJyb3Ig4oaSICR7UH1gKX1maW5hbGx5e2lmKCFsKVExKG51bGwpfX0pKCksKCk9PntsPSEwfX0sW20sSjFdKTtsZXQgVjA9RChhc3luYygpPT57bygic3RvcCIpLHgobnVsbCk7dHJ5e2xldCBQPWF3YWl0IEUxKGAke08xfSBjYW1lcmEgLS1zdG9wLXdlYmNhbSAtZCAkeyR9YCk7aWYoUC5leGl0Q29kZSE9PTApe3goUC5zdGRlcnIudHJpbSgpfHxgc3RvcC13ZWJjYW0gZmFpbGVkICgke1AuZXhpdENvZGV9KWApO3JldHVybn1MMSgiQ2FtZXJhIGhlbHBlciBzdG9wcGVkLiIpLFkxKCExKSx5KCJyZWFkeSIpLF8obmV3IFNldCksVzEuY3VycmVudD0ib2ZmIn1maW5hbGx5e28obnVsbCl9fSxbJCxPMV0pLHMxPUQoYXN5bmMoUCk9PntsZXQgbD1XUSh7dHlwZTpQLnR5cGUsbmFtZTpQLm5hbWV9KSxpPVAudHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iKXx8bCxrMT1QLnR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIil8fEs0KHt0eXBlOlAudHlwZSxuYW1lOlAubmFtZX0pO2lmKCFpJiYhazEpe3oxLmN1cnJlbnQ9ITEseChgVW5zdXBwb3J0ZWQgZmlsZSB0eXBlOiAke1AudHlwZXx8UC5uYW1lfWApO3JldHVybn1pZihrKCEwKSx4KG51bGwpLEsxKG51bGwpLEFRKHt0eXBlOlAudHlwZSxuYW1lOlAubmFtZSxzaXplOlAuc2l6ZX0pKUsxKENRKTt6MS5jdXJyZW50PWw7dHJ5e2xldCBWMT1GMihQKSxCMT1hd2FpdCBKNChQLCJzZXJ2ZS1zaW0tY2Ftc3JjIixWMSxFMSk7QihQLm5hbWUpLFkoazE/InZpZGVvIjoiaW1hZ2UiKSxHKEIxKSxMMShgTG9hZGVkICR7UC5uYW1lfWApfWNhdGNoKFYxKXtpZih6MS5jdXJyZW50KXgoWDQpO2Vsc2UgeChWMT8ubWVzc2FnZT8/IlVwbG9hZCBmYWlsZWQiKX1maW5hbGx5e2soITEpfX0sW10pLHYwPUQoYXN5bmMoUCk9PntQLnByZXZlbnREZWZhdWx0KCksUC5zdG9wUHJvcGFnYXRpb24oKSxVLmN1cnJlbnQ9MCxWKCExKTtsZXQgbD1QLmRhdGFUcmFuc2Zlcj8uZmlsZXM/LlswXTtpZihsKWF3YWl0IHMxKGwpfSxbczFdKSxtMT1EKCgpPT57WSgicGxhY2Vob2xkZXIiKSxHKCIiKSxCKG51bGwpLHgobnVsbCksSzEobnVsbCksejEuY3VycmVudD0hMX0sW10pLHEwPUQoKCk9PntGLmN1cnJlbnQ/LmNsaWNrKCl9LFtdKSxKMD1EKGFzeW5jKFApPT57bGV0IGw9UC50YXJnZXQsaT1sLmZpbGVzPy5bMF07aWYobC52YWx1ZT0iIixpKWF3YWl0IHMxKGkpfSxbczFdKTtiKCgpPT57aWYoIUgpcmV0dXJuO2xldCBQPShsKT0+e2xldCBpPWwudGFyZ2V0O2lmKGkgaW5zdGFuY2VvZiBFbGVtZW50JiZpLmNsb3Nlc3QoIltkYXRhLWNhbWVyYS1zb3VyY2UtbWVudV0iKSlyZXR1cm47QyghMSl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixQKSwoKT0+d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsUCl9LFtIXSk7bGV0IF8wPUQoKFApPT57aWYoJDEoUC5pZCksWSgid2ViY2FtIiksQihudWxsKSx4KG51bGwpLHoxLmN1cnJlbnQ9ITEsQyghMSksSilHMShQLmlkKX0sW0pdKSxjMT1EKCgpPT57YygoUCk9PlA9PT0ib24iPyJvZmYiOiJvbiIpfSxbXSksbjE9IUoxfHxLPT09InBsYWNlaG9sZGVyIixQMD1EKChQKT0+e2lmKFAucHJldmVudERlZmF1bHQoKSxVLmN1cnJlbnQrKyxVLmN1cnJlbnQ9PT0xKVYoITApfSxbXSksdjE9RCgoUCk9PntpZihQLnByZXZlbnREZWZhdWx0KCksUC5kYXRhVHJhbnNmZXIpUC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0iY29weSJ9LFtdKSxDMD1EKChQKT0+e2lmKFAucHJldmVudERlZmF1bHQoKSxVLmN1cnJlbnQtLSxVLmN1cnJlbnQ8PTApVS5jdXJyZW50PTAsVighMSl9LFtdKSxCMD1rUSh7YnVuZGxlSWQ6SixpbmplY3RlZDpKMSxzb3VyY2U6Syxmb3JlZ3JvdW5kSXNJbmplY3RlZDphMX0pLEQxPUIwPT09InN0b3AiP3tsYWJlbDpuPT09InN0b3AiPyJTdG9wcGluZ+KApiI6IlN0b3AiLG9uQ2xpY2s6VjAsa2luZDoic3RvcCJ9OkIwPT09ImF0dGFjaCI/e2xhYmVsOm49PT0iaW5qZWN0Ij8iSW5qZWN0aW5n4oCmIjpgSW5qZWN0ICR7Sn1gLG9uQ2xpY2s6dDEsa2luZDoiYXR0YWNoIn06e2xhYmVsOm49PT0iaW5qZWN0Ij8iU3RhcnRpbmfigKYiOiJQbGF5IixvbkNsaWNrOnQxLGtpbmQ6InBsYXkifSx5MT1CMD09PSJzdG9wIj96fHxuIT09bnVsbDohSnx8enx8biE9PW51bGwsUTA9Sz09PSJwbGFjZWhvbGRlciIsRjA9Sz09PSJ3ZWJjYW0iLE4wPShLPT09ImltYWdlInx8Sz09PSJ2aWRlbyIpJiYhIU4sazA9RjA/Ty5maW5kKChQKT0+UC5pZD09PWopPy5uYW1lPz9qPz8iV2ViY2FtIjpudWxsLFgxPXo/InVwbG9hZGluZyI6TjA/ImZpbGUiOkYwPyJ3ZWJjYW0iOiJwbGFjZWhvbGRlciI7cmV0dXJuIFgoZTEse29wZW46USxvbk9wZW5DaGFuZ2U6Wixib2R5Q2xhc3NOYW1lOiJwdC0yLjUiLHN1bW1hcnlDbGFzc05hbWU6ImdyaWQgW2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvXzFmcl9hdXRvXSBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1sZWZ0IixzdW1tYXJ5OlgoWjEse2NoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIGxlYWRpbmctbm9uZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOiJDYW1lcmEifSksWChQUSx7c3RhdGU6QzF9KV19KSxjaGlsZHJlbjpYKCJkaXYiLHtvbkRyYWdFbnRlcjpQMCxvbkRyYWdPdmVyOnYxLG9uRHJhZ0xlYXZlOkMwLG9uRHJvcDp2MCxjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTIuNSIsY2hpbGRyZW46W1goInAiLHtjbGFzc05hbWU6Im0tMCB0ZXh0LVsxMHB4XSBsZWFkaW5nLVsxLjVdIHRleHQtd2hpdGUvNDUiLGNoaWxkcmVuOiJSZXBsYWNlcyB0aGUgc2ltdWxhdG9yJ3MgY2FtZXJhIGZlZWQgYnkgaW5qZWN0aW5nIGEgZHlsaWIgYXQgYXBwIGxhdW5jaCBhbmQgc3RyZWFtaW5nIGZyYW1lcyBpbnRvIHNoYXJlZCBtZW1vcnkuIFBpY2sgbWVkaWEgb3IgYSB3ZWJjYW0sIHRoZW4gUGxheSB0byBpbmplY3QgaW50byB0aGUgZm9yZWdyb3VuZCBhcHAuIn0pLFgoImlucHV0Iix7cmVmOkYsdHlwZToiZmlsZSIsYWNjZXB0OiJpbWFnZS8qLHZpZGVvLyoiLGNsYXNzTmFtZToiaGlkZGVuIixvbkNoYW5nZTpKMH0pLFgoImRpdiIse29uQ2xpY2s6KFApPT57aWYoIVEwKXJldHVybjtpZihQLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1jbGVhci1tZWRpYV0iKSlyZXR1cm47cTAoKX0sdGl0bGU6UTA/Ik5vIHNvdXJjZSBzZWxlY3RlZCDigJQgUGxheSB1c2VzIGEgdGVzdC1wYXR0ZXJuIGZlZWQuIENsaWNrIHRvIHBpY2sgYW4gaW1hZ2UvdmlkZW8sIG9yIGRyb3Agb25lIGhlcmUuIjpGMD9gU291cmNlOiAke2swfWA6YFNvdXJjZTogJHtOPz9LfWAsY2xhc3NOYW1lOlsicmVsYXRpdmUgbWluLWgtWzQ0cHhdIGZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yLjUgcHgtMy41IHB5LTIuNSByb3VuZGVkLVs3cHhdIHRleHQtY2VudGVyIHRyYW5zaXRpb24tW2JvcmRlci1jb2xvcixiYWNrZ3JvdW5kXSBkdXJhdGlvbi0xNTAiLFEwPyJiZy13aGl0ZS9bMC4wNF0gYm9yZGVyIGJvcmRlci1kYXNoZWQgYm9yZGVyLXdoaXRlLzEyIjoiYmctd2hpdGUvWzAuMDRdIGJvcmRlciBib3JkZXItd2hpdGUvOCIsTD8iIWJnLVtyZ2JhKDEwLDEzMiwyNTUsMC4wOCldICFib3JkZXItW3JnYmEoMTAsMTMyLDI1NSwwLjYpXSI6IiIsej8iY3Vyc29yLXByb2dyZXNzIjpRMD8iY3Vyc29yLXBvaW50ZXIiOiJjdXJzb3ItZGVmYXVsdCJdLmpvaW4oIiAiKSxjaGlsZHJlbjpbWCh3USx7bW9kZTpYMSxmaWxlTmFtZTpOLHdlYmNhbU5hbWU6azAsc291cmNlS2luZDpLfSksIVEwJiYheiYmWCgiYnV0dG9uIix7ImRhdGEtY2xlYXItbWVkaWEiOiEwLG9uQ2xpY2s6KFApPT57UC5zdG9wUHJvcGFnYXRpb24oKSxtMSgpfSxjbGFzc05hbWU6InNocmluay0wIHctNSBoLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgdGV4dC13aGl0ZS81NSBob3Zlcjp0ZXh0LXdoaXRlLzkwIGN1cnNvci1wb2ludGVyIHAtMCIsImFyaWEtbGFiZWwiOiJDbGVhciBzb3VyY2UiLHRpdGxlOiJDbGVhciDihpIgcGxhY2Vob2xkZXIiLGNoaWxkcmVuOlgoRzAse3NpemU6MTQsc3Ryb2tlV2lkdGg6Mn0pfSldfSksUTAmJiF6JiZYKERRLHt9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtc3RyZXRjaCBnYXAtMS41IixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSIsImRhdGEtY2FtZXJhLXNvdXJjZS1tZW51IjohMCxjaGlsZHJlbjpbWCgiYnV0dG9uIix7b25DbGljazooKT0+QygoUCk9PiFQKSxjbGFzc05hbWU6ImgtZnVsbCBtaW4taC1bMzZweF0gdy0xMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy10cmFuc3BhcmVudCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHRleHQtd2hpdGUvODUgcm91bmRlZC1bN3B4XSBjdXJzb3ItcG9pbnRlciBwLTAgaG92ZXI6Ymctd2hpdGUvWzAuMDZdIGhvdmVyOmJvcmRlci13aGl0ZS8yMCBob3Zlcjp0ZXh0LXdoaXRlIiwiYXJpYS1oYXNwb3B1cCI6Im1lbnUiLCJhcmlhLWV4cGFuZGVkIjpILHRpdGxlOks9PT0id2ViY2FtIj9gU291cmNlOiB3ZWJjYW0ke2o/YCAoJHtPLmZpbmQoKFApPT5QLmlkPT09aik/Lm5hbWU/P2p9KWA6IiJ9IOKAlCBjbGljayB0byBjaGFuZ2VgOmBTb3VyY2U6ICR7S30g4oCUIGNsaWNrIHRvIHBpY2sgbWVkaWEgb3Igd2ViY2FtYCwiYXJpYS1sYWJlbCI6IkNob29zZSBjYW1lcmEgc291cmNlIixjaGlsZHJlbjpYKHYyLHtzaXplOjIwLHN0cm9rZVdpZHRoOjJ9KX0pLEgmJlgoImRpdiIse3JvbGU6Im1lbnUiLGNsYXNzTmFtZToiYWJzb2x1dGUgdG9wLVtjYWxjKDEwMCUrNnB4KV0gbGVmdC0wIHotMTAgbWluLXctWzIwMHB4XSBmbGV4IGZsZXgtY29sIGdhcC1weCBwLTEgYmctcGFuZWwgYm9yZGVyIGJvcmRlci13aGl0ZS84IHJvdW5kZWQtWzdweF0gc2hhZG93LVswXzhweF8yNHB4X3JnYmEoMCwwLDAsMC40KV0iLGNoaWxkcmVuOltYKCJidXR0b24iLHtyb2xlOiJtZW51aXRlbSIsY2xhc3NOYW1lOiJ0ZXh0LWxlZnQgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgdGV4dC13aGl0ZS84NSB0ZXh0LVsxMnB4XSBweC0yLjUgcHktWzdweF0gcm91bmRlZC1tZCBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy13aGl0ZS9bMC4wNl0iLG9uQ2xpY2s6KCk9PntDKCExKSxxMCgpfSx0aXRsZToiUGljayBhbiBpbWFnZSBvciB2aWRlbyBmcm9tIGRpc2siLGNoaWxkcmVuOiJCcm93c2UgbWVkaWHigKYifSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJoLXB4IGJnLXdoaXRlLzggbXktMSJ9KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwbC0yLjUgcHItMiBwdC0xIHBiLVsycHhdIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTBweF0gdGV4dC13aGl0ZS80NSB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMDhlbV0iLGNoaWxkcmVuOnc/IkNhbWVyYXMgKGxvYWRpbmfigKYpIjpPLmxlbmd0aD09PTA/Ik5vIGNhbWVyYXMiOiJDYW1lcmFzIn0pLFgoImJ1dHRvbiIse29uQ2xpY2s6KFApPT57UC5zdG9wUHJvcGFnYXRpb24oKSxVMSgpfSxkaXNhYmxlZDp3LGNsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdy1bMjJweF0gaC1bMjJweF0gYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcm91bmRlZC1bNXB4XSB0ZXh0LXdoaXRlLzU1IGhvdmVyOnRleHQtd2hpdGUvOTAgY3Vyc29yLXBvaW50ZXIgcC0wIGRpc2FibGVkOm9wYWNpdHktNTAiLCJhcmlhLWxhYmVsIjoiUmVmcmVzaCBjYW1lcmFzIix0aXRsZToiUmVmcmVzaCBjYW1lcmFzIixjaGlsZHJlbjpYKGkwLHtzaXplOjEzLHN0cm9rZVdpZHRoOjJ9KX0pXX0pLE8ubWFwKChQKT0+e2xldCBsPUs9PT0id2ViY2FtIiYmaj09PVAuaWQ7cmV0dXJuIFgoImJ1dHRvbiIse3JvbGU6Im1lbnVpdGVtIixjbGFzc05hbWU6WyJ0ZXh0LWxlZnQgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgdGV4dC1bMTJweF0gcHgtMi41IHB5LVs3cHhdIHJvdW5kZWQtbWQgY3Vyc29yLXBvaW50ZXIgaG92ZXI6Ymctd2hpdGUvWzAuMDZdIixsPyIhYmctd2hpdGUvWzAuMTJdICF0ZXh0LXdoaXRlIjoidGV4dC13aGl0ZS84NSJdLmpvaW4oIiAiKSxvbkNsaWNrOigpPT5fMChQKSx0aXRsZTpQLm5hbWUsY2hpbGRyZW46UC5uYW1lfSxQLmlkKX0pXX0pXX0pLFgoImJ1dHRvbiIse29uQ2xpY2s6RDEub25DbGljayxkaXNhYmxlZDp5MSxjbGFzc05hbWU6WyJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEuNSBweS0yIHB4LTIuNSBib3JkZXItbm9uZSByb3VuZGVkLVs3cHhdIHRleHQtWzEycHhdIGZvbnQtc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgZGlzYWJsZWQ6b3BhY2l0eS01MCBtaW4taC1bMzZweF0iLEQxLmtpbmQ9PT0ic3RvcCI/ImJnLXdoaXRlL1swLjE2XSB0ZXh0LXdoaXRlIGVuYWJsZWQ6aG92ZXI6Ymctd2hpdGUvWzAuMjJdIjoiYmctc3VjY2Vzcy1lbWVyYWxkIHRleHQtWyMwNjIwMThdIGVuYWJsZWQ6aG92ZXI6YnJpZ2h0bmVzcy1bMS4wOF0iXS5qb2luKCIgIiksdGl0bGU6RDEua2luZD09PSJzdG9wIj8iU3RvcCB0aGUgY2FtZXJhIGhlbHBlciBhbmQgdGVybWluYXRlIGluamVjdGVkIGFwcHMiOkQxLmtpbmQ9PT0iYXR0YWNoIj9gSW5qZWN0ICR7Sn0gc28gaXQgam9pbnMgdGhlIGNhbWVyYSBmZWVkYDohSj8iQnJpbmcgYW4gYXBwIHRvIHRoZSBmb3JlZ3JvdW5kIGZpcnN0IjoiU3RhcnQ6IGluamVjdCB0aGUgZHlsaWIgYW5kIGxhdW5jaCB0aGUgZm9yZWdyb3VuZCBhcHAgd2l0aCB0aGUgY2hvc2VuIHNvdXJjZSIsImFyaWEtcHJlc3NlZCI6RDEua2luZD09PSJzdG9wIiwiYXJpYS1sYWJlbCI6RDEua2luZD09PSJzdG9wIj8iU3RvcCI6IlBsYXkiLGNoaWxkcmVuOltEMS5raW5kPT09InN0b3AiP1godTIse30pOlgocDIse30pLFgoInNwYW4iLHtjaGlsZHJlbjpEMS5raW5kPT09InN0b3AiPyJTdG9wIjpEMS5raW5kPT09ImF0dGFjaCI/IkluamVjdCI6IlBsYXkifSldfSksWCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOmMxLGRpc2FibGVkOm4xLGNsYXNzTmFtZTpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdy0xMCBtaW4taC1bMzZweF0gYm9yZGVyIHJvdW5kZWQtWzdweF0gZm9udC1baW5oZXJpdF0gZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgYWN0aXZlOnNjYWxlLVswLjk3XSAke209PT0ib24iPyJiZy13aGl0ZSBib3JkZXItd2hpdGUgdGV4dC1bIzBhMGEwY10gY3Vyc29yLXBvaW50ZXIgZW5hYmxlZDpob3ZlcjpiZy13aGl0ZS9bMC44OF0gZW5hYmxlZDpob3Zlcjpib3JkZXItd2hpdGUvWzAuODhdIGVuYWJsZWQ6aG92ZXI6dGV4dC1bIzBhMGEwY10iOiJiZy13aGl0ZS9bMC4wNF0gYm9yZGVyLXdoaXRlLzggdGV4dC13aGl0ZS84NSBjdXJzb3ItcG9pbnRlciBlbmFibGVkOmhvdmVyOmJnLXdoaXRlL1swLjA5XSBlbmFibGVkOmhvdmVyOmJvcmRlci1bcmdiYSgyNTUsMjU1LDI1NSwwLjE4KV0gZW5hYmxlZDpob3Zlcjp0ZXh0LXdoaXRlIn1gLCJhcmlhLWxhYmVsIjpgTWlycm9yOiAke219IOKAlCB0YXAgdG8gdG9nZ2xlYCx0aXRsZTpuMT8iTWlycm9yIHRvZ2dsZSBhdmFpbGFibGUgb25jZSBhIHNvdXJjZSBpcyBzdHJlYW1pbmciOmBNaXJyb3I6ICR7bX0g4oCUIGNsaWNrIHRvIHRvZ2dsZWAsImFyaWEtcHJlc3NlZCI6bT09PSJvbiIsY2hpbGRyZW46WCh4Mix7c2l6ZToyMCxzdHJva2VXaWR0aDoyLGZpbGw6bT09PSJvbiI/ImN1cnJlbnRDb2xvciI6Im5vbmUifSl9KV19KSxhJiZYKFo0LHtraW5kOiJ3YXJuaW5nIixtZXNzYWdlOmF9KSxkJiZYKFo0LHtraW5kOiJlcnJvciIsbWVzc2FnZTpkfSldfSl9KX12YXIgcTQ9NTAwO2Z1bmN0aW9uIEc0KHt1ZGlkOiQsZXZlbnRzRW5kcG9pbnQ6Sn0pe2xldFtRLFpdPUEoITEpLFtLLFldPUEoW10pLFtxLEddPUEoITEpLE49VDEoKCk9Pko/P2Ake2YxKCJhcGkvZXZlbnQtbG9nL2V2ZW50cyIpfT9kZXZpY2U9JHtlbmNvZGVVUklDb21wb25lbnQoJCl9YCxbSiwkXSk7YigoKT0+e0coITEpLFkoW10pO2xldCBMPXkwKE4pO3JldHVybiBMLm9ubWVzc2FnZT0oe2RhdGE6Vn0pPT57dHJ5e2xldCBVPUpTT04ucGFyc2UoVik7aWYoRyghMSksQXJyYXkuaXNBcnJheShVLmV2ZW50cykpWShVLmV2ZW50cy5zbGljZSgtcTQpKTtlbHNlIGlmKFUuZXZlbnQpWSgoeik9PntyZXR1cm5bLi4uei5maWx0ZXIoKEgpPT5ILmlkIT09VS5ldmVudC5pZCksVS5ldmVudF0uc2xpY2UoLXE0KX0pfWNhdGNoe319LEwub25lcnJvcj0oKT0+RyghMCksKCk9PkwuY2xvc2UoKX0sW05dKTtsZXQgQj1UMSgoKT0+Sy5zbGljZSgpLnJldmVyc2UoKSxbS10pO3JldHVybiBYKGUxLHtvcGVuOlEsb25PcGVuQ2hhbmdlOlosImRhdGEtZXZlbnQtbG9nIjoiIixzdW1tYXJ5Q2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b18xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbGVmdCIsc3VtbWFyeTpYKFoxLHtjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzUwIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wOGVtXSBsZWFkaW5nLW5vbmUiLGNoaWxkcmVuOiJFdmVudCBMb2cifSksWCgic3BhbiIse30pLFgoInNwYW4iLHtjbGFzc05hbWU6InJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci13aGl0ZS84IGJnLXdoaXRlL1swLjA0XSBweC0xLjUgcHktWzNweF0gdGV4dC1bMTBweF0gZm9udC1tb25vIHRleHQtd2hpdGUvNjAiLGNoaWxkcmVuOksubGVuZ3RofSldfSksY2hpbGRyZW46Qi5sZW5ndGg9PT0wP1goImRpdiIse3JvbGU6InN0YXR1cyIsImFyaWEtbGl2ZSI6InBvbGl0ZSIsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS00IHRleHQtWzEycHhdIHRleHQtd2hpdGUvNDUiLGNoaWxkcmVuOnE/IkRpc2Nvbm5lY3RlZCI6Ik5vIGV2ZW50cyB5ZXQifSk6WCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IG1heC1oLVszMjBweF0gZmxleC1jb2wgZ2FwLTEgb3ZlcmZsb3cteS1hdXRvIHB5LTAuNSBbc2Nyb2xsYmFyLXdpZHRoOnRoaW5dIixyb2xlOiJsaXN0IixjaGlsZHJlbjpCLm1hcCgoTCk9PlgoVFEse2V2ZW50Okx9LEwuaWQpKX0pfSl9ZnVuY3Rpb24gVFEoe2V2ZW50OiR9KXtsZXQgSj1JUSgkLnRpbWVzdGFtcCksUT1bJC5zb3VyY2UsJC5raW5kLCQuYWN0aW9uXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIC8gIiksWj0kLm1zZz8/JC5zdW1tYXJ5LEs9JC5zdGF0dXM9PT0iZXJyb3IiPyJib3JkZXItWyNmZjQ1M2FdLzUwIGJnLVsjZmY0NTNhXS8xMCB0ZXh0LVsjZmZiM2FkXSI6ImJvcmRlci13aGl0ZS84IGJnLXdoaXRlL1swLjA0XSB0ZXh0LXdoaXRlLzUwIjtyZXR1cm4gWCgiZGl2Iix7cm9sZToibGlzdGl0ZW0iLHRpdGxlOlEsY2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy1bNTZweF8xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtbWQgcHgtMS41IHB5LTEuNSB0ZXh0LVsxMnB4XSBsZWFkaW5nLXRpZ2h0IGhvdmVyOmJnLXdoaXRlL1swLjA1XSIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbW9ubyB0ZXh0LVsxMHB4XSB0ZXh0LXdoaXRlLzQ1IixjaGlsZHJlbjpKfSksWCgic3BhbiIse2NsYXNzTmFtZToibWluLXctMCIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6ImJsb2NrIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtd2hpdGUvOTAiLGNoaWxkcmVuOlp9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJtdC0wLjUgYmxvY2sgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgZm9udC1tb25vIHRleHQtWzEwcHhdIHRleHQtd2hpdGUvNDAiLGNoaWxkcmVuOlF9KV19KSwkLnN0YXR1cz9YKCJzcGFuIix7Y2xhc3NOYW1lOmByb3VuZGVkLW1kIGJvcmRlciBweC0xLjUgcHktWzNweF0gdGV4dC1bMTBweF0gZm9udC1tb25vICR7S31gLGNoaWxkcmVuOiQuc3RhdHVzfSk6bnVsbF19KX1mdW5jdGlvbiBJUSgkKXtsZXQgSj1uZXcgRGF0ZSgkKTtpZihOdW1iZXIuaXNOYU4oSi5nZXRUaW1lKCkpKXJldHVybiIiO3JldHVybiBKLnRvTG9jYWxlVGltZVN0cmluZyhbXSx7aG91cjoiMi1kaWdpdCIsbWludXRlOiIyLWRpZ2l0IixzZWNvbmQ6IjItZGlnaXQifSl9dmFyIEVRPTYwLHlRPTgwMDA7ZnVuY3Rpb24gVjQoJCl7bGV0W0osUV09QShudWxsKSxbWixLXT1BKFtdKSxbWSxxXT1BKCExKSxbRyxOXT1BKCExKSxCPVQoMCk7cmV0dXJuIGIoKCk9PntRKG51bGwpLEsoW10pLHEoITEpLE4oITEpLEIuY3VycmVudD0wO2xldCBMPXkwKCQpO0wub25tZXNzYWdlPSh7ZGF0YTpVfSk9Pnt0cnl7bGV0IHo9SlNPTi5wYXJzZShVKTtpZihxKCExKSwic2NoZW1hVmVyc2lvbiJpbiB6KVEoeik7ZWxzZSBpZigidCJpbiB6KXtsZXQgaz16O0IuY3VycmVudD1EYXRlLm5vdygpLE4oITEpLEsoKEgpPT57bGV0IEM9Wy4uLkhdLnJldmVyc2UoKS5maW5kKChPKT0+Ty5idW5kbGVJZCE9PW51bGwpPy5idW5kbGVJZD8/bnVsbDtyZXR1cm5bLi4uQyE9PW51bGwmJmsuYnVuZGxlSWQhPT1udWxsJiZDIT09ay5idW5kbGVJZD9bXTpILGtdLnNsaWNlKC1FUSl9KX19Y2F0Y2h7fX0sTC5vbmVycm9yPSgpPT5xKCEwKTtsZXQgVj1zZXRJbnRlcnZhbCgoKT0+e2lmKEIuY3VycmVudD4wJiZEYXRlLm5vdygpLUIuY3VycmVudD55USlOKCEwKX0sMTAwMCk7cmV0dXJuKCk9PntMLmNsb3NlKCksY2xlYXJJbnRlcnZhbChWKX19LFskXSkse21ldGE6SixsYXRlc3Q6Wi5hdCgtMSk/P251bGwsaGlzdG9yeTpaLGVycm9yZWQ6WSxzdGFsZTpHfX1mdW5jdGlvbiBlMygkKXtyZXR1cm5gJHtNYXRoLnJvdW5kKCQpfSVgfWZ1bmN0aW9uICQ4KCQpe2xldCBKPSQvMTA0ODU3NjtyZXR1cm4gSj49MTAyND9gJHsoSi8xMDI0KS50b0ZpeGVkKDEpfSBHQmA6YCR7TWF0aC5yb3VuZChKKX0gTUJgfWZ1bmN0aW9uIEI0KCQsSixRKXtpZigkLmxlbmd0aDwyKXJldHVybiIiO2xldCBaPU1hdGgubWF4KC4uLiQsMSksSz1KLygkLmxlbmd0aC0xKSxZPSQubWFwKChHLE4pPT4oe3g6TipLLHk6US1HL1oqUX0pKSxxPWBNJHtZWzBdLngudG9GaXhlZCgxKX0sJHtZWzBdLnkudG9GaXhlZCgxKX1gO2ZvcihsZXQgRz0wO0c8WS5sZW5ndGgtMTtHKyspe2xldCBOPVlbRy0xXT8/WVtHXSxCPVlbR10sTD1ZW0crMV0sVj1ZW0crMl0/P0wsVT1NYXRoLm1pbihCLnksTC55KSx6PU1hdGgubWF4KEIueSxMLnkpLGs9KEkpPT5NYXRoLm1pbih6LE1hdGgubWF4KFUsSSkpLEg9Qi54KyhMLngtTi54KS82LEM9ayhCLnkrKEwueS1OLnkpLzYpLEY9TC54LShWLngtQi54KS82LE89ayhMLnktKFYueS1CLnkpLzYpO3ErPWAgQyR7SC50b0ZpeGVkKDEpfSwke0MudG9GaXhlZCgxKX0gJHtGLnRvRml4ZWQoMSl9LCR7Ty50b0ZpeGVkKDEpfSAke0wueC50b0ZpeGVkKDEpfSwke0wueS50b0ZpeGVkKDEpfWB9cmV0dXJuIHF9dmFyIEo4PTk2LGQ1PTI0O2Z1bmN0aW9uIEw0KHt1ZGlkOiQsY3VycmVudEFwcEJ1bmRsZUlkOkosbWV0cmljc0VuZHBvaW50OlF9KXtsZXQgWj1UMSgoKT0+UT8/YCR7ZjEoIm1ldHJpY3MiKX0/ZGV2aWNlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCQpfWAsW1EsJF0pLHttZXRhOkssbGF0ZXN0OlksaGlzdG9yeTpxLGVycm9yZWQ6RyxzdGFsZTpOfT1WNChaKSxbQixMXT1BKCEwKSxWPVkhPT1udWxsJiZZLmJ1bmRsZUlkIT09bnVsbCYmIUcmJiFOLFU9SiE9bnVsbCYmSi5zdGFydHNXaXRoKCJjb20uYXBwbGUuIiksej1HPyJUaGUgbWV0cmljcyBzdHJlYW0gZGlzY29ubmVjdGVkIjpVPyJPbmx5IHlvdXIgYXBwIGlzIG1lYXN1cmVkOyBhIHN5c3RlbSBhcHAgaXMgaW4gdGhlIGZvcmVncm91bmQiOiJXYWl0aW5nIGZvciBDUFUgLyBtZW1vcnkgZGF0YSI7cmV0dXJuIFgoZTEse29wZW46Qixvbk9wZW5DaGFuZ2U6TCxzdW1tYXJ5Q2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b18xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbGVmdCIsYm9keUNsYXNzTmFtZTpWP3ZvaWQgMDoiaGlkZGVuIixzdW1tYXJ5OlgoWjEse2NoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIGxlYWRpbmctbm9uZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOiJBY3Rpdml0eSJ9KSxWPyFCJiZYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzQwIHRhYnVsYXItbnVtcyB0ZXh0LXJpZ2h0IixjaGlsZHJlbjpbZTMoWS5jcHVQY3QpLCIgwrcgIiwkOChZLm1lbUJ5dGVzKV19KTpYKCJzcGFuIix7ImRhdGEtbWV0cmljcy13YXJuaW5nIjohMCxyb2xlOiJzdGF0dXMiLGNsYXNzTmFtZToiZ3JvdXAgcmVsYXRpdmUganVzdGlmeS1zZWxmLWVuZCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOltYKHAwLHsiYXJpYS1oaWRkZW4iOiJ0cnVlIixjbGFzc05hbWU6InctMy41IGgtMy41IHRleHQtYW1iZXItNDAwIn0pLFgoInNwYW4iLHtjbGFzc05hbWU6InNyLW9ubHkiLGNoaWxkcmVuOnp9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHJpZ2h0LTAgdG9wLWZ1bGwgei0xMCBtdC0xIGhpZGRlbiB3LW1heCBtYXgtdy1bMjIwcHhdIHJvdW5kZWQtbWQgYmctYmxhY2svOTAgcHgtMiBweS0xIHRleHQtWzExcHhdIGxlYWRpbmctc251ZyB0ZXh0LXdoaXRlLzkwIHNoYWRvdy1sZyBncm91cC1ob3ZlcjpibG9jayIsY2hpbGRyZW46en0pXX0pXX0pLGNoaWxkcmVuOlY/WChaMSx7Y2hpbGRyZW46W1goTjQse2xhYmVsOiJDUFUiLHZhbHVlOmUzKFkuY3B1UGN0KSxoaW50Oks/YCR7Sy5ob3N0Q29yZXN9IGNvcmVzYDp2b2lkIDAsdmFsdWVzOnEubWFwKChrKT0+ay5jcHVQY3QpLGNsYXNzTmFtZToidGV4dC1lbWVyYWxkLTQwMCJ9KSxYKE40LHtsYWJlbDoiTWVtb3J5Iix2YWx1ZTokOChZLm1lbUJ5dGVzKSx2YWx1ZXM6cS5tYXAoKGspPT5rLm1lbUJ5dGVzKSxjbGFzc05hbWU6InRleHQtc2t5LTQwMCJ9KV19KTpudWxsfSl9ZnVuY3Rpb24gTjQoe2xhYmVsOiQsdmFsdWU6SixoaW50OlEsdmFsdWVzOlosY2xhc3NOYW1lOkt9KXtyZXR1cm4gWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0xIixjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWJhc2VsaW5lIGp1c3RpZnktYmV0d2VlbiIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6InRleHQtd2hpdGUvNTAgdGV4dC1bMTFweF0iLGNoaWxkcmVuOiR9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0YWJ1bGFyLW51bXMgdGV4dC1bMTFweF0iLGNoaWxkcmVuOltKLFEmJlgoInNwYW4iLHtjbGFzc05hbWU6InRleHQtd2hpdGUvMzAgdGV4dC1bMTFweF0gbWwtMS41IixjaGlsZHJlbjpRfSldfSldfSksWChiUSx7dmFsdWVzOlosY2xhc3NOYW1lOkt9KV19KX1mdW5jdGlvbiBiUSh7dmFsdWVzOiQsY2xhc3NOYW1lOkp9KXtsZXQgUT1CNCgkLEo4LGQ1KSxaPVE/YCR7UX0gTCR7Sjh9LCR7ZDV9IEwwLCR7ZDV9IFpgOiIiO3JldHVybiBYKCJzdmciLHt2aWV3Qm94OmAwIDAgJHtKOH0gJHtkNX1gLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUiLGNsYXNzTmFtZTpgdy1mdWxsIGgtOCAke0p9YCxjaGlsZHJlbjpbWCgicGF0aCIse2Q6WixmaWxsOiJjdXJyZW50Q29sb3IiLG9wYWNpdHk6MC4xMixzdHJva2U6Im5vbmUifSksWCgicGF0aCIse2Q6USxmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6MS41LHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIn0pXX0pfXZhciByMj1bImV4dHJhLXNtYWxsIiwic21hbGwiLCJtZWRpdW0iLCJsYXJnZSIsImV4dHJhLWxhcmdlIiwiZXh0cmEtZXh0cmEtbGFyZ2UiLCJleHRyYS1leHRyYS1leHRyYS1sYXJnZSJdLFNRPTI1MCx4UT17YXBwZWFyYW5jZToibGlnaHQiLCJsaXF1aWQtZ2xhc3MiOiJjbGVhciIsImNvbG9yLWZpbHRlciI6Im5vbmUiLCJ0ZXh0LXNpemUiOiJsYXJnZSIsInJlZHVjZS1tb3Rpb24iOiJvZmYiLCJpbmNyZWFzZS1jb250cmFzdCI6Im9mZiIsInNob3ctYm9yZGVycyI6Im9mZiIsInJlZHVjZS10cmFuc3BhcmVuY3kiOiJvZmYiLHZvaWNlb3Zlcjoib2ZmIn0sUTg9e2FwcGVhcmFuY2U6W3t2YWx1ZToibGlnaHQiLGxhYmVsOiJMaWdodCJ9LHt2YWx1ZToiZGFyayIsbGFiZWw6IkRhcmsifV0sImxpcXVpZC1nbGFzcyI6W3t2YWx1ZToiY2xlYXIiLGxhYmVsOiJDbGVhciJ9LHt2YWx1ZToidGludGVkIixsYWJlbDoiVGludGVkIn1dLCJjb2xvci1maWx0ZXIiOlt7dmFsdWU6Im5vbmUiLGxhYmVsOiJOb25lIn0se3ZhbHVlOiJyZWQtZ3JlZW4iLGxhYmVsOiJSZWQvR3JlZW4gKFByb3Rhbm9waWEpIn0se3ZhbHVlOiJncmVlbi1yZWQiLGxhYmVsOiJHcmVlbi9SZWQgKERldXRlcmFub3BpYSkifSx7dmFsdWU6ImJsdWUteWVsbG93IixsYWJlbDoiQmx1ZS9ZZWxsb3cgKFRyaXRhbm9waWEpIn0se3ZhbHVlOiJncmF5c2NhbGUiLGxhYmVsOiJHcmF5c2NhbGUifV19LGpRPVt7a2V5OiJyZWR1Y2UtbW90aW9uIixsYWJlbDoiUmVkdWNlIE1vdGlvbiJ9LHtrZXk6ImluY3JlYXNlLWNvbnRyYXN0IixsYWJlbDoiSW5jcmVhc2UgQ29udHJhc3QifSx7a2V5OiJzaG93LWJvcmRlcnMiLGxhYmVsOiJTaG93IEJvcmRlcnMifSx7a2V5OiJyZWR1Y2UtdHJhbnNwYXJlbmN5IixsYWJlbDoiUmVkdWNlIFRyYW5zcGFyZW5jeSJ9LHtrZXk6InZvaWNlb3ZlciIsbGFiZWw6IlZvaWNlT3ZlciJ9XTtmdW5jdGlvbiBZMCh7aWNvbjokLGxhYmVsOkosY2hpbGRyZW46UX0pe3JldHVybiBYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBtaW4taC1bMzBweF0iLCJkYXRhLXNldHRpbmctcm93IjpKLGNoaWxkcmVuOltYKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlLzkwIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToiZmxleCBzaXplLVsxOHB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSIsY2hpbGRyZW46JH0pLEpdfSksWCgic3BhbiIse2NsYXNzTmFtZToiZmxleCBtaW4tdy0wIGp1c3RpZnktZW5kIixjaGlsZHJlbjpRfSldfSl9ZnVuY3Rpb24gdlEoe3ZhbHVlOiQsZGlzYWJsZWQ6SixvbkNoYW5nZTpRfSl7bGV0W1osS109QShudWxsKSxZPVQobnVsbCkscT1UKG51bGwpLEc9RCgoQyk9PntpZihxLmN1cnJlbnQ9PT1DKXJldHVybjtxLmN1cnJlbnQ9QyxRKEMpfSxbUV0pLE49RCgoQyk9PntpZihLKEMpLFkuY3VycmVudCljbGVhclRpbWVvdXQoWS5jdXJyZW50KTtZLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+RyhDKSxTUSl9LFtHXSksQj1EKCgpPT57aWYoWS5jdXJyZW50KWNsZWFyVGltZW91dChZLmN1cnJlbnQpLFkuY3VycmVudD1udWxsO0soKEMpPT57aWYoQyE9PW51bGwpRyhDKTtyZXR1cm4gbnVsbH0pLHEuY3VycmVudD1udWxsfSxbR10pLEw9cjIubGVuZ3RoLTEsVj1aPz8kLFU9YCR7Vi9MKjEwMH0lYDtyZXR1cm4gWCgic3BhbiIse2NsYXNzTmFtZToiZmxleCB3LVsxMjBweF0gbWluLXctMCBmbGV4LWNvbCIsY2hpbGRyZW46W1goImlucHV0Iix7dHlwZToicmFuZ2UiLCJhcmlhLWxhYmVsIjoiVGV4dCBTaXplIixtaW46MCxtYXg6TCxzdGVwOjEsdmFsdWU6VixkaXNhYmxlZDpKLG9uQ2hhbmdlOihDKT0+TihOdW1iZXIoQy50YXJnZXQudmFsdWUpKSxvblBvaW50ZXJVcDpCLG9uS2V5VXA6QixvbkJsdXI6QixzdHlsZTp7Ii0tc2xpZGVyLWZpbGwiOlUsIi0tc2xpZGVyLWZpbGwtY29sb3IiOko/InJnYmEoMjU1LDI1NSwyNTUsMC4zKSI6IiMwYTg0ZmYifSxjbGFzc05hbWU6YGgtWzEzcHhdIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1mdWxsIGJnLXRyYW5zcGFyZW50IG91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOltvdXRsaW5lOjEuNXB4X3NvbGlkX3JnYmEoMTAsMTMyLDI1NSwwLjU1KV0gZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC00ICR7Sj8iY3Vyc29yLWRlZmF1bHQiOiJjdXJzb3ItcG9pbnRlciJ9ICR7IlsmOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja106aC1bNHB4XSBbJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2tdOnJvdW5kZWQtZnVsbCBbJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2tdOltiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0b19yaWdodCx2YXIoLS1zbGlkZXItZmlsbC1jb2xvcilfdmFyKC0tc2xpZGVyLWZpbGwpLHJnYmEoMjU1LDI1NSwyNTUsMC4yMilfdmFyKC0tc2xpZGVyLWZpbGwpKV0gWyY6Oi1tb3otcmFuZ2UtdHJhY2tdOmgtWzRweF0gWyY6Oi1tb3otcmFuZ2UtdHJhY2tdOnJvdW5kZWQtZnVsbCBbJjo6LW1vei1yYW5nZS10cmFja106Ymctd2hpdGUvMjAgWyY6Oi1tb3otcmFuZ2UtcHJvZ3Jlc3NdOmgtWzRweF0gWyY6Oi1tb3otcmFuZ2UtcHJvZ3Jlc3NdOnJvdW5kZWQtZnVsbCBbJjo6LW1vei1yYW5nZS1wcm9ncmVzc106YmctW3ZhcigtLXNsaWRlci1maWxsLWNvbG9yKV0ifSAkeyJbJjo6LXdlYmtpdC1zbGlkZXItdGh1bWJdOmFwcGVhcmFuY2Utbm9uZSBbJjo6LXdlYmtpdC1zbGlkZXItdGh1bWJdOnNpemUtWzEzcHhdIFsmOjotd2Via2l0LXNsaWRlci10aHVtYl06cm91bmRlZC1mdWxsIFsmOjotd2Via2l0LXNsaWRlci10aHVtYl06Ymctd2hpdGUgWyY6ZGlzYWJsZWQ6Oi13ZWJraXQtc2xpZGVyLXRodW1iXTpiZy13aGl0ZS81MCBbJjo6LXdlYmtpdC1zbGlkZXItdGh1bWJdOnNoYWRvdy1bMF8xcHhfM3B4X3JnYmEoMCwwLDAsMC40NSldIFsmOjotd2Via2l0LXNsaWRlci10aHVtYl06LW10LVs0LjVweF0gWyY6Oi1tb3otcmFuZ2UtdGh1bWJdOnNpemUtWzEzcHhdIFsmOjotbW96LXJhbmdlLXRodW1iXTpyb3VuZGVkLWZ1bGwgWyY6Oi1tb3otcmFuZ2UtdGh1bWJdOmJvcmRlci1ub25lIFsmOjotbW96LXJhbmdlLXRodW1iXTpiZy13aGl0ZSBbJjpkaXNhYmxlZDo6LW1vei1yYW5nZS10aHVtYl06Ymctd2hpdGUvNTAifWB9KSxYKCJzcGFuIix7ImFyaWEtaGlkZGVuIjohMCxjbGFzc05hbWU6InBvaW50ZXItZXZlbnRzLW5vbmUgbXQtWzNweF0gZmxleCBqdXN0aWZ5LWJldHdlZW4gcHgtWzUuNXB4XSIsY2hpbGRyZW46cjIubWFwKChDKT0+WCgic3BhbiIse2NsYXNzTmFtZToic2l6ZS1bMnB4XSByb3VuZGVkLWZ1bGwgYmctd2hpdGUvNDAifSxDKSl9KV19KX1mdW5jdGlvbiBIMCh7bGFiZWw6JCx2YWx1ZTpKLG9wdGlvbnM6USxkaXNhYmxlZDpaLG9uQ2hhbmdlOkt9KXtyZXR1cm4gWChwNSx7bGFiZWw6JCx2YWx1ZTpKLG9wdGlvbnM6USxkaXNhYmxlZDpaLG9uQ2hhbmdlOkssY2xhc3NOYW1lOiJiZy13aGl0ZS9bMC4wNl0gYm9yZGVyIGJvcmRlci13aGl0ZS8xMCByb3VuZGVkLW1kIHRleHQtd2hpdGUvOTAgdGV4dC1bMTJweF0gcHktMC41IHB4LTIgbWluLXctMCBtYXgtdy1bMTUwcHhdIGRpc2FibGVkOnRleHQtd2hpdGUvNDAifSl9dmFyIG8yPXthcHBlYXJhbmNlOlgoInN2ZyIse3dpZHRoOiIxNCIsaGVpZ2h0OiIxNCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltYKCJwYXRoIix7ZDoiTTEyIDJ2MiJ9KSxYKCJwYXRoIix7ZDoiTTE0LjgzNyAxNi4zODVhNiA2IDAgMSAxLTcuMjIzLTcuMjIyYy42MjQtLjE0Ny45Ny42Ni43MTUgMS4yNDhhNCA0IDAgMCAwIDUuMjYgNS4yNTljLjU4OS0uMjU1IDEuMzk2LjA5IDEuMjQ4LjcxNSJ9KSxYKCJwYXRoIix7ZDoiTTE2IDEyYTQgNCAwIDAgMC00LTQifSksWCgicGF0aCIse2Q6Im0xOSA1LTEuMjU2IDEuMjU2In0pLFgoInBhdGgiLHtkOiJNMjAgMTJoMiJ9KV19KSxnbGFzczpYKCJzdmciLHt3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHZpZXdCb3g6IjAgMCAyMjAgMjIwIixmaWxsOiJjdXJyZW50Q29sb3IiLHN0cm9rZToibm9uZSIsY2hpbGRyZW46W1goInBhdGgiLHtkOiJNMTUyIDE4M1YxOTVIMTAwVjE4M0gxNTJaTTE5NiAxMzlWMTI2QzE5NiAxMDEuNjk5IDE3Ni4zMDEgODIgMTUyIDgySDEwMEM3NS42OTk1IDgyIDU2IDEwMS42OTkgNTYgMTI2VjEzOUM1NiAxNjMuMzAxIDc1LjY5OTUgMTgzIDEwMCAxODNWMTk1TDk5LjI3NjQgMTk0Ljk5NUM2OC45MjI4IDE5NC42MTEgNDQuMzg5MyAxNzAuMDc3IDQ0LjAwNDkgMTM5LjcyNEw0NCAxMzlWMTI2QzQ0IDk1LjA3MjEgNjkuMDcyMSA3MCAxMDAgNzBIMTUyQzE4Mi45MjggNzAgMjA4IDk1LjA3MjEgMjA4IDEyNlYxMzlMMjA3Ljk5NSAxMzkuNzI0QzIwNy42MTEgMTcwLjA3NyAxODMuMDc3IDE5NC42MTEgMTUyLjcyNCAxOTQuOTk1TDE1MiAxOTVWMTgzQzE3Ni4zMDEgMTgzIDE5NiAxNjMuMzAxIDE5NiAxMzlaIn0pLFgoInBhdGgiLHtkOiJNMTM2IDI1QzE0Ny4wNDYgMjUgMTU2IDMzLjk1NDMgMTU2IDQ1VjcwSDE0M1Y0NUMxNDMgNDEuMTM0IDEzOS44NjYgMzggMTM2IDM4SDQxQzM3LjEzNCAzOCAzNCA0MS4xMzQgMzQgNDVWMTQwQzM0IDE0My44NjYgMzcuMTM0IDE0NyA0MSAxNDdINDQuODYwNEM0NS42NDg3IDE1MS41MzYgNDYuOTYzNCAxNTUuODkxIDQ4Ljc0MDIgMTYwSDQxTDQwLjQ4MzQgMTU5Ljk5M0MyOS44NDgxIDE1OS43MjQgMjEuMjc2NSAxNTEuMTUyIDIxLjAwNjggMTQwLjUxN0wyMSAxNDBWNDVDMjEgMzMuOTU0MyAyOS45NTQzIDI1IDQxIDI1SDEzNloifSksWCgicGF0aCIse2Q6Ik0xNTYuMTk5IDE0MEMxNTYuMTk5IDE1MC44NzMgMTQ3LjUyMyAxNTkuNzE5IDEzNi43MTYgMTU5Ljk5M0wxMzYuMTk5IDE2MEg4MC45MTdDNzcuOTQ2MSAxNjAgNzYuMTYzOSAxNjMuMyA3Ny43OTMgMTY1Ljc4NEM3OS4yNDUxIDE2Ny45OTkgNzYuMTY0NyAxNzAuMzUzIDc0LjQwOTQgMTY4LjM3TDczLjYwNTkgMTY3LjQ2MkM2OS4zNDk3IDE2Mi42NTQgNjcgMTU2LjQ1NSA2NyAxNTAuMDM0QzY3IDE0OC4zNTggNjguMzU4MyAxNDcgNzAuMDMzOSAxNDdIMTM2LjE5OUMxNDAuMDY1IDE0NyAxNDMuMTk5IDE0My44NjYgMTQzLjE5OSAxNDBWOTYuOTk1NUMxNDMuMTk5IDkzLjk4MjIgMTQxLjM1NCA5MS4yNzYzIDEzOC41NDkgOTAuMTc2MUMxMzcuMzg5IDg5LjcyMTUgMTM3LjcxNSA4OCAxMzguOTYgODhMMTQzLjE5OSA4OEMxNTAuMzc5IDg4IDE1Ni4xOTkgOTMuODIwMyAxNTYuMTk5IDEwMVYxNDBaIn0pXX0pLGZpbHRlcjpYKCJzdmciLHt3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbWCgicGF0aCIse2Q6Ik0xMSAxN2E0IDQgMCAwIDEtOCAwVjVhMiAyIDAgMCAxIDItMmg0YTIgMiAwIDAgMSAyIDJaIn0pLFgoInBhdGgiLHtkOiJNMTYuNyAxM0gxOWEyIDIgMCAwIDEgMiAydjRhMiAyIDAgMCAxLTIgMkg3In0pLFgoInBhdGgiLHtkOiJNIDcgMTdoLjAxIn0pLFgoInBhdGgiLHtkOiJtMTEgOCAyLjMtMi4zYTIuNCAyLjQgMCAwIDEgMy40MDQuMDA0TDE4LjYgNy42YTIuNCAyLjQgMCAwIDEgLjAyNiAzLjQzNEw5LjkgMTkuOCJ9KV19KSx0ZXh0U2l6ZTpYKCJzdmciLHt3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHZpZXdCb3g6IjAgMCA1MiAzNCIsZmlsbDoiY3VycmVudENvbG9yIixzdHJva2U6Im5vbmUiLGNoaWxkcmVuOlgoInBhdGgiLHtkOiJNMzkuNzI2NiAzMy4wMjM0QzM4LjE0ODQgMzMuMDIzNCAzNi43NSAzMi43MjY2IDM1LjUzMTIgMzIuMTMyOEMzNC4zMTI1IDMxLjUzOTEgMzMuMzU5NCAzMC43MTA5IDMyLjY3MTkgMjkuNjQ4NEMzMiAyOC41NzAzIDMxLjY2NDEgMjcuMzEyNSAzMS42NjQxIDI1Ljg3NUMzMS42NjQxIDIzLjc4MTIgMzIuNDI5NyAyMi4xMDk0IDMzLjk2MDkgMjAuODU5NEMzNS41MDc4IDE5LjYwOTQgMzcuNzEwOSAxOC45MDYyIDQwLjU3MDMgMTguNzVMNDcuNjAxNiAxOC4zNTE2VjE2LjVDNDcuNjAxNiAxNS4wMTU2IDQ3LjEzMjggMTMuODM1OSA0Ni4xOTUzIDEyLjk2MDlDNDUuMjU3OCAxMi4wODU5IDQzLjk1MzEgMTEuNjQ4NCA0Mi4yODEyIDExLjY0ODRDNDAuOTA2MiAxMS42NDg0IDM5Ljc1IDExLjk0NTMgMzguODEyNSAxMi41MzkxQzM3Ljg3NSAxMy4xMzI4IDM3LjA5MzggMTQuMDQ2OSAzNi40Njg4IDE1LjI4MTJDMzYuMjY1NiAxNS42MDk0IDM2LjAxNTYgMTUuODUxNiAzNS43MTg4IDE2LjAwNzhDMzUuNDIxOSAxNi4xNjQxIDM1LjA3ODEgMTYuMjQyMiAzNC42ODc1IDE2LjI0MjJDMzQuMTU2MiAxNi4yNDIyIDMzLjcxMDkgMTYuMDc4MSAzMy4zNTE2IDE1Ljc1QzMzLjAwNzggMTUuNDIxOSAzMi44MzU5IDE0Ljk5MjIgMzIuODM1OSAxNC40NjA5QzMyLjgzNTkgMTQuMjI2NiAzMi44NjcyIDEzLjk3NjYgMzIuOTI5NyAxMy43MTA5QzMzLjAwNzggMTMuNDQ1MyAzMy4xMDk0IDEzLjE3OTcgMzMuMjM0NCAxMi45MTQxQzMzLjg3NSAxMS40NjA5IDM1LjAxNTYgMTAuMzA0NyAzNi42NTYyIDkuNDQ1MzFDMzguMzEyNSA4LjU4NTk0IDQwLjIyNjYgOC4xNTYyNSA0Mi4zOTg0IDguMTU2MjVDNDQuMzIwMyA4LjE1NjI1IDQ1Ljk4NDQgOC40OTIxOSA0Ny4zOTA2IDkuMTY0MDZDNDguODEyNSA5LjgyMDMxIDQ5Ljg5ODQgMTAuNzUgNTAuNjQ4NCAxMS45NTMxQzUxLjQxNDEgMTMuMTU2MiA1MS43OTY5IDE0LjU3MDMgNTEuNzk2OSAxNi4xOTUzVjMwLjkxNDFDNTEuNzk2OSAzMS41ODU5IDUxLjYwOTQgMzIuMTA5NCA1MS4yMzQ0IDMyLjQ4NDRDNTAuODU5NCAzMi44NTk0IDUwLjM2NzIgMzMuMDQ2OSA0OS43NTc4IDMzLjA0NjlDNDkuMTY0MSAzMy4wNDY5IDQ4LjY3OTcgMzIuODY3MiA0OC4zMDQ3IDMyLjUwNzhDNDcuOTI5NyAzMi4xNDg0IDQ3LjczNDQgMzEuNjY0MSA0Ny43MTg4IDMxLjA1NDdWMjguMzU5NEg0Ny42NzE5QzQ2Ljk4NDQgMjkuNzgxMiA0NS45MDYyIDMwLjkxNDEgNDQuNDM3NSAzMS43NTc4QzQyLjk4NDQgMzIuNjAxNiA0MS40MTQxIDMzLjAyMzQgMzkuNzI2NiAzMy4wMjM0Wk00MC44MDQ3IDI5LjY3MTlDNDIuMDcwMyAyOS42NzE5IDQzLjIxMDkgMjkuNDA2MiA0NC4yMjY2IDI4Ljg3NUM0NS4yNTc4IDI4LjM0MzggNDYuMDc4MSAyNy42MTcyIDQ2LjY4NzUgMjYuNjk1M0M0Ny4yOTY5IDI1Ljc3MzQgNDcuNjAxNiAyNC43NSA0Ny42MDE2IDIzLjYyNVYyMS4zMjgxTDQxLjEzMjggMjEuNzVDMzkuNDQ1MyAyMS44NTk0IDM4LjE2NDEgMjIuMjczNCAzNy4yODkxIDIyLjk5MjJDMzYuNDE0MSAyMy42OTUzIDM1Ljk3NjYgMjQuNjA5NCAzNS45NzY2IDI1LjczNDRDMzUuOTc2NiAyNi45MjE5IDM2LjQyMTkgMjcuODc1IDM3LjMxMjUgMjguNTkzOEMzOC4yMDMxIDI5LjMxMjUgMzkuMzY3MiAyOS42NzE5IDQwLjgwNDcgMjkuNjcxOVpNMi4xNzk2OSAzMy4wMjM0QzEuNTA3ODEgMzMuMDIzNCAwLjk3NjU2MiAzMi44MzU5IDAuNTg1OTM4IDMyLjQ2MDlDMC4xOTUzMTIgMzIuMDg1OSAwIDMxLjU3ODEgMCAzMC45Mzc1QzAgMzAuNTMxMiAwLjA4NTkzNzUgMzAuMDcwMyAwLjI1NzgxMiAyOS41NTQ3TDEwLjQwNjIgMi40MTQwNkMxMC45ODQ0IDAuODA0Njg4IDEyLjEwMTYgMCAxMy43NTc4IDBDMTQuNjE3MiAwIDE1LjMyODEgMC4yMDMxMjUgMTUuODkwNiAwLjYwOTM3NUMxNi40NTMxIDEuMDE1NjIgMTYuODc1IDEuNjI1IDE3LjE1NjIgMi40Mzc1TDI3LjI1NzggMjkuNDg0NEMyNy40NDUzIDMwIDI3LjUzOTEgMzAuNDY4OCAyNy41MzkxIDMwLjg5MDZDMjcuNTM5MSAzMS41NDY5IDI3LjMzNTkgMzIuMDcwMyAyNi45Mjk3IDMyLjQ2MDlDMjYuNTIzNCAzMi44MzU5IDI1Ljk3NjYgMzMuMDIzNCAyNS4yODkxIDMzLjAyMzRDMjQuNjMyOCAzMy4wMjM0IDI0LjEwOTQgMzIuODc1IDIzLjcxODggMzIuNTc4MUMyMy4zNDM4IDMyLjI4MTIgMjMuMDM5MSAzMS43ODkxIDIyLjgwNDcgMzEuMTAxNkwxMy44MjgxIDUuMzQzNzVIMTMuNjY0MUw0LjY2NDA2IDMxLjEwMTZDNC40Mjk2OSAzMS43ODkxIDQuMTI1IDMyLjI4MTIgMy43NSAzMi41NzgxQzMuMzc1IDMyLjg3NSAyLjg1MTU2IDMzLjAyMzQgMi4xNzk2OSAzMy4wMjM0Wk02LjY3OTY5IDIzLjc0MjJDNi4xNDg0NCAyMy43NDIyIDUuNzAzMTIgMjMuNTYyNSA1LjM0Mzc1IDIzLjIwMzFDNC45ODQzOCAyMi44NDM4IDQuODA0NjkgMjIuMzk4NCA0LjgwNDY5IDIxLjg2NzJDNC44MDQ2OSAyMS4zNTE2IDQuOTg0MzggMjAuOTE0MSA1LjM0Mzc1IDIwLjU1NDdDNS43MDMxMiAyMC4xOTUzIDYuMTQ4NDQgMjAuMDE1NiA2LjY3OTY5IDIwLjAxNTZIMjAuODU5NEMyMS4zNzUgMjAuMDE1NiAyMS44MTI1IDIwLjE5NTMgMjIuMTcxOSAyMC41NTQ3QzIyLjUzMTIgMjAuOTE0MSAyMi43MTA5IDIxLjM1MTYgMjIuNzEwOSAyMS44NjcyQzIyLjcxMDkgMjIuMzk4NCAyMi41MzEyIDIyLjg0MzggMjIuMTcxOSAyMy4yMDMxQzIxLjgxMjUgMjMuNTYyNSAyMS4zNzUgMjMuNzQyMiAyMC44NTk0IDIzLjc0MjJINi42Nzk2OVoifSl9KSxtb3Rpb246WCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLGNoaWxkcmVuOltYKCJjaXJjbGUiLHtjeDoiMTQiLGN5OiIxMiIscjoiNiJ9KSxYKCJwYXRoIix7ZDoiTTMgOGg0TTIgMTJoNE0zIDE2aDQifSldfSksY29udHJhc3Q6WCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1goImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9KSxYKCJwYXRoIix7ZDoiTTEyIDE4YTYgNiAwIDAgMCAwLTEydjEyeiJ9KV19KSxib3JkZXJzOlgoInN2ZyIse3dpZHRoOiIxNCIsaGVpZ2h0OiIxNCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltYKCJwYXRoIix7ZDoiTTUgMjFhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAyIn0pLFgoInBhdGgiLHtkOiJNOSAyMWgxIn0pLFgoInBhdGgiLHtkOiJNMTQgMjFoMSJ9KV19KSx0cmFuc3BhcmVuY3k6WCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIwIDAgNjMgNDYiLGZpbGw6ImN1cnJlbnRDb2xvciIsc3Ryb2tlOiJub25lIixjaGlsZHJlbjpYKCJwYXRoIix7ZDoiTTIyLjczNDQgNC4xNzE4OEMyMi4xODc1IDQuMTcxODggMjEuNzE4OCAzLjk3NjU2IDIxLjMyODEgMy41ODU5NEMyMC45Mzc1IDMuMTk1MzEgMjAuNzQyMiAyLjcxODc1IDIwLjc0MjIgMi4xNTYyNUMyMC43NDIyIDEuNjA5MzggMjAuOTM3NSAxLjE0MDYyIDIxLjMyODEgMC43NUMyMS43MTg4IDAuMzU5Mzc1IDIyLjE4NzUgMC4xNjQwNjIgMjIuNzM0NCAwLjE2NDA2MkMyMy4yODEyIDAuMTY0MDYyIDIzLjc1IDAuMzU5Mzc1IDI0LjE0MDYgMC43NUMyNC41MzEyIDEuMTQwNjIgMjQuNzI2NiAxLjYwOTM4IDI0LjcyNjYgMi4xNTYyNUMyNC43MjY2IDIuNzE4NzUgMjQuNTMxMiAzLjE5NTMxIDI0LjE0MDYgMy41ODU5NEMyMy43NSAzLjk3NjU2IDIzLjI4MTIgNC4xNzE4OCAyMi43MzQ0IDQuMTcxODhaTTI5LjEwOTQgNS4yMDMxMkMyOC41NDY5IDUuMjAzMTIgMjguMDcwMyA1LjAwNzgxIDI3LjY3OTcgNC42MTcxOUMyNy4yODkxIDQuMjI2NTYgMjcuMDkzOCAzLjc1NzgxIDI3LjA5MzggMy4yMTA5NEMyNy4wOTM4IDIuNjY0MDYgMjcuMjg5MSAyLjE5NTMxIDI3LjY3OTcgMS44MDQ2OUMyOC4wNzAzIDEuMzk4NDQgMjguNTQ2OSAxLjE5NTMxIDI5LjEwOTQgMS4xOTUzMUMyOS42NTYyIDEuMTk1MzEgMzAuMTI1IDEuMzk4NDQgMzAuNTE1NiAxLjgwNDY5QzMwLjkwNjIgMi4xOTUzMSAzMS4xMDE2IDIuNjY0MDYgMzEuMTAxNiAzLjIxMDk0QzMxLjEwMTYgMy43NTc4MSAzMC45MDYyIDQuMjI2NTYgMzAuNTE1NiA0LjYxNzE5QzMwLjEyNSA1LjAwNzgxIDI5LjY1NjIgNS4yMDMxMiAyOS4xMDk0IDUuMjAzMTJaTTM0Ljg3NSA4LjEzMjgxQzM0LjMyODEgOC4xMzI4MSAzMy44NTE2IDcuOTM3NSAzMy40NDUzIDcuNTQ2ODhDMzMuMDU0NyA3LjE0MDYyIDMyLjg1OTQgNi42NzE4OCAzMi44NTk0IDYuMTQwNjJDMzIuODU5NCA1LjU3ODEyIDMzLjA1NDcgNS4xMDE1NiAzMy40NDUzIDQuNzEwOTRDMzMuODUxNiA0LjMyMDMxIDM0LjMyODEgNC4xMjUgMzQuODc1IDQuMTI1QzM1LjQyMTkgNC4xMjUgMzUuODkwNiA0LjMyMDMxIDM2LjI4MTIgNC43MTA5NEMzNi42ODc1IDUuMTAxNTYgMzYuODkwNiA1LjU3ODEyIDM2Ljg5MDYgNi4xNDA2MkMzNi44OTA2IDYuNjcxODggMzYuNjg3NSA3LjE0MDYyIDM2LjI4MTIgNy41NDY4OEMzNS44OTA2IDcuOTM3NSAzNS40MjE5IDguMTMyODEgMzQuODc1IDguMTMyODFaTTM5LjQ0NTMgMTIuNjc5N0MzOC44OTg0IDEyLjY3OTcgMzguNDIxOSAxMi40ODQ0IDM4LjAxNTYgMTIuMDkzOEMzNy42MjUgMTEuNzAzMSAzNy40Mjk3IDExLjIzNDQgMzcuNDI5NyAxMC42ODc1QzM3LjQyOTcgMTAuMTU2MiAzNy42MjUgOS42OTUzMSAzOC4wMTU2IDkuMzA0NjlDMzguNDIxOSA4Ljg5ODQ0IDM4Ljg5ODQgOC42OTUzMSAzOS40NDUzIDguNjk1MzFDMzkuOTkyMiA4LjY5NTMxIDQwLjQ2MDkgOC44OTg0NCA0MC44NTE2IDkuMzA0NjlDNDEuMjQyMiA5LjY5NTMxIDQxLjQzNzUgMTAuMTU2MiA0MS40Mzc1IDEwLjY4NzVDNDEuNDM3NSAxMS4yMzQ0IDQxLjI0MjIgMTEuNzAzMSA0MC44NTE2IDEyLjA5MzhDNDAuNDYwOSAxMi40ODQ0IDM5Ljk5MjIgMTIuNjc5NyAzOS40NDUzIDEyLjY3OTdaTTQyLjM3NSAxOC4zOTg0QzQxLjgxMjUgMTguMzk4NCA0MS4zMjgxIDE4LjIwMzEgNDAuOTIxOSAxNy44MTI1QzQwLjUzMTIgMTcuNDIxOSA0MC4zMzU5IDE2Ljk1MzEgNDAuMzM1OSAxNi40MDYyQzQwLjMzNTkgMTUuODQzOCA0MC41MzEyIDE1LjM2NzIgNDAuOTIxOSAxNC45NzY2QzQxLjMyODEgMTQuNTg1OSA0MS44MTI1IDE0LjM5MDYgNDIuMzc1IDE0LjM5MDZDNDIuOTA2MiAxNC4zOTA2IDQzLjM2NzIgMTQuNTg1OSA0My43NTc4IDE0Ljk3NjZDNDQuMTY0MSAxNS4zNjcyIDQ0LjM2NzIgMTUuODQzOCA0NC4zNjcyIDE2LjQwNjJDNDQuMzY3MiAxNi45NTMxIDQ0LjE2NDEgMTcuNDIxOSA0My43NTc4IDE3LjgxMjVDNDMuMzY3MiAxOC4yMDMxIDQyLjkwNjIgMTguMzk4NCA0Mi4zNzUgMTguMzk4NFpNNDMuNDUzMSAyNC43OTY5QzQyLjkwNjIgMjQuNzk2OSA0Mi40Mzc1IDI0LjYwMTYgNDIuMDQ2OSAyNC4yMTA5QzQxLjY1NjIgMjMuODIwMyA0MS40NjA5IDIzLjM0MzggNDEuNDYwOSAyMi43ODEyQzQxLjQ2MDkgMjIuMjM0NCA0MS42NTYyIDIxLjc2NTYgNDIuMDQ2OSAyMS4zNzVDNDIuNDM3NSAyMC45ODQ0IDQyLjkwNjIgMjAuNzg5MSA0My40NTMxIDIwLjc4OTFDNDQgMjAuNzg5MSA0NC40Njg4IDIwLjk4NDQgNDQuODU5NCAyMS4zNzVDNDUuMjY1NiAyMS43NjU2IDQ1LjQ2ODggMjIuMjM0NCA0NS40Njg4IDIyLjc4MTJDNDUuNDY4OCAyMy4zNDM4IDQ1LjI2NTYgMjMuODIwMyA0NC44NTk0IDI0LjIxMDlDNDQuNDY4OCAyNC42MDE2IDQ0IDI0Ljc5NjkgNDMuNDUzMSAyNC43OTY5Wk00Mi4zNzUgMzEuMTcxOUM0MS44MTI1IDMxLjE3MTkgNDEuMzI4MSAzMC45NzY2IDQwLjkyMTkgMzAuNTg1OUM0MC41MzEyIDMwLjE5NTMgNDAuMzM1OSAyOS43MjY2IDQwLjMzNTkgMjkuMTc5N0M0MC4zMzU5IDI4LjYxNzIgNDAuNTMxMiAyOC4xNDA2IDQwLjkyMTkgMjcuNzVDNDEuMzI4MSAyNy4zNTk0IDQxLjgxMjUgMjcuMTY0MSA0Mi4zNzUgMjcuMTY0MUM0Mi45MDYyIDI3LjE2NDEgNDMuMzY3MiAyNy4zNTk0IDQzLjc1NzggMjcuNzVDNDQuMTY0MSAyOC4xNDA2IDQ0LjM2NzIgMjguNjE3MiA0NC4zNjcyIDI5LjE3OTdDNDQuMzY3MiAyOS43MjY2IDQ0LjE2NDEgMzAuMTk1MyA0My43NTc4IDMwLjU4NTlDNDMuMzY3MiAzMC45NzY2IDQyLjkwNjIgMzEuMTcxOSA0Mi4zNzUgMzEuMTcxOVpNMzkuNDQ1MyAzNi44OTA2QzM4Ljg5ODQgMzYuODkwNiAzOC40MjE5IDM2LjY5NTMgMzguMDE1NiAzNi4zMDQ3QzM3LjYyNSAzNS44OTg0IDM3LjQyOTcgMzUuNDIxOSAzNy40Mjk3IDM0Ljg3NUMzNy40Mjk3IDM0LjMyODEgMzcuNjI1IDMzLjg1OTQgMzguMDE1NiAzMy40Njg4QzM4LjQyMTkgMzMuMDYyNSAzOC44OTg0IDMyLjg1OTQgMzkuNDQ1MyAzMi44NTk0QzM5Ljk5MjIgMzIuODU5NCA0MC40NjA5IDMzLjA2MjUgNDAuODUxNiAzMy40Njg4QzQxLjI0MjIgMzMuODU5NCA0MS40Mzc1IDM0LjMyODEgNDEuNDM3NSAzNC44NzVDNDEuNDM3NSAzNS40MjE5IDQxLjI0MjIgMzUuODk4NCA0MC44NTE2IDM2LjMwNDdDNDAuNDYwOSAzNi42OTUzIDM5Ljk5MjIgMzYuODkwNiAzOS40NDUzIDM2Ljg5MDZaTTM0Ljg3NSA0MS40Mzc1QzM0LjMyODEgNDEuNDM3NSAzMy44NTE2IDQxLjI0MjIgMzMuNDQ1MyA0MC44NTE2QzMzLjA1NDcgNDAuNDYwOSAzMi44NTk0IDM5Ljk5MjIgMzIuODU5NCAzOS40NDUzQzMyLjg1OTQgMzguODk4NCAzMy4wNTQ3IDM4LjQyOTcgMzMuNDQ1MyAzOC4wMzkxQzMzLjg1MTYgMzcuNjMyOCAzNC4zMjgxIDM3LjQyOTcgMzQuODc1IDM3LjQyOTdDMzUuNDIxOSAzNy40Mjk3IDM1Ljg5MDYgMzcuNjMyOCAzNi4yODEyIDM4LjAzOTFDMzYuNjg3NSAzOC40Mjk3IDM2Ljg5MDYgMzguODk4NCAzNi44OTA2IDM5LjQ0NTNDMzYuODkwNiAzOS45OTIyIDM2LjY4NzUgNDAuNDYwOSAzNi4yODEyIDQwLjg1MTZDMzUuODkwNiA0MS4yNDIyIDM1LjQyMTkgNDEuNDM3NSAzNC44NzUgNDEuNDM3NVpNMjkuMTA5NCA0NC4zNjcyQzI4LjU0NjkgNDQuMzY3MiAyOC4wNzAzIDQ0LjE2NDEgMjcuNjc5NyA0My43NTc4QzI3LjI4OTEgNDMuMzY3MiAyNy4wOTM4IDQyLjg5ODQgMjcuMDkzOCA0Mi4zNTE2QzI3LjA5MzggNDEuODA0NyAyNy4yODkxIDQxLjMzNTkgMjcuNjc5NyA0MC45NDUzQzI4LjA3MDMgNDAuNTU0NyAyOC41NDY5IDQwLjM1OTQgMjkuMTA5NCA0MC4zNTk0QzI5LjY1NjIgNDAuMzU5NCAzMC4xMjUgNDAuNTU0NyAzMC41MTU2IDQwLjk0NTNDMzAuOTA2MiA0MS4zMzU5IDMxLjEwMTYgNDEuODA0NyAzMS4xMDE2IDQyLjM1MTZDMzEuMTAxNiA0Mi44OTg0IDMwLjkwNjIgNDMuMzY3MiAzMC41MTU2IDQzLjc1NzhDMzAuMTI1IDQ0LjE2NDEgMjkuNjU2MiA0NC4zNjcyIDI5LjEwOTQgNDQuMzY3MlpNMjIuNzM0NCA0NS4zOTg0QzIyLjE4NzUgNDUuMzk4NCAyMS43MTg4IDQ1LjIwMzEgMjEuMzI4MSA0NC44MTI1QzIwLjkzNzUgNDQuNDIxOSAyMC43NDIyIDQzLjk1MzEgMjAuNzQyMiA0My40MDYyQzIwLjc0MjIgNDIuODQzOCAyMC45Mzc1IDQyLjM2NzIgMjEuMzI4MSA0MS45NzY2QzIxLjcxODggNDEuNTg1OSAyMi4xODc1IDQxLjM5MDYgMjIuNzM0NCA0MS4zOTA2QzIzLjI4MTIgNDEuMzkwNiAyMy43NSA0MS41ODU5IDI0LjE0MDYgNDEuOTc2NkMyNC41MzEyIDQyLjM2NzIgMjQuNzI2NiA0Mi44NDM4IDI0LjcyNjYgNDMuNDA2MkMyNC43MjY2IDQzLjk1MzEgMjQuNTMxMiA0NC40MjE5IDI0LjE0MDYgNDQuODEyNUMyMy43NSA0NS4yMDMxIDIzLjI4MTIgNDUuMzk4NCAyMi43MzQ0IDQ1LjM5ODRaTTE2LjM1OTQgNDQuMzY3MkMxNS44MTI1IDQ0LjM2NzIgMTUuMzQzOCA0NC4xNjQxIDE0Ljk1MzEgNDMuNzU3OEMxNC41NjI1IDQzLjM2NzIgMTQuMzY3MiA0Mi44OTg0IDE0LjM2NzIgNDIuMzUxNkMxNC4zNjcyIDQxLjgwNDcgMTQuNTYyNSA0MS4zMzU5IDE0Ljk1MzEgNDAuOTQ1M0MxNS4zNDM4IDQwLjU1NDcgMTUuODEyNSA0MC4zNTk0IDE2LjM1OTQgNDAuMzU5NEMxNi45MjE5IDQwLjM1OTQgMTcuMzk4NCA0MC41NTQ3IDE3Ljc4OTEgNDAuOTQ1M0MxOC4xNzk3IDQxLjMzNTkgMTguMzc1IDQxLjgwNDcgMTguMzc1IDQyLjM1MTZDMTguMzc1IDQyLjg5ODQgMTguMTc5NyA0My4zNjcyIDE3Ljc4OTEgNDMuNzU3OEMxNy4zOTg0IDQ0LjE2NDEgMTYuOTIxOSA0NC4zNjcyIDE2LjM1OTQgNDQuMzY3MlpNMTAuNTcwMyA0MS40Mzc1QzEwLjAzOTEgNDEuNDM3NSA5LjU3MDMxIDQxLjI0MjIgOS4xNjQwNiA0MC44NTE2QzguNzczNDQgNDAuNDYwOSA4LjU3ODEyIDM5Ljk5MjIgOC41NzgxMiAzOS40NDUzQzguNTc4MTIgMzguODk4NCA4Ljc3MzQ0IDM4LjQyOTcgOS4xNjQwNiAzOC4wMzkxQzkuNTcwMzEgMzcuNjMyOCAxMC4wMzkxIDM3LjQyOTcgMTAuNTcwMyAzNy40Mjk3QzExLjEzMjggMzcuNDI5NyAxMS42MDk0IDM3LjYzMjggMTIgMzguMDM5MUMxMi4zOTA2IDM4LjQyOTcgMTIuNTg1OSAzOC44OTg0IDEyLjU4NTkgMzkuNDQ1M0MxMi41ODU5IDM5Ljk5MjIgMTIuMzkwNiA0MC40NjA5IDEyIDQwLjg1MTZDMTEuNjA5NCA0MS4yNDIyIDExLjEzMjggNDEuNDM3NSAxMC41NzAzIDQxLjQzNzVaTTYuMDIzNDQgMzYuODkwNkM1LjQ3NjU2IDM2Ljg5MDYgNSAzNi42OTUzIDQuNTkzNzUgMzYuMzA0N0M0LjIwMzEyIDM1Ljg5ODQgNC4wMDc4MSAzNS40MjE5IDQuMDA3ODEgMzQuODc1QzQuMDA3ODEgMzQuMzI4MSA0LjIwMzEyIDMzLjg1OTQgNC41OTM3NSAzMy40Njg4QzUgMzMuMDYyNSA1LjQ3NjU2IDMyLjg1OTQgNi4wMjM0NCAzMi44NTk0QzYuNTcwMzEgMzIuODU5NCA3LjAzOTA2IDMzLjA2MjUgNy40Mjk2OSAzMy40Njg4QzcuODIwMzEgMzMuODU5NCA4LjAxNTYyIDM0LjMyODEgOC4wMTU2MiAzNC44NzVDOC4wMTU2MiAzNS40MjE5IDcuODIwMzEgMzUuODk4NCA3LjQyOTY5IDM2LjMwNDdDNy4wMzkwNiAzNi42OTUzIDYuNTcwMzEgMzYuODkwNiA2LjAyMzQ0IDM2Ljg5MDZaTTMuMDkzNzUgMzEuMTcxOUMyLjU2MjUgMzEuMTcxOSAyLjA5Mzc1IDMwLjk3NjYgMS42ODc1IDMwLjU4NTlDMS4yOTY4OCAzMC4xOTUzIDEuMTAxNTYgMjkuNzI2NiAxLjEwMTU2IDI5LjE3OTdDMS4xMDE1NiAyOC42MTcyIDEuMjk2ODggMjguMTQwNiAxLjY4NzUgMjcuNzVDMi4wOTM3NSAyNy4zNTk0IDIuNTYyNSAyNy4xNjQxIDMuMDkzNzUgMjcuMTY0MUMzLjY1NjI1IDI3LjE2NDEgNC4xMzI4MSAyNy4zNTk0IDQuNTIzNDQgMjcuNzVDNC45MTQwNiAyOC4xNDA2IDUuMTA5MzggMjguNjE3MiA1LjEwOTM4IDI5LjE3OTdDNS4xMDkzOCAyOS43MjY2IDQuOTE0MDYgMzAuMTk1MyA0LjUyMzQ0IDMwLjU4NTlDNC4xMzI4MSAzMC45NzY2IDMuNjU2MjUgMzEuMTcxOSAzLjA5Mzc1IDMxLjE3MTlaTTIuMDE1NjIgMjQuNzk2OUMxLjQ1MzEyIDI0Ljc5NjkgMC45NzY1NjIgMjQuNjAxNiAwLjU4NTkzOCAyNC4yMTA5QzAuMTk1MzEyIDIzLjgyMDMgMCAyMy4zNDM4IDAgMjIuNzgxMkMwIDIyLjIzNDQgMC4xOTUzMTIgMjEuNzY1NiAwLjU4NTkzOCAyMS4zNzVDMC45NzY1NjIgMjAuOTg0NCAxLjQ1MzEyIDIwLjc4OTEgMi4wMTU2MiAyMC43ODkxQzIuNTYyNSAyMC43ODkxIDMuMDMxMjUgMjAuOTg0NCAzLjQyMTg4IDIxLjM3NUMzLjgxMjUgMjEuNzY1NiA0LjAwNzgxIDIyLjIzNDQgNC4wMDc4MSAyMi43ODEyQzQuMDA3ODEgMjMuMzQzOCAzLjgxMjUgMjMuODIwMyAzLjQyMTg4IDI0LjIxMDlDMy4wMzEyNSAyNC42MDE2IDIuNTYyNSAyNC43OTY5IDIuMDE1NjIgMjQuNzk2OVpNMy4wOTM3NSAxOC4zOTg0QzIuNTYyNSAxOC4zOTg0IDIuMDkzNzUgMTguMjAzMSAxLjY4NzUgMTcuODEyNUMxLjI5Njg4IDE3LjQyMTkgMS4xMDE1NiAxNi45NTMxIDEuMTAxNTYgMTYuNDA2MkMxLjEwMTU2IDE1Ljg0MzggMS4yOTY4OCAxNS4zNjcyIDEuNjg3NSAxNC45NzY2QzIuMDkzNzUgMTQuNTg1OSAyLjU2MjUgMTQuMzkwNiAzLjA5Mzc1IDE0LjM5MDZDMy42NTYyNSAxNC4zOTA2IDQuMTMyODEgMTQuNTg1OSA0LjUyMzQ0IDE0Ljk3NjZDNC45MTQwNiAxNS4zNjcyIDUuMTA5MzggMTUuODQzOCA1LjEwOTM4IDE2LjQwNjJDNS4xMDkzOCAxNi45NTMxIDQuOTE0MDYgMTcuNDIxOSA0LjUyMzQ0IDE3LjgxMjVDNC4xMzI4MSAxOC4yMDMxIDMuNjU2MjUgMTguMzk4NCAzLjA5Mzc1IDE4LjM5ODRaTTYuMDIzNDQgMTIuNjc5N0M1LjQ3NjU2IDEyLjY3OTcgNSAxMi40ODQ0IDQuNTkzNzUgMTIuMDkzOEM0LjIwMzEyIDExLjcwMzEgNC4wMDc4MSAxMS4yMzQ0IDQuMDA3ODEgMTAuNjg3NUM0LjAwNzgxIDEwLjE1NjIgNC4yMDMxMiA5LjY5NTMxIDQuNTkzNzUgOS4zMDQ2OUM1IDguODk4NDQgNS40NzY1NiA4LjY5NTMxIDYuMDIzNDQgOC42OTUzMUM2LjU3MDMxIDguNjk1MzEgNy4wMzkwNiA4Ljg5ODQ0IDcuNDI5NjkgOS4zMDQ2OUM3LjgyMDMxIDkuNjk1MzEgOC4wMTU2MiAxMC4xNTYyIDguMDE1NjIgMTAuNjg3NUM4LjAxNTYyIDExLjIzNDQgNy44MjAzMSAxMS43MDMxIDcuNDI5NjkgMTIuMDkzOEM3LjAzOTA2IDEyLjQ4NDQgNi41NzAzMSAxMi42Nzk3IDYuMDIzNDQgMTIuNjc5N1pNMTAuNTcwMyA4LjEzMjgxQzEwLjAzOTEgOC4xMzI4MSA5LjU3MDMxIDcuOTM3NSA5LjE2NDA2IDcuNTQ2ODhDOC43NzM0NCA3LjE0MDYyIDguNTc4MTIgNi42NzE4OCA4LjU3ODEyIDYuMTQwNjJDOC41NzgxMiA1LjU3ODEyIDguNzczNDQgNS4xMDE1NiA5LjE2NDA2IDQuNzEwOTRDOS41NzAzMSA0LjMyMDMxIDEwLjAzOTEgNC4xMjUgMTAuNTcwMyA0LjEyNUMxMS4xMzI4IDQuMTI1IDExLjYwOTQgNC4zMjAzMSAxMiA0LjcxMDk0QzEyLjM5MDYgNS4xMDE1NiAxMi41ODU5IDUuNTc4MTIgMTIuNTg1OSA2LjE0MDYyQzEyLjU4NTkgNi42NzE4OCAxMi4zOTA2IDcuMTQwNjIgMTIgNy41NDY4OEMxMS42MDk0IDcuOTM3NSAxMS4xMzI4IDguMTMyODEgMTAuNTcwMyA4LjEzMjgxWk0xNi4zNTk0IDUuMjAzMTJDMTUuODEyNSA1LjIwMzEyIDE1LjM0MzggNS4wMDc4MSAxNC45NTMxIDQuNjE3MTlDMTQuNTYyNSA0LjIyNjU2IDE0LjM2NzIgMy43NTc4MSAxNC4zNjcyIDMuMjEwOTRDMTQuMzY3MiAyLjY2NDA2IDE0LjU2MjUgMi4xOTUzMSAxNC45NTMxIDEuODA0NjlDMTUuMzQzOCAxLjM5ODQ0IDE1LjgxMjUgMS4xOTUzMSAxNi4zNTk0IDEuMTk1MzFDMTYuOTIxOSAxLjE5NTMxIDE3LjM5ODQgMS4zOTg0NCAxNy43ODkxIDEuODA0NjlDMTguMTc5NyAyLjE5NTMxIDE4LjM3NSAyLjY2NDA2IDE4LjM3NSAzLjIxMDk0QzE4LjM3NSAzLjc1NzgxIDE4LjE3OTcgNC4yMjY1NiAxNy43ODkxIDQuNjE3MTlDMTcuMzk4NCA1LjAwNzgxIDE2LjkyMTkgNS4yMDMxMiAxNi4zNTk0IDUuMjAzMTJaTTQwLjEwMTYgNDUuNTYyNUMzNi45NDUzIDQ1LjU2MjUgMzMuOTkyMiA0NC45Njg4IDMxLjI0MjIgNDMuNzgxMkMyOC41MDc4IDQyLjYwOTQgMjYuMDkzOCA0MC45NzY2IDI0IDM4Ljg4MjhDMjEuOTA2MiAzNi43ODkxIDIwLjI2NTYgMzQuMzY3MiAxOS4wNzgxIDMxLjYxNzJDMTcuOTA2MiAyOC44NjcyIDE3LjMyMDMgMjUuOTIxOSAxNy4zMjAzIDIyLjc4MTJDMTcuMzIwMyAxOS42NDA2IDE3LjkwNjIgMTYuNjk1MyAxOS4wNzgxIDEzLjk0NTNDMjAuMjY1NiAxMS4xNzk3IDIxLjkwNjIgOC43NTc4MSAyNCA2LjY3OTY5QzI2LjA5MzggNC41ODU5NCAyOC41MDc4IDIuOTUzMTIgMzEuMjQyMiAxLjc4MTI1QzMzLjk5MjIgMC41OTM3NSAzNi45NDUzIDAgNDAuMTAxNiAwQzQzLjI0MjIgMCA0Ni4xODc1IDAuNTkzNzUgNDguOTM3NSAxLjc4MTI1QzUxLjY4NzUgMi45NTMxMiA1NC4xMDE2IDQuNTg1OTQgNTYuMTc5NyA2LjY3OTY5QzU4LjI3MzQgOC43NTc4MSA1OS45MDYyIDExLjE3OTcgNjEuMDc4MSAxMy45NDUzQzYyLjI2NTYgMTYuNjk1MyA2Mi44NTk0IDE5LjY0MDYgNjIuODU5NCAyMi43ODEyQzYyLjg1OTQgMjUuOTIxOSA2Mi4yNjU2IDI4Ljg2NzIgNjEuMDc4MSAzMS42MTcyQzU5LjkwNjIgMzQuMzY3MiA1OC4yNzM0IDM2Ljc4OTEgNTYuMTc5NyAzOC44ODI4QzU0LjEwMTYgNDAuOTc2NiA1MS42ODc1IDQyLjYwOTQgNDguOTM3NSA0My43ODEyQzQ2LjE4NzUgNDQuOTY4OCA0My4yNDIyIDQ1LjU2MjUgNDAuMTAxNiA0NS41NjI1Wk00MC4xMDE2IDQxLjM5MDZDNDIuNjY0MSA0MS4zOTA2IDQ1LjA3MDMgNDAuOTA2MiA0Ny4zMjAzIDM5LjkzNzVDNDkuNTcwMyAzOC45Njg4IDUxLjU0NjkgMzcuNjMyOCA1My4yNSAzNS45Mjk3QzU0Ljk2ODggMzQuMjI2NiA1Ni4zMDQ3IDMyLjI1NzggNTcuMjU3OCAzMC4wMjM0QzU4LjIxMDkgMjcuNzczNCA1OC42ODc1IDI1LjM1OTQgNTguNjg3NSAyMi43ODEyQzU4LjY4NzUgMjAuMjAzMSA1OC4yMTA5IDE3Ljc5NjkgNTcuMjU3OCAxNS41NjI1QzU2LjMwNDcgMTMuMzEyNSA1NC45Njg4IDExLjMzNTkgNTMuMjUgOS42MzI4MUM1MS41NDY5IDcuOTI5NjkgNDkuNTcwMyA2LjU5Mzc1IDQ3LjMyMDMgNS42MjVDNDUuMDcwMyA0LjY1NjI1IDQyLjY2NDEgNC4xNzE4OCA0MC4xMDE2IDQuMTcxODhDMzcuNTIzNCA0LjE3MTg4IDM1LjEwOTQgNC42NTYyNSAzMi44NTk0IDUuNjI1QzMwLjYyNSA2LjU5Mzc1IDI4LjY0ODQgNy45Mjk2OSAyNi45Mjk3IDkuNjMyODFDMjUuMjI2NiAxMS4zMzU5IDIzLjg5MDYgMTMuMzEyNSAyMi45MjE5IDE1LjU2MjVDMjEuOTY4OCAxNy43OTY5IDIxLjQ5MjIgMjAuMjAzMSAyMS40OTIyIDIyLjc4MTJDMjEuNDkyMiAyNS4zNTk0IDIxLjk2ODggMjcuNzczNCAyMi45MjE5IDMwLjAyMzRDMjMuODkwNiAzMi4yNTc4IDI1LjIyNjYgMzQuMjI2NiAyNi45Mjk3IDM1LjkyOTdDMjguNjQ4NCAzNy42MzI4IDMwLjYyNSAzOC45Njg4IDMyLjg1OTQgMzkuOTM3NUMzNS4xMDk0IDQwLjkwNjIgMzcuNTIzNCA0MS4zOTA2IDQwLjEwMTYgNDEuMzkwNloifSl9KSx2b2ljZW92ZXI6WCgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1goInBhdGgiLHtkOiJtMTEgNy42MDEtNS45OTQgOC4xOWExIDEgMCAwIDAgLjEgMS4yOThsLjgxNy44MThhMSAxIDAgMCAwIDEuMzE0LjA4N0wxNS4wOSAxMiJ9KSxYKCJwYXRoIix7ZDoiTTE2LjUgMjEuMTc0QzE1LjUgMjAuNSAxNC4zNzIgMjAgMTMgMjBjLTIuMDU4IDAtMy45MjggMi4zNTYtNiAyLTIuMDcyLS4zNTYtMi43NzUtMy4zNjktMS41LTQuNSJ9KSxYKCJjaXJjbGUiLHtjeDoiMTYiLGN5OiI3IixyOiI1In0pXX0pfTtmdW5jdGlvbiBSUSgkKXtpZighJClyZXR1cm4hMDtyZXR1cm4geTUoJCkub3MudG9Mb3dlckNhc2UoKT09PSJpb3MifWZ1bmN0aW9uIHo0KHt1ZGlkOiQscnVudGltZTpKfSl7bGV0W1EsWl09QSghMCksW0ssWV09QShudWxsKSxbcSxHXT1BKG51bGwpLFtOLEJdPUEobnVsbCksTD1SUShKKSxWPUQoYXN5bmMoKT0+e0IobnVsbCk7dHJ5e2xldCB3PWF3YWl0IGozKHtkZXZpY2U6JH0se3NpZ25hbDpBYm9ydFNpZ25hbC50aW1lb3V0KDE1MDAwKX0pO2lmKHcpWSh3KTtlbHNlIEIoIlVuZXhwZWN0ZWQgc2ltdWxhdG9yLXNldHRpbmdzIHJlcGx5Iil9Y2F0Y2godyl7Qih3IGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiZ3Lm5hbWU9PT0iVGltZW91dEVycm9yIj8iVGltZWQgb3V0IHJlYWRpbmcgc2ltdWxhdG9yIHNldHRpbmdzIjp3IGluc3RhbmNlb2YgRXJyb3ImJncubWVzc2FnZSE9PSJGYWlsZWQgdG8gZmV0Y2giP3cubWVzc2FnZToiQ291bGQgbm90IHJlYWNoIHRoZSBwcmV2aWV3IHNlcnZlciDigJQgcmVsb2FkIHRoZSBwYWdlIGlmIHRoaXMgcGVyc2lzdHMiKX19LFskXSk7YigoKT0+e2lmKFkobnVsbCksIUwpcmV0dXJuO1YoKX0sW1YsTF0pO2xldCBVPUQoYXN5bmModyxTKT0+e0codyksQihudWxsKSxZKChqKT0+aj97Li4uaixbd106U306aik7dHJ5e2F3YWl0IGozKHtkZXZpY2U6JCxvcHRpb246dyx2YWx1ZTpTfSx7c2lnbmFsOkFib3J0U2lnbmFsLnRpbWVvdXQoMTUwMDApfSl9Y2F0Y2goail7QihqIGluc3RhbmNlb2YgRXJyb3I/ai5tZXNzYWdlOmBGYWlsZWQgdG8gc2V0ICR7d31gKSxWKCl9ZmluYWxseXtHKG51bGwpfX0sWyQsVl0pLHo9VCh7cnVubmluZzohMSxuZXh0Om51bGx9KSxrPVQoVSk7ay5jdXJyZW50PVU7bGV0IEg9RCgodyk9PntsZXQgUz16LmN1cnJlbnQ7aWYoUy5uZXh0PXcsUy5ydW5uaW5nKXJldHVybjtTLnJ1bm5pbmc9ITAsKGFzeW5jKCk9Pnt3aGlsZShTLm5leHQhPT1udWxsKXtsZXQgaj1TLm5leHQ7Uy5uZXh0PW51bGwsYXdhaXQgay5jdXJyZW50KCJ0ZXh0LXNpemUiLHIyW2pdKX1TLnJ1bm5pbmc9ITF9KSgpfSxbXSksQz1LIT09bnVsbCxGPUs/P3hRLE89cjIuaW5kZXhPZihGWyJ0ZXh0LXNpemUiXSksST1PPj0wP086RlsidGV4dC1zaXplIl0/LnN0YXJ0c1dpdGgoImFjY2Vzc2liaWxpdHkiKT9yMi5sZW5ndGgtMTozO3JldHVybiBYKGUxLHtvcGVuOlEsb25PcGVuQ2hhbmdlOlosImRhdGEtc2ltdWxhdG9yLXNldHRpbmdzIjoiIixzdW1tYXJ5Q2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b18xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbGVmdCIsc3VtbWFyeTpYKFoxLHtjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzUwIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wOGVtXSBsZWFkaW5nLW5vbmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIixjaGlsZHJlbjoiU2ltdWxhdG9yIn0pLFgoInNwYW4iLHt9KV19KSxjaGlsZHJlbjohTD9YKCJkaXYiLHtjbGFzc05hbWU6InRleHQtd2hpdGUvNDUgdGV4dC1bMTFweF0gcHgtMC41IHB5LTEiLGNoaWxkcmVuOiJTaW11bGF0b3Igc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSBvbiBpT1Mgc2ltdWxhdG9ycyBvbmx5LiJ9KTpYKFoxLHtjaGlsZHJlbjpbTiYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJiZy1kYW5nZXIvMTAgYm9yZGVyIGJvcmRlci1kYW5nZXIvMjAgdGV4dC1kYW5nZXItc29mdCB0ZXh0LVsxMXB4XSBweC0yIHB5LTEuNSByb3VuZGVkLW1kIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6Im1pbi13LTAiLGNoaWxkcmVuOk59KSxYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PnZvaWQgVigpLGNsYXNzTmFtZToic2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgcm91bmRlZCBib3JkZXIgYm9yZGVyLWRhbmdlci8zMCBiZy10cmFuc3BhcmVudCBweC0xLjUgcHktMC41IHRleHQtWzExcHhdIHRleHQtZGFuZ2VyLXNvZnQiLGNoaWxkcmVuOiJSZXRyeSJ9KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTEuNSBwYi0xLjUiLGNoaWxkcmVuOltYKFkwLHtpY29uOm8yLmFwcGVhcmFuY2UsbGFiZWw6IkFwcGVhcmFuY2UiLGNoaWxkcmVuOlgoSDAse2xhYmVsOiJBcHBlYXJhbmNlIix2YWx1ZTpGLmFwcGVhcmFuY2U/PyJsaWdodCIsb3B0aW9uczpROC5hcHBlYXJhbmNlLGRpc2FibGVkOiFDfHxxPT09ImFwcGVhcmFuY2UiLG9uQ2hhbmdlOih3KT0+VSgiYXBwZWFyYW5jZSIsdyl9KX0pLFgoWTAse2ljb246bzIuZ2xhc3MsbGFiZWw6IkxpcXVpZCBHbGFzcyIsY2hpbGRyZW46WChIMCx7bGFiZWw6IkxpcXVpZCBHbGFzcyIsdmFsdWU6RlsibGlxdWlkLWdsYXNzIl0/PyJjbGVhciIsb3B0aW9uczpROFsibGlxdWlkLWdsYXNzIl0sZGlzYWJsZWQ6IUN8fHE9PT0ibGlxdWlkLWdsYXNzIixvbkNoYW5nZToodyk9PlUoImxpcXVpZC1nbGFzcyIsdyl9KX0pLFgoWTAse2ljb246bzIuZmlsdGVyLGxhYmVsOiJDb2xvciBGaWx0ZXIiLGNoaWxkcmVuOlgoSDAse2xhYmVsOiJDb2xvciBGaWx0ZXIiLHZhbHVlOkZbImNvbG9yLWZpbHRlciJdPz8ibm9uZSIsb3B0aW9uczpROFsiY29sb3ItZmlsdGVyIl0sZGlzYWJsZWQ6IUN8fHE9PT0iY29sb3ItZmlsdGVyIixvbkNoYW5nZToodyk9PlUoImNvbG9yLWZpbHRlciIsdyl9KX0pLFgoWTAse2ljb246bzIudGV4dFNpemUsbGFiZWw6IlRleHQgU2l6ZSIsY2hpbGRyZW46WCh2USx7dmFsdWU6SSxkaXNhYmxlZDohQyxvbkNoYW5nZTpIfSl9KSxqUS5tYXAoKHtrZXk6dyxsYWJlbDpTfSk9PlgoWTAse2ljb246bzJbdz09PSJyZWR1Y2UtbW90aW9uIj8ibW90aW9uIjp3PT09ImluY3JlYXNlLWNvbnRyYXN0Ij8iY29udHJhc3QiOnc9PT0ic2hvdy1ib3JkZXJzIj8iYm9yZGVycyI6dz09PSJyZWR1Y2UtdHJhbnNwYXJlbmN5Ij8idHJhbnNwYXJlbmN5Ijoidm9pY2VvdmVyIl0sbGFiZWw6UyxjaGlsZHJlbjpYKHU1LHtsYWJlbDpTLGNoZWNrZWQ6Rlt3XT09PSJvbiIsZGlzYWJsZWQ6IUN8fHE9PT13LG9uQ2hhbmdlOihqKT0+VSh3LGo/Im9uIjoib2ZmIil9KX0sdykpXX0pXX0pfSl9dmFyIGhRPVt7dmFsdWU6Imh0dHAiLGxhYmVsOiJIVFRQIn0se3ZhbHVlOiJ3ZWJydGMiLGxhYmVsOiJXZWJSVEMifV0sZ1E9W3t2YWx1ZToiYXV0byIsbGFiZWw6IkF1dG8ifSx7dmFsdWU6ImgyNjQiLGxhYmVsOiJILjI2NCJ9LHt2YWx1ZToibWpwZWciLGxhYmVsOiJNSlBFRyJ9XSxmUT1be3ZhbHVlOiJoMjY0IixsYWJlbDoiSC4yNjQifSx7dmFsdWU6InZwOSIsbGFiZWw6IlZQOSJ9LHt2YWx1ZToidnA4IixsYWJlbDoiVlA4In1dLG1RPVt7dmFsdWU6IjAiLGxhYmVsOiJGdWxsIn0se3ZhbHVlOiIxOTIwIixsYWJlbDoiMTkyMCJ9LHt2YWx1ZToiMTYwMCIsbGFiZWw6IjE2MDAifSx7dmFsdWU6IjEyODAiLGxhYmVsOiIxMjgwIn0se3ZhbHVlOiI5NjAiLGxhYmVsOiI5NjAifSx7dmFsdWU6IjcyMCIsbGFiZWw6IjcyMCJ9XSxVND1bIjYwIiwiMzAiLCIyMCIsIjE1IiwiMTAiLCI1Il0ubWFwKCgkKT0+KHt2YWx1ZTokLGxhYmVsOiR9KSkscFE9W3t2YWx1ZToiMC40NSIsbGFiZWw6IjQ1JSJ9LHt2YWx1ZToiMC41NSIsbGFiZWw6IjU1JSJ9LHt2YWx1ZToiMC43IixsYWJlbDoiNzAlIn0se3ZhbHVlOiIwLjg1IixsYWJlbDoiODUlIn0se3ZhbHVlOiIxIixsYWJlbDoiMTAwJSJ9XSx1UT1be3ZhbHVlOiIxNTAwMDAwIixsYWJlbDoiMS41IE1icHMifSx7dmFsdWU6IjMwMDAwMDAiLGxhYmVsOiIzIE1icHMifSx7dmFsdWU6IjYwMDAwMDAiLGxhYmVsOiI2IE1icHMifSx7dmFsdWU6IjEwMDAwMDAwIixsYWJlbDoiMTAgTWJwcyJ9LHt2YWx1ZToiMTYwMDAwMDAiLGxhYmVsOiIxNiBNYnBzIn1dLHUwPSJzaXplLTMuNSI7ZnVuY3Rpb24gaTIoJCxKLFEpe2xldCBaPVN0cmluZygkKTtyZXR1cm4gSi5zb21lKChLKT0+Sy52YWx1ZT09PVopP0o6W3t2YWx1ZTpaLGxhYmVsOlEoJCl9LC4uLkpdfWZ1bmN0aW9uIEg0KHtzZXR0aW5nczokLG9uUGxheWJhY2tTZXR0aW5nc0NoYW5nZTpKLG9uRW5jb2RlclNldHRpbmdzQ2hhbmdlOlEsYWN0aXZlQ29kZWM6WixhdmNjU3VwcG9ydGVkOkssZW5jb2RlclNldHRpbmdzRGlzYWJsZWQ6WT0hMX0pe2xldFtxLEddPUEoITEpLE49JC50cmFuc3BvcnQ9PT0iaHR0cCIsQj0kLnRyYW5zcG9ydD09PSJ3ZWJydGMiO3JldHVybiBYKGUxLHtvcGVuOnEsb25PcGVuQ2hhbmdlOkcsImRhdGEtc3RyZWFtLXNldHRpbmdzIjoiIixzdW1tYXJ5Q2xhc3NOYW1lOiJncmlkIFtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b18xZnJfYXV0b10gaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbGVmdCIsc3VtbWFyeTpYKFoxLHtjaGlsZHJlbjpbWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzUwIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wOGVtXSBsZWFkaW5nLW5vbmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIixjaGlsZHJlbjoiU3RyZWFtIn0pLFgoInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzExcHhdIHRleHQtd2hpdGUvNDAganVzdGlmeS1zZWxmLWVuZCB1cHBlcmNhc2UiLGNoaWxkcmVuOlp9KV19KSxjaGlsZHJlbjpYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTEuNSBwYi0xLjUiLGNoaWxkcmVuOltYKFkwLHtpY29uOlgocjAse2NsYXNzTmFtZTp1MH0pLGxhYmVsOiJUcmFuc3BvcnQiLGNoaWxkcmVuOlgoSDAse2xhYmVsOiJUcmFuc3BvcnQiLHZhbHVlOiQudHJhbnNwb3J0LG9wdGlvbnM6aFEsZGlzYWJsZWQ6ITEsb25DaGFuZ2U6KEwpPT5KKHt0cmFuc3BvcnQ6TH0pfSl9KSxYKFkwLHtpY29uOlgocjAse2NsYXNzTmFtZTp1MH0pLGxhYmVsOiJIVFRQIGNvZGVjIixjaGlsZHJlbjpYKEgwLHtsYWJlbDoiSFRUUCBjb2RlYyIsdmFsdWU6Sz8kLmh0dHBDb2RlYzoibWpwZWciLG9wdGlvbnM6Z1EsZGlzYWJsZWQ6IU58fCFLLG9uQ2hhbmdlOihMKT0+Sih7aHR0cENvZGVjOkx9KX0pfSksWChZMCx7aWNvbjpYKHIwLHtjbGFzc05hbWU6dTB9KSxsYWJlbDoiV2ViUlRDIGNvZGVjIixjaGlsZHJlbjpYKEgwLHtsYWJlbDoiV2ViUlRDIGNvZGVjIix2YWx1ZTokLndlYlJ0Y0NvZGVjLG9wdGlvbnM6ZlEsZGlzYWJsZWQ6IUIsb25DaGFuZ2U6KEwpPT5KKHt3ZWJSdGNDb2RlYzpMfSl9KX0pLFgoWTAse2ljb246WChqMCx7Y2xhc3NOYW1lOnUwfSksbGFiZWw6Ik1heCBzaXplIixjaGlsZHJlbjpYKEgwLHtsYWJlbDoiTWF4IHNpemUiLHZhbHVlOlN0cmluZygkLm1heERpbWVuc2lvbiksb3B0aW9uczppMigkLm1heERpbWVuc2lvbixtUSxTdHJpbmcpLGRpc2FibGVkOlksb25DaGFuZ2U6KEwpPT5RKHttYXhEaW1lbnNpb246TnVtYmVyKEwpfSl9KX0pLFgoWTAse2ljb246WChqMCx7Y2xhc3NOYW1lOnUwfSksbGFiZWw6Ik1KUEVHIEZQUyIsY2hpbGRyZW46WChIMCx7bGFiZWw6Ik1KUEVHIEZQUyIsdmFsdWU6U3RyaW5nKCQubWpwZWdGcHMpLG9wdGlvbnM6aTIoJC5tanBlZ0ZwcyxVNCxTdHJpbmcpLGRpc2FibGVkOll8fCFOLG9uQ2hhbmdlOihMKT0+USh7bWpwZWdGcHM6TnVtYmVyKEwpfSl9KX0pLFgoWTAse2ljb246WChqMCx7Y2xhc3NOYW1lOnUwfSksbGFiZWw6Ik1KUEVHIHF1YWxpdHkiLGNoaWxkcmVuOlgoSDAse2xhYmVsOiJNSlBFRyBxdWFsaXR5Iix2YWx1ZTpTdHJpbmcoJC5tanBlZ1F1YWxpdHkpLG9wdGlvbnM6aTIoJC5tanBlZ1F1YWxpdHkscFEsKEwpPT5gJHtNYXRoLnJvdW5kKEwqMTAwKX0lYCksZGlzYWJsZWQ6WXx8IU4sb25DaGFuZ2U6KEwpPT5RKHttanBlZ1F1YWxpdHk6TnVtYmVyKEwpfSl9KX0pLFgoWTAse2ljb246WChqMCx7Y2xhc3NOYW1lOnUwfSksbGFiZWw6IlZpZGVvIEZQUyIsY2hpbGRyZW46WChIMCx7bGFiZWw6IlZpZGVvIEZQUyIsdmFsdWU6U3RyaW5nKCQuaDI2NEZwcyksb3B0aW9uczppMigkLmgyNjRGcHMsVTQsU3RyaW5nKSxkaXNhYmxlZDpZfHxOJiYoIUt8fCQuaHR0cENvZGVjPT09Im1qcGVnIiksb25DaGFuZ2U6KEwpPT5RKHtoMjY0RnBzOk51bWJlcihMKX0pfSl9KSxYKFkwLHtpY29uOlgoajAse2NsYXNzTmFtZTp1MH0pLGxhYmVsOiJWaWRlbyBiaXRyYXRlIixjaGlsZHJlbjpYKEgwLHtsYWJlbDoiVmlkZW8gYml0cmF0ZSIsdmFsdWU6U3RyaW5nKCQuaDI2NEJpdHJhdGUpLG9wdGlvbnM6aTIoJC5oMjY0Qml0cmF0ZSx1USwoTCk9PmAke0wvMWU2fSBNYnBzYCksZGlzYWJsZWQ6WXx8TiYmKCFLfHwkLmh0dHBDb2RlYz09PSJtanBlZyIpLG9uQ2hhbmdlOihMKT0+USh7aDI2NEJpdHJhdGU6TnVtYmVyKEwpfSl9KX0pXX0pfSl9ZnVuY3Rpb24gQzQoe29wZW46JCxvbkNsb3NlOkosdWRpZDpRLGRldmljZVJ1bnRpbWU6WixjdXJyZW50QXBwOkssZXZlbnRMb2dFdmVudHNFbmRwb2ludDpZLG1ldHJpY3NFbmRwb2ludDpxLGF4T3ZlcmxheUVuYWJsZWQ6RyxvblRvZ2dsZUF4T3ZlcmxheTpOLHN0cmVhbVNldHRpbmdzOkIsb25TdHJlYW1QbGF5YmFja1NldHRpbmdzQ2hhbmdlOkwsb25TdHJlYW1FbmNvZGVyU2V0dGluZ3NDaGFuZ2U6VixhY3RpdmVDb2RlYzpVLGF2Y2NTdXBwb3J0ZWQ6eixzdHJlYW1TZXR0aW5nc1BlbmRpbmc6ayx3aWR0aDpIfSl7cmV0dXJuIFgoTDIse29wZW46JCx3aWR0aDpILHN0eWxlOntiYWNrZ3JvdW5kQ29sb3I6VTJ9LGNoaWxkcmVuOltYKHoyLHtjaGlsZHJlbjpbWCh0OSx7Y2hpbGRyZW46IlRvb2xzIn0pLFgoajUse29uQ2xpY2s6Sn0pXX0pLCQmJlgoImRpdiIse2NsYXNzTmFtZToicC0zLjUgb3ZlcmZsb3cteS1hdXRvIGZsZXgtMSBmbGV4IGZsZXgtY29sIGdhcC0zIixjaGlsZHJlbjpbWChvNix7dWRpZDpRLGN1cnJlbnRBcHA6S30pLFgoTDQse3VkaWQ6USxjdXJyZW50QXBwQnVuZGxlSWQ6Sz8uYnVuZGxlSWQ/P251bGwsbWV0cmljc0VuZHBvaW50OnF9KSxYKEc0LHt1ZGlkOlEsZXZlbnRzRW5kcG9pbnQ6WX0pLFgoejQse3VkaWQ6USxydW50aW1lOlp9KSxYKG42LHtvdmVybGF5RW5hYmxlZDpHLG9uVG9nZ2xlT3ZlcmxheTpOfSksWChZNCx7dWRpZDpRLGJ1bmRsZUlkOks/LmJ1bmRsZUlkPz9udWxsfSksWChkNix7dWRpZDpRLGV4ZWM6RTF9KSxYKGk2LHt1ZGlkOlEsYnVuZGxlSWQ6Sz8uYnVuZGxlSWQ/P251bGx9KSxYKEg0LHtzZXR0aW5nczpCLG9uUGxheWJhY2tTZXR0aW5nc0NoYW5nZTpMLG9uRW5jb2RlclNldHRpbmdzQ2hhbmdlOlYsYWN0aXZlQ29kZWM6VSxhdmNjU3VwcG9ydGVkOnosZW5jb2RlclNldHRpbmdzRGlzYWJsZWQ6a30pXX0pXX0pfWZ1bmN0aW9uIEY0KCQsSil7bGV0IFE7dHJ5e1E9bmV3IFVSTCgkLndlYlNvY2tldERlYnVnZ2VyVXJsKX1jYXRjaHtyZXR1cm4gJH1sZXQgWj1gJHtRLnBhdGhuYW1lfSR7US5zZWFyY2h9YCxLPUoucHJvdG9jb2w9PT0iaHR0cHM6Ij8id3NzOiI6IndzOiIsWT1KLnByb3RvY29sPT09Imh0dHBzOiI/IndzcyI6IndzIixxPWAke0ouaG9zdH0ke1p9YCxHPSQuZGV2dG9vbHNGcm9udGVuZFVybDt0cnl7bGV0IE49bmV3IFVSTCgkLmRldnRvb2xzRnJvbnRlbmRVcmwsYCR7Si5wcm90b2NvbH0vLyR7Si5ob3N0fWApO04uc2VhcmNoUGFyYW1zLmRlbGV0ZSgid3MiKSxOLnNlYXJjaFBhcmFtcy5kZWxldGUoIndzcyIpLE4uc2VhcmNoUGFyYW1zLnNldChZLHEpLEc9YCR7Ti5wYXRobmFtZX0ke04uc2VhcmNofSR7Ti5oYXNofWB9Y2F0Y2h7fXJldHVybnsuLi4kLHdlYlNvY2tldERlYnVnZ2VyVXJsOmAke0t9Ly8ke0ouaG9zdH0ke1p9YCxkZXZ0b29sc0Zyb250ZW5kVXJsOkd9fWZ1bmN0aW9uIGEyKCQsSil7ZmV0Y2goZjEoImRldnRvb2xzL2hpZ2hsaWdodCIpLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpKU09OLnN0cmluZ2lmeSh7dGFyZ2V0SWQ6JCxvbjpKfSksa2VlcGFsaXZlOiEwfSkuY2F0Y2goKCk9Pnt9KX1mdW5jdGlvbiBaOCgpe2xldCAkPWYxKCJkZXZ0b29scy9yZWxlYXNlIik7dHJ5e2lmKHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3Iuc2VuZEJlYWNvbil7bGV0IEo9bmV3IEJsb2IoWyJ7fSJdLHt0eXBlOiJhcHBsaWNhdGlvbi9qc29uIn0pO2lmKG5hdmlnYXRvci5zZW5kQmVhY29uKCQsSikpcmV0dXJufX1jYXRjaHt9ZmV0Y2goJCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6Int9IixrZWVwYWxpdmU6ITB9KS5jYXRjaCgoKT0+e30pfWZ1bmN0aW9uIGs0KCQpe2xldCBKPSQuY29udGVudERvY3VtZW50O2lmKCFKKXJldHVybjtsZXQgUT0oKT0+e2xldCBZPVtKXTt3aGlsZShZLmxlbmd0aCl7bGV0IHE9WS5wb3AoKSxHPXEucXVlcnlTZWxlY3RvckFsbCgiW2FyaWEtbGFiZWxdLFt0aXRsZV0iKTtmb3IobGV0IE4gb2YgRyl7bGV0IEI9Ti5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiKXx8Ti50aXRsZXx8IiI7aWYoL150b2dnbGUgc2NyZWVuY2FzdCQvaS50ZXN0KEIpKXJldHVybiBOfWZvcihsZXQgTiBvZiBxLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSlpZihOLnNoYWRvd1Jvb3QpWS5wdXNoKE4uc2hhZG93Um9vdCl9cmV0dXJuIG51bGx9LFo9MCxLPSgpPT57WisrO2xldCBZPVEoKTtpZihZJiZZLmdldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIikhPT0iZmFsc2UiKXtZLmNsaWNrKCk7cmV0dXJufWlmKFo8MjApc2V0VGltZW91dChLLDEwMCl9O0soKX1mdW5jdGlvbiBNNCgkKXtsZXQgSj1bXSxRPW5ldyBNYXA7Zm9yKGxldCBaIG9mICQpe2xldCBLPVouYXBwTmFtZXx8Wi5idW5kbGVJZHx8IlVua25vd24iLFk9Wi5idW5kbGVJZHx8SyxxPVEuZ2V0KFkpO2lmKCFxKXE9e2tleTpZLGFwcE5hbWU6SyxidW5kbGVJZDpaLmJ1bmRsZUlkLHRhcmdldHM6W119LFEuc2V0KFkscSksSi5wdXNoKFkpO3EudGFyZ2V0cy5wdXNoKFopfXJldHVybiBKLm1hcCgoWik9PlEuZ2V0KFopKX1mdW5jdGlvbiBPNCgkLEope2xldFtRLFpdPUEoe30pLEs9VDEoKCk9Pkouc2xpY2UoKS5zb3J0KCkuam9pbigifCIpLFtKXSk7cmV0dXJuIGIoKCk9PntpZighJClyZXR1cm47bGV0IFk9ITE7Zm9yKGxldCBxIG9mIEope2lmKCFxKWNvbnRpbnVlO2xldCBHPWAkeyR9OiR7cX1gLE49SDIuZ2V0KEcpO2lmKHR5cGVvZiBOPT09InN0cmluZyJ8fE49PT1udWxsKXtaKChCKT0+QltxXT09PU4/Qjp7Li4uQixbcV06Tn0pO2NvbnRpbnVlfWM2KEUxLCQscSkudGhlbigoQik9PntpZihZKXJldHVybjtaKChMKT0+KHsuLi5MLFtxXTpCfSkpfSl9cmV0dXJuKCk9PntZPSEwfX0sWyQsS10pLFF9ZnVuY3Rpb24gQTQoe3VkaWQ6JCx0YXJnZXRzOkosc2VsZWN0ZWQ6USxvblNlbGVjdFRhcmdldDpaLG9uUmVmcmVzaDpLfSl7bGV0IFk9TTQoSikscT1ZLm1hcCgoSCk9PkguYnVuZGxlSWQpLmZpbHRlcigoSCk9PiEhSCksRz1PNCgkLHEpLFtOLEJdPUEoITEpLFtMLFZdPUEobnVsbCksVT1UKG51bGwpLHo9VChudWxsKTtiKCgpPT57aWYoIU4pcmV0dXJuO2xldCBIPShDKT0+e2lmKCF6LmN1cnJlbnQpcmV0dXJuO2lmKCF6LmN1cnJlbnQuY29udGFpbnMoQy50YXJnZXQpKUIoITEpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixIKSwoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixIKX0sW05dKSxiKCgpPT57aWYoTilyZXR1cm47aWYoVS5jdXJyZW50KWEyKFUuY3VycmVudCwhMSksVS5jdXJyZW50PW51bGw7WjgoKX0sW05dKSxiKCgpPT57bGV0IEg9KCk9Plo4KCk7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsSCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsSCksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLEgpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLEgpfX0sW10pO2xldCBrPVE/KFEudGl0bGV8fFEudXJsfHxRLmFwcE5hbWV8fCJVbnRpdGxlZCIpLnNsaWNlKDAsOTApOiJTZWxlY3QgdGFyZ2V0IjtyZXR1cm4gWCgiZGl2Iix7cmVmOnosY2xhc3NOYW1lOiJyZWxhdGl2ZSB3LWZ1bGwgbWluLXctMCIsY2hpbGRyZW46W1goImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+e0IoKEgpPT57aWYoIUgpSygpO3JldHVybiFIfSl9LGNsYXNzTmFtZToidy1mdWxsIG1pbi13LTAgaC1bMjZweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIGJnLXBhbmVsIHRleHQtd2hpdGUvOTAgYm9yZGVyIGJvcmRlci13aGl0ZS8xMiByb3VuZGVkLW1kIHRleHQtWzEycHhdIHB4LTIgY3Vyc29yLXBvaW50ZXIgdGV4dC1sZWZ0IiwiYXJpYS1oYXNwb3B1cCI6Imxpc3Rib3giLCJhcmlhLWV4cGFuZGVkIjpOLCJhcmlhLWxhYmVsIjoiV2ViS2l0IHRhcmdldCIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6Im92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIG1pbi13LTAiLGNoaWxkcmVuOmt9KSxYKHkyLHtzaXplOjEyLHN0cm9rZVdpZHRoOjJ9KV19KSxOJiZYKCJ1bCIse3JvbGU6Imxpc3Rib3giLGNsYXNzTmFtZToiYWJzb2x1dGUgdG9wLVtjYWxjKDEwMCUrNHB4KV0gbGVmdC0wIG0tMCBwLTEgbGlzdC1ub25lIGJnLXBhbmVsIGJvcmRlciBib3JkZXItd2hpdGUvMTIgcm91bmRlZC1sZyBzaGFkb3ctWzBfOHB4XzI0cHhfcmdiYSgwLDAsMCwwLjUpXSBtaW4tdy1bMjIwcHhdIG1heC13LVszNjBweF0gbWF4LWgtWzMyMHB4XSBvdmVyZmxvdy15LWF1dG8gei01MCIsY2hpbGRyZW46WS5tYXAoKEgpPT57bGV0IEM9SC5idW5kbGVJZD9HW0guYnVuZGxlSWRdOm51bGw7cmV0dXJuIFgoImxpIix7Y2xhc3NOYW1lOiJsaXN0LW5vbmUgbS0wIHAtMCIsY2hpbGRyZW46W1goImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMS41IHB0LTEgcGItMC41IHRleHQtWzEycHhdIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZS9bMC45Ml0iLGNoaWxkcmVuOltDP1goImltZyIse3NyYzpDLGFsdDoiIixjbGFzc05hbWU6InctNCBoLTQgcm91bmRlZC1bM3B4XSBzaHJpbmstMCBvYmplY3QtY292ZXIifSk6WCgic3BhbiIse2NsYXNzTmFtZToidy00IGgtNCByb3VuZGVkLVszcHhdIHNocmluay0wIG9iamVjdC1jb3ZlciIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSxYKCJzcGFuIix7Y2xhc3NOYW1lOiJvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCIsY2hpbGRyZW46SC5hcHBOYW1lfSldfSksWCgidWwiLHtyb2xlOiJncm91cCIsY2xhc3NOYW1lOiJsaXN0LW5vbmUgbS0wIHAtMCBwbC1bMjZweF0iLGNoaWxkcmVuOkgudGFyZ2V0cy5tYXAoKEYpPT57bGV0IE89UT8uaWQ9PT1GLmlkLEk9ISFGLmluVXNlQnlPdGhlckluc3BlY3RvciYmIU8sdz0oRi50aXRsZXx8Ri51cmx8fEYuYXBwTmFtZXx8IlVudGl0bGVkIikuc2xpY2UoMCw5MCksUz1MPT09Ri5pZCYmIUksaj0iZmxleCBmbGV4LWNvbCBweC0yIHB5LVszcHhdIHJvdW5kZWQgdGV4dC1bMTJweF0gbGVhZGluZy1bMS4zNV0iO3JldHVybiBYKCJsaSIse3JvbGU6Im9wdGlvbiIsImFyaWEtc2VsZWN0ZWQiOk8sImFyaWEtZGlzYWJsZWQiOkksdGFiSW5kZXg6ST8tMTowLHRpdGxlOkk/IkFscmVhZHkgYmVpbmcgaW5zcGVjdGVkIGJ5IGFub3RoZXIgZGVidWdnZXIiOnZvaWQgMCxvbk1vdXNlRW50ZXI6KCk9PntpZihJKXJldHVybjtpZihVLmN1cnJlbnQmJlUuY3VycmVudCE9PUYuaWQpYTIoVS5jdXJyZW50LCExKTtVLmN1cnJlbnQ9Ri5pZCxWKEYuaWQpLGEyKEYuaWQsITApfSxvbk1vdXNlTGVhdmU6KCk9PntpZihVLmN1cnJlbnQ9PT1GLmlkKWEyKEYuaWQsITEpLFUuY3VycmVudD1udWxsO1YoKG0pPT5tPT09Ri5pZD9udWxsOm0pfSxvbkNsaWNrOigpPT57aWYoSSlyZXR1cm47WihGLmlkKSxCKCExKX0sY2xhc3NOYW1lOmBmbGV4IGZsZXgtY29sIHB4LTIgcHktWzNweF0gcm91bmRlZCB0ZXh0LVsxMnB4XSBsZWFkaW5nLVsxLjM1XSAke0k/Im9wYWNpdHktNDAgY3Vyc29yLW5vdC1hbGxvd2VkIGl0YWxpYyB0ZXh0LXdoaXRlLzg1IjpTPyJiZy1bcmdiYSgxMCwxMzIsMjU1LDAuMjIpXSB0ZXh0LXdoaXRlLzg1IGN1cnNvci1wb2ludGVyIjpPPyJiZy13aGl0ZS9bMC4wNl0gdGV4dC13aGl0ZS84NSBjdXJzb3ItcG9pbnRlciI6InRleHQtd2hpdGUvODUgY3Vyc29yLXBvaW50ZXIifWAsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6ImJsb2NrIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjp3fSksRi51cmwmJkYudXJsIT09ImFib3V0OmJsYW5rIiYmWCgic3BhbiIse2NsYXNzTmFtZToiYmxvY2sgZm9udC1tb25vIHRleHQtWzEwcHhdIHRleHQtd2hpdGUvWzAuNDJdIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjpGLnVybH0pXX0sRi5pZCl9KX0pXX0sSC5rZXkpfSl9KV19KX1mdW5jdGlvbiBXNCh7b3BlbjokLG9uQ2xvc2U6Six1ZGlkOlEsdGFyZ2V0czpaLHNlbGVjdGVkVGFyZ2V0SWQ6SyxvblNlbGVjdFRhcmdldDpZLGxvYWRpbmc6cSxlcnJvcjpHLG9uUmVmcmVzaDpOLHdpZHRoOkJ9KXtsZXQgTD1LP1ouZmluZCgoVik9PlYuaWQ9PT1LKT8/bnVsbDpudWxsO3JldHVybiBYKEwyLHtvcGVuOiQsd2lkdGg6QixjaGlsZHJlbjpbWCh6Mix7Y2hpbGRyZW46W1oubGVuZ3RoPjA/WChBNCx7dWRpZDpRLHRhcmdldHM6WixzZWxlY3RlZDpMLG9uU2VsZWN0VGFyZ2V0Olksb25SZWZyZXNoOk59KTpYKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlL1swLjQ4XSBvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCIsY2hpbGRyZW46cT8iTG9va2luZyBmb3IgU2FmYXJpIGFuZCBpbnNwZWN0YWJsZSB3ZWJ2aWV3cy4uLiI6Ik5vIGluc3BlY3RhYmxlIFNhZmFyaSBvciBXS1dlYlZpZXcgdGFyZ2V0cyJ9KSxYKGo1LHtvbkNsaWNrOkosYXJpYUxhYmVsOiJDbG9zZSBXZWJLaXQgRGV2VG9vbHMiLHRpdGxlOiJDbG9zZSIsaWNvblNpemU6MTV9KV19KSxYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgtMSBtaW4taC0wIGJnLXdoaXRlIHJlbGF0aXZlIixjaGlsZHJlbjpHP1goImRpdiIse2NsYXNzTmFtZToiaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtNiBiZy1wYW5lbC1kZWVwIHRleHQtd2hpdGUvWzAuNThdIHRleHQtY2VudGVyIHRleHQtWzEzcHhdIixjaGlsZHJlbjpHfSk6TCYmJD9YKCJpZnJhbWUiLHtzcmM6TC5kZXZ0b29sc0Zyb250ZW5kVXJsLHRpdGxlOmBXZWJLaXQgRGV2VG9vbHMgLSAke0wudGl0bGV8fEwudXJsfHxMLmlkfWAsY2xhc3NOYW1lOiJ3LWZ1bGwgaC1mdWxsIGJvcmRlci1ub25lIGJsb2NrIGJnLXdoaXRlIixvbkxvYWQ6KFYpPT5rNChWLmN1cnJlbnRUYXJnZXQpfSxMLmlkKTpYKCJkaXYiLHtjbGFzc05hbWU6ImgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTYgYmctcGFuZWwtZGVlcCB0ZXh0LXdoaXRlL1swLjU4XSB0ZXh0LWNlbnRlciB0ZXh0LVsxM3B4XSIsY2hpbGRyZW46TD8iRGV2VG9vbHMgcGF1c2VkIOKAlCBvcGVuIHRoZSBwYW5lbCB0byByZWF0dGFjaC4iOiJPcGVuIFNhZmFyaSBvciBhbiBpbnNwZWN0YWJsZSBXS1dlYlZpZXcgaW4gdGhlIHNpbXVsYXRvci4ifSl9KV19KX1mdW5jdGlvbiBsUSh7aG9zdFBhdGg6JCxleGVjOkosdWRpZDpRLG9uVXBsb2FkU3RhcnQ6WixvblVwbG9hZFByb2dyZXNzOkssb25VcGxvYWRFbmQ6WSxvbkhvc3RQYXRoRHJvcDpxfSl7cT8uKCQpO2xldCBHPSQuc3BsaXQoIi8iKS5wb3AoKT8/ImltYWdlIixOPVooRywibWVkaWEiKTtyZXR1cm4gSyhOLG51bGwpLHQ2KCQsSixRKS50aGVuKCgpPT5ZKE4sITApKS5jYXRjaCgoQik9PlkoTiwhMSxCIGluc3RhbmNlb2YgRXJyb3I/Qi5tZXNzYWdlOiJBZGQgZmFpbGVkIikpfWZ1bmN0aW9uIF80KHtleGVjOiQsdWRpZDpKLGVuYWJsZWQ6USxvblVwbG9hZFN0YXJ0Olosb25VcGxvYWRQcm9ncmVzczpLLG9uVXBsb2FkRW5kOlksb25VbnN1cHBvcnRlZDpxLG9uSG9zdFBhdGhEcm9wOkd9KXtsZXRbTixCXT1BKCExKSxMPVQoMCksVj1EKGFzeW5jKEgpPT57aWYoSC5wcmV2ZW50RGVmYXVsdCgpLEguc3RvcFByb3BhZ2F0aW9uKCksTC5jdXJyZW50PTAsQighMSksIVF8fCFKKXJldHVybjtsZXQgQz1ILmRhdGFUcmFuc2Zlci5nZXREYXRhKGw1KTtpZihDKXtsUSh7aG9zdFBhdGg6QyxleGVjOiQsdWRpZDpKLG9uVXBsb2FkU3RhcnQ6WixvblVwbG9hZFByb2dyZXNzOkssb25VcGxvYWRFbmQ6WSxvbkhvc3RQYXRoRHJvcDpHfSk7cmV0dXJufWxldCBGPUFycmF5LmZyb20oSC5kYXRhVHJhbnNmZXIuZmlsZXMpO2lmKEYubGVuZ3RoPT09MClyZXR1cm47Zm9yKGxldCBPIG9mIEYpe2xldCBJPWU2KE8pO2lmKCFJKXtxKE8pO2NvbnRpbnVlfWxldCB3PVooTy5uYW1lLEkpO1E0KE8sSSwkLEosKFMpPT5LKHcsUykpLnRoZW4oKCk9PlkodywhMCkpLmNhdGNoKChTKT0+WSh3LCExLFMgaW5zdGFuY2VvZiBFcnJvcj9TLm1lc3NhZ2U6IlVwbG9hZCBmYWlsZWQiKSl9fSxbUSxKLCQsWixLLFkscSxHXSksVT1EKChIKT0+e2lmKEgucHJldmVudERlZmF1bHQoKSxRKUguZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9ImNvcHkifSxbUV0pLHo9RCgoSCk9PntpZihILnByZXZlbnREZWZhdWx0KCksIVEpcmV0dXJuO2lmKEwuY3VycmVudCsrLEwuY3VycmVudD09PTEpQighMCl9LFtRXSksaz1EKChIKT0+e2lmKEgucHJldmVudERlZmF1bHQoKSxMLmN1cnJlbnQtLSxMLmN1cnJlbnQ8PTApTC5jdXJyZW50PTAsQighMSl9LFtdKTtyZXR1cm57aXNEcmFnT3ZlcjpOLGRyb3Bab25lUHJvcHM6e29uRHJhZ092ZXI6VSxvbkRyYWdFbnRlcjp6LG9uRHJhZ0xlYXZlOmssb25Ecm9wOlZ9fX1mdW5jdGlvbiBQNCgkKXtsZXQgSj1uZXcgVWludDhBcnJheSg2NTUzNiksUT0wLFo9MCxLPTEwMjQsWT1uZXcgVGV4dERlY29kZXIoImxhdGluMSIpLHE9KFUpPT57aWYoUStVLmxlbmd0aD5KLmxlbmd0aCl7aWYoWj4wKUouY29weVdpdGhpbigwLFosUSksUS09WixaPTA7aWYoUStVLmxlbmd0aD5KLmxlbmd0aCl7bGV0IHo9Si5sZW5ndGg7d2hpbGUoejxRK1UubGVuZ3RoKXoqPTI7bGV0IGs9bmV3IFVpbnQ4QXJyYXkoeik7ay5zZXQoSi5zdWJhcnJheSgwLFEpKSxKPWt9fUouc2V0KFUsUSksUSs9VS5sZW5ndGh9LEc9KFUpPT57bGV0IHo9TWF0aC5taW4oUS00LFUrSyk7Zm9yKGxldCBrPVU7azw9ejtrKyspaWYoSltrXT09PTEzJiZKW2srMV09PT0xMCYmSltrKzJdPT09MTMmJkpbayszXT09PTEwKXJldHVybiBrO3JldHVybi0xfSxOPShVLHopPT57bGV0IGs9WS5kZWNvZGUoSi5zdWJhcnJheShVLHopKSxIPS9jb250ZW50LWxlbmd0aDpccyooXGQrKS9pLmV4ZWMoayk7cmV0dXJuIEg/TnVtYmVyKEhbMV0pOm51bGx9LEI9MCxMPShVKT0+e2xldCB6PS0xO2ZvcihsZXQgaz1VO2s8US0xO2srKylpZihKW2tdPT09MjU1JiZKW2srMV09PT0yMTYpe3o9azticmVha31pZih6PT09LTEpcmV0dXJuIG51bGw7Zm9yKGxldCBrPU1hdGgubWF4KHorMixCKTtrPFEtMTtrKyspaWYoSltrXT09PTI1NSYmSltrKzFdPT09MjE3KXJldHVybiBCPTAse3M6eixlOmsrMn07cmV0dXJuIEI9TWF0aC5tYXgoeisyLFEtMSksbnVsbH0sVj0oKT0+e3doaWxlKFo8USl7bGV0IFU9RyhaKTtpZihVPj0wKXtsZXQgaz1OKFosVSk7aWYoayE9bnVsbCYmaz4wKXtsZXQgSD1VKzQsQz1IK2s7aWYoUTxDKWJyZWFrOyQoSi5zdWJhcnJheShILEMpKSxaPUM7Y29udGludWV9fWVsc2UgaWYoUS1aPD1LKWJyZWFrO2xldCB6PUwoWik7aWYoIXopYnJlYWs7JChKLnN1YmFycmF5KHoucyx6LmUpKSxaPXouZX1pZihaPjApe2lmKFo8USlKLmNvcHlXaXRoaW4oMCxaLFEpO1EtPVosQj1CPlo/Qi1aOjAsWj0wfX07cmV0dXJue3B1c2goVSl7aWYoVS5sZW5ndGg9PT0wKXJldHVybjtxKFUpLFYoKX19fWZ1bmN0aW9uIEQ0KCQpe2xldCBKPVQobmV3IFNldCksUT1EKChaKT0+e3JldHVybiBKLmN1cnJlbnQuYWRkKFopLCgpPT57Si5jdXJyZW50LmRlbGV0ZShaKX19LFtdKTtyZXR1cm4gYigoKT0+e2lmKCEkKXJldHVybjtsZXQgWj1uZXcgQWJvcnRDb250cm9sbGVyLEs9ITEsWT1udWxsLHE9bmV3IFVSTCgkKTtxLnNlYXJjaFBhcmFtcy5zZXQoInJhdyIsIjEiKTtsZXQgRz1xLnRvU3RyaW5nKCksTj0oKT0+e2lmKEt8fFouc2lnbmFsLmFib3J0ZWR8fFkpcmV0dXJuO1k9c2V0VGltZW91dCgoKT0+e1k9bnVsbCxMKCl9LDEwMDApfSxCPShWKT0+e2lmKEouY3VycmVudC5zaXplPT09MClyZXR1cm47bGV0IFU9VVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbVl0se3R5cGU6ImltYWdlL2pwZWcifSkpO2ZvcihsZXQgeiBvZiBKLmN1cnJlbnQpeihVKX0sTD1hc3luYygpPT57dHJ5e2xldCBVPShhd2FpdCBmZXRjaChHLHtzaWduYWw6Wi5zaWduYWx9KSkuYm9keT8uZ2V0UmVhZGVyKCk7aWYoIVUpe04oKTtyZXR1cm59bGV0IHo9UDQoQik7d2hpbGUoITApe2xldHtkb25lOmssdmFsdWU6SH09YXdhaXQgVS5yZWFkKCk7aWYoaylicmVhaztpZihIJiZILmxlbmd0aCl6LnB1c2goSCl9fWNhdGNoe31maW5hbGx5e04oKX19O3JldHVybiBMKCksKCk9PntpZihLPSEwLFkpY2xlYXJUaW1lb3V0KFkpO1ouYWJvcnQoKX19LFskXSkse3N1YnNjcmliZUZyYW1lOlEsZnJhbWU6bnVsbH19ZnVuY3Rpb24gdzQoKXtsZXRbJF09QShvMCk7cmV0dXJue3N1cHBvcnRlZDokfX1mdW5jdGlvbiBjNSgkLEope3JldHVybiAkPT09ImZpcnN0LWZyYW1lLXRpbWVvdXQiJiZKPT09ImNvbm5lY3RlZCI/ImNvZGVjIjoidHJhbnNwb3J0In12YXIgVDQ9ImFsbCI7Y2xhc3MgbjIgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJXZWJSVEMgc2lnbmFsaW5nIHN0YXllZCBidXN5IGZvciB0b28gbG9uZy4gUmVsb2FkIHRvIHRyeSBhZ2Fpbi4iKTt0aGlzLm5hbWU9IldlYlJ0Y1NpZ25hbGluZ0J1c3lFcnJvciJ9fWNsYXNzIHI1IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiV2ViUlRDIHNpZ25hbGluZyB0aW1lZCBvdXQuIik7dGhpcy5uYW1lPSJXZWJSdGNTaWduYWxpbmdUaW1lb3V0RXJyb3IifX1mdW5jdGlvbiBvNSgkKXtyZXR1cm4gJC5yZWFzb24/P25ldyBET01FeGNlcHRpb24oIlRoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQiLCJBYm9ydEVycm9yIil9ZnVuY3Rpb24gZFEoJCxKKXtpZihKPy5hYm9ydGVkKXJldHVybiBQcm9taXNlLnJlamVjdChvNShKKSk7cmV0dXJuIG5ldyBQcm9taXNlKChRLFopPT57bGV0IEs9c2V0VGltZW91dChZLCQpO2Z1bmN0aW9uIFkoKXtKPy5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIscSksUSgpfWZ1bmN0aW9uIHEoKXtjbGVhclRpbWVvdXQoSyksWihKP281KEopOm5ldyBET01FeGNlcHRpb24oIlRoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQiLCJBYm9ydEVycm9yIikpfUo/LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixxLHtvbmNlOiEwfSl9KX1hc3luYyBmdW5jdGlvbiBJNCh7dXJsOiQsc2Vzc2lvbklkOkosa2VlcGFsaXZlOlE9ITEsc2VuZEJlYWNvbjpaLGZldGNoSW1wbDpLPWZldGNofSl7bGV0IFk9SlNPTi5zdHJpbmdpZnkoe3Nlc3Npb25JZDpKfSkscT1aPz8odHlwZW9mIG5hdmlnYXRvcjwidSImJnR5cGVvZiBuYXZpZ2F0b3Iuc2VuZEJlYWNvbj09PSJmdW5jdGlvbiI/bmF2aWdhdG9yLnNlbmRCZWFjb24uYmluZChuYXZpZ2F0b3IpOnZvaWQgMCk7aWYoUSYmcSl0cnl7aWYocSgkLG5ldyBCbG9iKFtZXSx7dHlwZToidGV4dC9wbGFpbjtjaGFyc2V0PVVURi04In0pKSlyZXR1cm59Y2F0Y2h7fWF3YWl0IEsoJCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6WSxrZWVwYWxpdmU6UX0pLnRoZW4oKCk9PntyZXR1cm59LCgpPT57cmV0dXJufSl9YXN5bmMgZnVuY3Rpb24gRTQoe3VybDokLGJvZHk6SixzaWduYWw6USxyZXF1ZXN0VGltZW91dE1zOlosYnVzeVJldHJ5SW50ZXJ2YWxNczpLLGJ1c3lSZXRyeUNvdW50OlksZmV0Y2hJbXBsOnE9ZmV0Y2h9KXtmb3IobGV0IEc9MDtHPD1ZO0crKyl7aWYoUT8uYWJvcnRlZCl0aHJvdyBvNShRKTtsZXQgTj1uZXcgQWJvcnRDb250cm9sbGVyLEI9ITEsTD0oKT0+Ti5hYm9ydChRP281KFEpOnZvaWQgMCk7UT8uYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLEwse29uY2U6ITB9KTtsZXQgVj1zZXRUaW1lb3V0KCgpPT57Qj0hMCxOLmFib3J0KCl9LFopLFU7dHJ5e1U9YXdhaXQgcSgkLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sc2lnbmFsOk4uc2lnbmFsLGJvZHk6Sn0pfWNhdGNoKHope2lmKEImJiFRPy5hYm9ydGVkKXRocm93IG5ldyByNTt0aHJvdyB6fWZpbmFsbHl7Y2xlYXJUaW1lb3V0KFYpLFE/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixMKX1pZihVLnN0YXR1cyE9PTQwOSlyZXR1cm4gVTtpZihhd2FpdCBVLmJvZHk/LmNhbmNlbCgpLEc9PT1ZKXRocm93IG5ldyBuMjthd2FpdCBkUShLLFEpfXRocm93IG5ldyBuMn12YXIgY1E9W3t1cmxzOlsic3R1bjpzdHVuLmwuZ29vZ2xlLmNvbToxOTMwMiJdfSx7dXJsczpbInN0dW46c3R1bjEubC5nb29nbGUuY29tOjE5MzAyIl19XSxvUT0zMDAwLHJRPTIwMDAwLGlRPTQwMDAsYVE9NTAwLG5RPTMwLHNRPTUwMCx0UT01MDAwO2Z1bmN0aW9uIHk0KCl7aWYodHlwZW9mIGNyeXB0by5yYW5kb21VVUlEPT09ImZ1bmN0aW9uIilyZXR1cm4gY3J5cHRvLnJhbmRvbVVVSUQoKTtsZXQgJD1jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDE2KSk7JFs2XT0kWzZdJjE1fDY0LCRbOF09JFs4XSY2M3wxMjg7bGV0IEo9QXJyYXkuZnJvbSgkLChRKT0+US50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKTtyZXR1cm5gJHtKLnNsaWNlKDAsOCl9LSR7Si5zbGljZSg4LDEyKX0tJHtKLnNsaWNlKDEyLDE2KX0tJHtKLnNsaWNlKDE2LDIwKX0tJHtKLnNsaWNlKDIwKX1gfWZ1bmN0aW9uIGI0KHtvZmZlclVybDokLGNsb3NlVXJsOkosZW5hYmxlZDpRLGNvZGVjOlo9ImgyNjQiLGljZVNlcnZlcnM6S30pe2xldFtZLHFdPUEobnVsbCksW0csTl09QShudWxsKSxbQixMXT1BKG51bGwpLFtWLFVdPUEoMCksej1UKHZvaWQgMCksaz1UKCExKSxIPVQoMCksQz1EKCgpPT57aWYoay5jdXJyZW50PSEwLEguY3VycmVudD0wLHouY3VycmVudCE9PXZvaWQgMCl3aW5kb3cuY2xlYXJUaW1lb3V0KHouY3VycmVudCksei5jdXJyZW50PXZvaWQgMDtOKG51bGwpLEwobnVsbCl9LFtdKTtyZXR1cm4gYigoKT0+e0guY3VycmVudD0wfSxbUSwkLEosWixLXSksYigoKT0+e2lmKCFRfHwhJClyZXR1cm47aWYoTihudWxsKSx0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24+InUifHx0eXBlb2YgUlRDUnRwUmVjZWl2ZXI+InUiKXtxKG51bGwpLEwoIldlYlJUQyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci4iKSxOKHtzZXNzaW9uSWQ6eTQoKSxraW5kOiJwZXJtYW5lbnQifSk7cmV0dXJufWxldCBGPSExLE89bnVsbCxJLHc9bnVsbCxTPSExLGo9bmV3IEFib3J0Q29udHJvbGxlciwkMT15NCgpLG09Sz8ubGVuZ3RoP0s6Y1E7aWYocShudWxsKSxOKG51bGwpLEwobnVsbCksay5jdXJyZW50PSExLHouY3VycmVudCE9PXZvaWQgMCl3aW5kb3cuY2xlYXJUaW1lb3V0KHouY3VycmVudCksei5jdXJyZW50PXZvaWQgMDtsZXQgYz0oeD0hMSk9PntpZih3KXJldHVybiB3O3JldHVybiB3PUk0KHt1cmw6SixzZXNzaW9uSWQ6JDEsa2VlcGFsaXZlOnh9KSx3fSxuPSgpPT52b2lkIGMoITApO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsbiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsbik7bGV0IG89KCk9PntxKG51bGwpLE8/LmNsb3NlKCl9LHI9KHgpPT57aWYoRnx8UylyZXR1cm47Uz0hMCxMKHgpLE4oe3Nlc3Npb25JZDokMSxraW5kOiJwZXJtYW5lbnQifSksbygpLGMoKX0sUTE9KCk9PntpZihGfHxTKXJldHVybjtTPSEwLG8oKSxjKCkuZmluYWxseSgoKT0+e2lmKCFGKU4oe3Nlc3Npb25JZDokMSxraW5kOiJjb2RlYyIsY29kZWM6Wn0pfSl9LE4xPSh4KT0+e2lmKEZ8fFMpcmV0dXJuO1M9ITAsTihudWxsKTtsZXQgYT1ILmN1cnJlbnQrKyxLMT1NYXRoLm1pbihzUSoyKipNYXRoLm1pbihhLDQpLHRRKTtMKGAke3h9IFJldHJ5aW5nLi4uYCksbygpLGMoKS5maW5hbGx5KCgpPT57aWYoRilyZXR1cm47ST13aW5kb3cuc2V0VGltZW91dCgoKT0+e2lmKCFGKVUoKEwxKT0+TDErMSl9LEsxKX0pfSxkPSh4KT0+bmV3IFByb21pc2UoKGEpPT57aWYoeC5pY2VHYXRoZXJpbmdTdGF0ZT09PSJjb21wbGV0ZSIpe2EoKTtyZXR1cm59bGV0IEsxLEwxPSExLEoxPSgpPT57aWYoTDEpcmV0dXJuO2lmKEwxPSEwLHgucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaWNlZ2F0aGVyaW5nc3RhdGVjaGFuZ2UiLFkxKSxLMSE9PXZvaWQgMCl3aW5kb3cuY2xlYXJUaW1lb3V0KEsxKTthKCl9LFkxPSgpPT57aWYoeC5pY2VHYXRoZXJpbmdTdGF0ZT09PSJjb21wbGV0ZSIpSjEoKX07eC5hZGRFdmVudExpc3RlbmVyKCJpY2VnYXRoZXJpbmdzdGF0ZWNoYW5nZSIsWTEpLEsxPXdpbmRvdy5zZXRUaW1lb3V0KEoxLG9RKX0pO3JldHVybihhc3luYygpPT57dHJ5e089bmV3IFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOm0saWNlVHJhbnNwb3J0UG9saWN5OlQ0fSk7bGV0IHg9Ty5hZGRUcmFuc2NlaXZlcigidmlkZW8iLHtkaXJlY3Rpb246InJlY3Zvbmx5In0pLGE9UlRDUnRwUmVjZWl2ZXIuZ2V0Q2FwYWJpbGl0aWVzKCJ2aWRlbyIpLEsxPVo9PT0iaDI2NCI/InZpZGVvL0gyNjQiOlo9PT0idnA5Ij8idmlkZW8vVlA5IjoidmlkZW8vVlA4IjtpZihhPy5jb2RlY3MubGVuZ3RoJiYic2V0Q29kZWNQcmVmZXJlbmNlcyJpbiB4KXtsZXQgeT1LMS50b0xvd2VyQ2FzZSgpO3guc2V0Q29kZWNQcmVmZXJlbmNlcyhbLi4uYS5jb2RlY3MuZmlsdGVyKChnKT0+Zy5taW1lVHlwZS50b0xvd2VyQ2FzZSgpPT09eSksLi4uYS5jb2RlY3MuZmlsdGVyKChnKT0+Zy5taW1lVHlwZS50b0xvd2VyQ2FzZSgpIT09eSldKX1PLm9udHJhY2s9KHkpPT57aWYoRilyZXR1cm47aWYoay5jdXJyZW50PSExLHkudHJhY2sub25lbmRlZD0oKT0+TjEoIldlYlJUQyB2aWRlbyB0cmFjayBlbmRlZC4iKSxxKHkuc3RyZWFtc1swXT8/bmV3IE1lZGlhU3RyZWFtKFt5LnRyYWNrXSkpLHouY3VycmVudCE9PXZvaWQgMCl3aW5kb3cuY2xlYXJUaW1lb3V0KHouY3VycmVudCk7ei5jdXJyZW50PXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57aWYoei5jdXJyZW50PXZvaWQgMCxGfHxrLmN1cnJlbnQpcmV0dXJuO2xldCBnPU8/LmNvbm5lY3Rpb25TdGF0ZT8/ImNsb3NlZCI7aWYoYzUoImZpcnN0LWZyYW1lLXRpbWVvdXQiLGcpPT09ImNvZGVjIilRMSgpO2Vsc2UgTjEoIldlYlJUQyBkaWQgbm90IGVzdGFibGlzaCBhIHZpZGVvIHBhdGguIil9LGlRKX0sTy5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZT0oKT0+e2lmKEZ8fCFPfHxPLmNvbm5lY3Rpb25TdGF0ZSE9PSJmYWlsZWQiKXJldHVybjtpZihjNSgiY29ubmVjdGlvbi1mYWlsZWQiLE8uY29ubmVjdGlvblN0YXRlKT09PSJ0cmFuc3BvcnQiKU4xKCJXZWJSVEMgY29ubmVjdGlvbiBmYWlsZWQuIil9O2xldCBMMT1hd2FpdCBPLmNyZWF0ZU9mZmVyKCk7YXdhaXQgTy5zZXRMb2NhbERlc2NyaXB0aW9uKEwxKSxhd2FpdCBkKE8pO2xldCBKMT1PLmxvY2FsRGVzY3JpcHRpb247aWYoIUoxKXRocm93IEVycm9yKCJXZWJSVEMgb2ZmZXIgd2FzIG5vdCBjcmVhdGVkIik7bGV0IFkxPWF3YWl0IEU0KHt1cmw6JCxzaWduYWw6ai5zaWduYWwscmVxdWVzdFRpbWVvdXRNczpyUSxidXN5UmV0cnlJbnRlcnZhbE1zOmFRLGJ1c3lSZXRyeUNvdW50Om5RLGJvZHk6SlNPTi5zdHJpbmdpZnkoe3R5cGU6SjEudHlwZSxzZHA6SjEuc2RwLHNlc3Npb25JZDokMSxjb2RlYzpaLGljZVNlcnZlcnM6bX0pfSk7aWYoIVkxLm9rKXthd2FpdCBZMS5ib2R5Py5jYW5jZWwoKSxyKGBXZWJSVEMgb2ZmZXIgZmFpbGVkOiBIVFRQICR7WTEuc3RhdHVzfWApO3JldHVybn1sZXQgQzE9YXdhaXQgWTEuanNvbigpO2lmKEYpe2F3YWl0IGMoITApO3JldHVybn10cnl7YXdhaXQgTy5zZXRSZW1vdGVEZXNjcmlwdGlvbihDMSl9Y2F0Y2h7cigiV2ViUlRDIHJldHVybmVkIGFuIGludmFsaWQgc2Vzc2lvbiBkZXNjcmlwdGlvbi4iKX19Y2F0Y2goeCl7aWYoRnx8ai5zaWduYWwuYWJvcnRlZClyZXR1cm47aWYoeCBpbnN0YW5jZW9mIG4yKXtyKHgubWVzc2FnZSk7cmV0dXJufWxldCBhPXggaW5zdGFuY2VvZiByNT8iV2ViUlRDIHNpZ25hbGluZyB0aW1lZCBvdXQuIjoiV2ViUlRDIHNpZ25hbGluZyBmYWlsZWQuIjtpZihjNSgic2lnbmFsaW5nLWZhaWxlZCIsTz8uY29ubmVjdGlvblN0YXRlPz8iY2xvc2VkIik9PT0idHJhbnNwb3J0IilOMShhKX19KSgpLCgpPT57aWYoRj0hMCx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLG4pLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLG4pLGouYWJvcnQoKSxJIT09dm9pZCAwKXdpbmRvdy5jbGVhclRpbWVvdXQoSSk7aWYoei5jdXJyZW50IT09dm9pZCAwKXdpbmRvdy5jbGVhclRpbWVvdXQoei5jdXJyZW50KSx6LmN1cnJlbnQ9dm9pZCAwO2MoITApLHEobnVsbCksTz8uY2xvc2UoKX19LFtRLCQsSixaLEssVl0pLHtzdHJlYW06WSxmYWlsdXJlOkcsZXJyb3I6QixtYXJrRnJhbWVEZWNvZGVkOkN9fWZ1bmN0aW9uIGk1KCQsSixRLFosSz0ibGVmdCIpe2xldCBZPUQoKFUseik9Pks9PT0ibGVmdCI/VS16OnotVSxbS10pLHE9RCgoVSk9Pk1hdGgubWF4KFEsTWF0aC5taW4oWixVKSksW1EsWl0pLFtHLE5dPUEoKCk9PntpZih0eXBlb2Ygd2luZG93PiJ1IilyZXR1cm4gSjtsZXQgVT13aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJCksej1VIT1udWxsP051bWJlcihVKTpOYU47cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh6KT9xKHopOkp9KSxCPXR5cGVvZiB3aW5kb3c8InUiP01hdGgubWluKFosd2luZG93LmlubmVyV2lkdGgtMzIpOlosTD1NYXRoLm1heChRLE1hdGgubWluKEIsRykpLFY9RCgoVSk9PntVLnByZXZlbnREZWZhdWx0KCk7bGV0IHo9VS5jbGllbnRYLGs9TCxIPVUuY3VycmVudFRhcmdldDtILnNldFBvaW50ZXJDYXB0dXJlKFUucG9pbnRlcklkKTtsZXQgQz0oTyk9PntsZXQgST1xKGsrWSh6LE8uY2xpZW50WCkpO04oSSl9LEY9KE8pPT57SC5yZWxlYXNlUG9pbnRlckNhcHR1cmUoTy5wb2ludGVySWQpLEgucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLEMpLEgucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixGKSxILnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLEYpO3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJCxTdHJpbmcocShrK1koeixPLmNsaWVudFgpKSkpfWNhdGNoe319O0guYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLEMpLEguYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixGKSxILmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLEYpfSxbcSxZLEwsJF0pO3JldHVybnt3aWR0aDpMLG9uUG9pbnRlckRvd246Vn19dmFyIGVRPTgwMDA7ZnVuY3Rpb24gJFooJCl7cmV0dXJuImZpbGU6Ly8iKyQuc3BsaXQoIi8iKS5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KS5qb2luKCIvIil9ZnVuY3Rpb24gSlooJCl7cmV0dXJuICQhPT0ibm9uZSJ9ZnVuY3Rpb24gUzQoe3RvYXN0OiQsb25SZXZlYWw6SixvbkRpc21pc3M6USxvblBhdXNlOlosb25SZXN1bWU6S30pe2xldFtZLHFdPUEoITEpLEc9VChudWxsKSxOPVQobnVsbCksQj0oKT0+e2lmKE4uY3VycmVudCljbGVhclRpbWVvdXQoTi5jdXJyZW50KTtOLmN1cnJlbnQ9bnVsbH07YigoKT0+KCk9PkIoKSxbXSk7bGV0IEw9KFUpPT57aWYoISQucGF0aCl7VS5wcmV2ZW50RGVmYXVsdCgpO3JldHVybn1CKCksWigpLE4uY3VycmVudD1zZXRUaW1lb3V0KCgpPT57Ti5jdXJyZW50PW51bGwscSghMSksSygpfSxlUSksVS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC9wbGFpbiIsJFooJC5wYXRoKSksVS5kYXRhVHJhbnNmZXIuc2V0RGF0YShsNSwkLnBhdGgpLFUuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ9ImNvcHkiO2xldCB6PUcuY3VycmVudDtpZih6KVUuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZSh6LHoub2Zmc2V0V2lkdGgvMix6Lm9mZnNldEhlaWdodC8yKTtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnEoITApKX0sVj0oVSk9PntpZihCKCkscSghMSksSlooVS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCkpUSgpO2Vsc2UgSygpfTtyZXR1cm4gWCgiZGl2Iix7ImRhdGEtdGVzdGlkIjoic2NyZWVuc2hvdC10b2FzdCIsY2xhc3NOYW1lOiJ3LVttaW4oMzIwcHgsY2FsYygxMDB2dy0zMnB4KSldIixvbk1vdXNlRW50ZXI6Wixvbk1vdXNlTGVhdmU6SyxjaGlsZHJlbjpbJC50aHVtYiYmWCgiaW1nIix7cmVmOkcsImRhdGEtdGVzdGlkIjoiZHJhZy1pbWFnZSIsc3JjOiQudGh1bWIsYWx0OiIiLCJhcmlhLWhpZGRlbiI6ITAsZHJhZ2dhYmxlOiExLHN0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDotOTk5OSxsZWZ0OjAsd2lkdGg6ODAsaGVpZ2h0OjgwLGJvcmRlclJhZGl1czoxMixvYmplY3RGaXQ6ImNvdmVyIixwb2ludGVyRXZlbnRzOiJub25lIn19KSwkLnN0YXR1cz09PSJlcnJvciI/WCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0zLjUgcHktMi41IGJnLXBhbmVsIGJvcmRlciBib3JkZXItd2hpdGUvMTIgcm91bmRlZC14bCB0ZXh0LXdoaXRlLzkwIHRleHQtWzEycHhdIHNoYWRvdy1bMF84cHhfMjRweF9yZ2JhKDAsMCwwLDAuNDUpXSIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6InNpemUtMS41IHJvdW5kZWQtZnVsbCBzaHJpbmstMCBiZy1bI2Y4NzE3MV0ifSksWCgic3BhbiIse2NsYXNzTmFtZToic2VsZWN0LXRleHQiLGNoaWxkcmVuOiQubWVzc2FnZT8/IlNjcmVlbnNob3QgZmFpbGVkIn0pXX0pOlgoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazpKLGRpc2FibGVkOiQuc3RhdHVzIT09InNhdmVkIixkcmFnZ2FibGU6JC5zdGF0dXM9PT0ic2F2ZWQiLG9uRHJhZ1N0YXJ0Okwsb25EcmFnRW5kOlYsImFyaWEtbGFiZWwiOiJPcGVuIHNjcmVlbnNob3QgaW4gRmluZGVyIix0aXRsZToiQ2xpY2sgdG8gcmV2ZWFsIGluIEZpbmRlciDCtyBkcmFnIHRvIGNvcHkgdGhlIGZpbGUiLGNsYXNzTmFtZTpgZ3JvdXAgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0zIHBsLTIgcHItMy41IHB5LTIgYmctcGFuZWwgYm9yZGVyIGJvcmRlci13aGl0ZS8xMiByb3VuZGVkLXhsIHNoYWRvdy1bMF84cHhfMjRweF9yZ2JhKDAsMCwwLDAuNDUpXSB0ZXh0LWxlZnQgY3Vyc29yLXBvaW50ZXIgZW5hYmxlZDpob3ZlcjpiZy1bIzJhMmEyY10gZGlzYWJsZWQ6Y3Vyc29yLWRlZmF1bHQgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjE1c19lYXNlXSAke1k/ImludmlzaWJsZSI6IiJ9YCxjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJzaXplLTkgcm91bmRlZC1tZCBvdmVyZmxvdy1oaWRkZW4gYmctd2hpdGUvMTAgc2hyaW5rLTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcmluZy0xIHJpbmctd2hpdGUvMTAgcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46JC50aHVtYj9YKCJpbWciLHtzcmM6JC50aHVtYixhbHQ6IiIsY2xhc3NOYW1lOiJzaXplLWZ1bGwgb2JqZWN0LWNvdmVyIixkcmFnZ2FibGU6ITF9KTpYKCJzcGFuIix7Y2xhc3NOYW1lOiJibG9jayBzaXplLTQgcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci13aGl0ZS8zMCBib3JkZXItdC13aGl0ZSBhbmltYXRlLVtncmlkLXNwaW5fMC44c19saW5lYXJfaW5maW5pdGVdIn0pfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGxlYWRpbmctdGlnaHQgcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46W1goInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzEzcHhdIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSIsY2hpbGRyZW46JC5zdGF0dXM9PT0ic2F2aW5nIj8iU2F2aW5nIFNjcmVlbnNob3TigKYiOiJTY3JlZW5zaG90IFNhdmVkIn0pLCQuc3RhdHVzPT09InNhdmVkIiYmWCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTFweF0gdGV4dC13aGl0ZS82MCIsY2hpbGRyZW46Ik9wZW4gaW4gRmluZGVyIn0pXX0pLCQuc3RhdHVzPT09InNhdmVkIiYmWChiMix7Y2xhc3NOYW1lOiJtbC1hdXRvIHRleHQtd2hpdGUvODAgcG9pbnRlci1ldmVudHMtbm9uZSIsc2l6ZToxNixzdHJva2VXaWR0aDoyLjI1fSldfSldfSl9dmFyIHg0PTM1MDAsajQ9NDAwMDtmdW5jdGlvbiBRWigpe3JldHVybiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvWzouXS9nLCItIikuc2xpY2UoMCwyMyl9ZnVuY3Rpb24gdjQoJCl7bGV0IEo9VChudWxsKSxRPVQobnVsbCksWj1UKG51bGwpLEs9VChudWxsKSxZPVQobnVsbCkscT1EKCgpPT57aWYoWi5jdXJyZW50KWNsZWFyVGltZW91dChaLmN1cnJlbnQpO1ouY3VycmVudD1udWxsLEsuY3VycmVudD1udWxsfSxbXSksRz1EKChrKT0+e2xldCBIPWs/P1EuY3VycmVudD8/dm9pZCAwO2lmKHEoKSxZLmN1cnJlbnQ9bnVsbCxjMi5kaXNtaXNzKEgpLEg9PT12b2lkIDB8fFEuY3VycmVudD09PVN0cmluZyhIKSlKLmN1cnJlbnQ9bnVsbCxRLmN1cnJlbnQ9bnVsbH0sW3FdKSxOPUQoKCk9PntsZXQgaz1KLmN1cnJlbnQ7aWYoaz8ucGF0aClFMShgb3BlbiAtUiAke00xKGsucGF0aCl9YCl9LFtdKSxCPUQoKGspPT57cSgpO2xldCBIPU1hdGgubWF4KDAsayksQz1RLmN1cnJlbnQ7WS5jdXJyZW50PUgsSy5jdXJyZW50PURhdGUubm93KCkrSCxaLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+RyhDPz92b2lkIDApLEgpfSxbcSxHXSksTD1EKCgpPT57aWYoIVouY3VycmVudHx8Sy5jdXJyZW50PT1udWxsKXJldHVybjtZLmN1cnJlbnQ9TWF0aC5tYXgoMCxLLmN1cnJlbnQtRGF0ZS5ub3coKSkscSgpfSxbcV0pLFY9RCgoKT0+e2xldCBrPVkuY3VycmVudDtpZihrPT1udWxsKXJldHVybjtCKGspfSxbQl0pLFU9RCgoayxIPTEvMCk9PntpZihKLmN1cnJlbnQ9ayxRLmN1cnJlbnQ9ay5pZCxjMi5jdXN0b20oKEMpPT5YKFM0LHt0b2FzdDprLG9uUmV2ZWFsOk4sb25EaXNtaXNzOigpPT5HKEMpLG9uUGF1c2U6TCxvblJlc3VtZTpWfSkse2lkOmsuaWQsZHVyYXRpb246MS8wfSksTnVtYmVyLmlzRmluaXRlKEgpKUIoSCk7ZWxzZSBxKCksWS5jdXJyZW50PW51bGx9LFtxLEcsTCxWLE4sQl0pO3JldHVybntjYXB0dXJlOkQoYXN5bmMoKT0+e2lmKCEkKXJldHVybjtsZXQgaz1jcnlwdG8ucmFuZG9tVVVJRCgpO1Uoe2lkOmssc3RhdHVzOiJzYXZpbmciLHBoYXNlOiJpbiJ9KTtsZXQgQz1gRj0iJHtgJEhPTUUvRGVza3RvcC9zZXJ2ZS1zaW0tc2NyZWVuc2hvdC0ke1FaKCl9LnBuZ2B9IjsgeGNydW4gc2ltY3RsIGlvICR7TTEoJCl9IHNjcmVlbnNob3QgIiRGIiAmJiBwcmludGYgJyVzJyAiJEYiYCxGO3RyeXtsZXQgST1hd2FpdCBFMShDKTtpZihGPUkuc3Rkb3V0LnRyaW0oKSxJLmV4aXRDb2RlIT09MHx8IUYpe1Uoe2lkOmssc3RhdHVzOiJlcnJvciIscGhhc2U6ImluIixtZXNzYWdlOkkuc3RkZXJyLnRyaW0oKXx8IlNjcmVlbnNob3QgZmFpbGVkIn0sajQpO3JldHVybn19Y2F0Y2goSSl7VSh7aWQ6ayxzdGF0dXM6ImVycm9yIixwaGFzZToiaW4iLG1lc3NhZ2U6SSBpbnN0YW5jZW9mIEVycm9yP0kubWVzc2FnZToiU2NyZWVuc2hvdCBmYWlsZWQifSxqNCk7cmV0dXJufVUoe2lkOmssc3RhdHVzOiJzYXZlZCIscGhhc2U6ImluIixwYXRoOkZ9LHg0KTtsZXQgTz1gL3RtcC9zZXJ2ZS1zaW0tc2NyZWVuc2hvdC10aHVtYi0ke2t9LnBuZ2A7dHJ5e2xldCB3PShhd2FpdCBFMShgc2lwcyAtWiAzMjAgJHtNMShGKX0gLS1vdXQgJHtNMShPKX0gPi9kZXYvbnVsbCAyPiYxICYmIGJhc2U2NCAtaSAke00xKE8pfTsgcm0gLWYgJHtNMShPKX1gKSkuc3Rkb3V0LnJlcGxhY2UoL1xzKy9nLCIiKTtpZih3KXtsZXQgUz1KLmN1cnJlbnQ7aWYoUz8uaWQ9PT1rKVUoey4uLlMsdGh1bWI6YGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwke3d9YH0seDQpfX1jYXRjaHt9fSxbJCxVXSkscmV2ZWFsOk4sZGlzbWlzczpHfX1mdW5jdGlvbiBoNCh7ZGVmYXVsdFdpZHRoOiQsdmlld3BvcnRXaWR0aDpKLHZpZXdwb3J0SGVpZ2h0OlEsYXNwZWN0UmF0aW86WixvblN0YXJ0Okt9KXtsZXQgWT1SNSgpLFtxLEddPUEoITEpLFtOLEJdPUEoITEpLFtMLFZdPUEoITEpLFU9VChudWxsKSx6PVQoW10pLGs9VChudWxsKSxIPVQobnVsbCksQz1UKG51bGwpLEY9VChudWxsKSxPPUQoKCk9PntpZih0eXBlb2Ygd2luZG93PiJ1IilyZXR1cm4gJDtsZXQgXz1OYU47dHJ5e2xldCBwPXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShwMyk7Xz1wIT1udWxsP051bWJlcihwKTpOYU59Y2F0Y2h7fXJldHVybiBfNigkLEosUSxaLF8pfSxbWiwkLFEsSl0pLEk9VDEoKCk9Pk8oKSxbT10pLFt3LFNdPUEoSSksaj1UKEkpLCQxPVQoJCksbT11MygkLEosUSxaKSxjPU1hdGgubWluKEs2LG0pLG49dz8/JCxvPW4wKG4sJCxKLFEsWikscj1EKChfKT0+e2xldCBwPWY1KF8pO2ouY3VycmVudD1wLFMocCl9LFtdKSxRMT1EKChfKT0+e2lmKHR5cGVvZiB3aW5kb3c+InUifHwkPD0wKXJldHVybjtsZXQgcD1uMChfLCQsSixRLFopO3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0ocDMsU3RyaW5nKHAvJCkpfWNhdGNoe319LFtaLCQsUSxKXSksTjE9RCgoXyk9PntpZihDLmN1cnJlbnQhPW51bGwpY2xlYXJUaW1lb3V0KEMuY3VycmVudCk7Qy5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntDLmN1cnJlbnQ9bnVsbCxRMShfKX0sVzYpfSxbUTFdKTtiKCgpPT57aWYocXx8TilyZXR1cm47bGV0IF89ai5jdXJyZW50O2lmKF89PW51bGwpcmV0dXJuO2xldCBwPW4wKF8sJCxKLFEsWik7aWYocCE9PV8pcihwKX0sW1osJCxOLHEsUSxKLHJdKSxiKCgpPT57aWYoJDEuY3VycmVudD09PSQpcmV0dXJuOyQxLmN1cnJlbnQ9JCxyKE8oKSl9LFskLE8scl0pLGIoKCk9PntpZighcSYmIU4pcmV0dXJuO2xldCBfPWRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yLHA9ZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0LHU9ZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0O3JldHVybiBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcj0ibndzZS1yZXNpemUiLGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdD0ibm9uZSIsZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PSJub25lIiwoKT0+e2RvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yPV8sZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0PXAsZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PXV9fSxbcSxOXSksYigoKT0+e2lmKHR5cGVvZiB3aW5kb3c+InUiKXJldHVybjtsZXQgXz0oKT0+e2xldCB1PWouY3VycmVudDtpZih1PT1udWxsKXJldHVybjtpZihDLmN1cnJlbnQhPW51bGwpY2xlYXJUaW1lb3V0KEMuY3VycmVudCksQy5jdXJyZW50PW51bGw7UTEodSl9LHA9KCk9PntpZihkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIilfKCl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLF8pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHApLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIixfKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixwKX19LFtRMV0pO2xldCBkPUQoKF8pPT57aWYoXz5tKXJldHVybiBtK2wzKF8tbSxtKTtpZihfPGMpcmV0dXJuIGMtbDMoYy1fLG0pO3JldHVybiBffSxbbSxjXSkseD1EKCgpPT57aWYoSC5jdXJyZW50KUguY3VycmVudCgpLEguY3VycmVudD1udWxsO0IoITEpfSxbXSksYT1EKChfKT0+e2xldCBwPXBlcmZvcm1hbmNlLm5vdygpLHU9ei5jdXJyZW50O3UucHVzaCh7dDpwLHg6X30pO3doaWxlKHUubGVuZ3RoPjEmJnAtdVswXS50PkE2KXUuc2hpZnQoKX0sW10pLEsxPUQoKF8pPT57bGV0IHA9ZChfKTtpZihrLmN1cnJlbnQhPW51bGwpY2FuY2VsQW5pbWF0aW9uRnJhbWUoay5jdXJyZW50KTtrLmN1cnJlbnQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57ay5jdXJyZW50PW51bGwscihwKSxhKHApfSl9LFtkLGEscl0pLEwxPUQoKF8scCx1KT0+e3goKTtsZXQgdj1qLmN1cnJlbnQ/PyQ7VS5jdXJyZW50PXtwb2ludGVySWQ6XyxzdGFydFg6cCxzdGFydFk6dSxzdGFydFdpZHRoOnZ9LHouY3VycmVudD1be3Q6cGVyZm9ybWFuY2Uubm93KCkseDp2fV0sSygpLEcoITApfSxbeCwkLEtdKSxKMT1EKCgpPT57bGV0IF89VS5jdXJyZW50O2lmKFUuY3VycmVudD1udWxsLGsuY3VycmVudCE9bnVsbCljYW5jZWxBbmltYXRpb25GcmFtZShrLmN1cnJlbnQpLGsuY3VycmVudD1udWxsO2lmKF8mJl8ucG9pbnRlcklkPj0wKXtsZXQgQTE9Ri5jdXJyZW50O2lmKEExPy5oYXNQb2ludGVyQ2FwdHVyZShfLnBvaW50ZXJJZCkpQTEucmVsZWFzZVBvaW50ZXJDYXB0dXJlKF8ucG9pbnRlcklkKX1HKCExKTtsZXQgcD1qLmN1cnJlbnQ/PyQsdT13Nih6LmN1cnJlbnQpO3ouY3VycmVudD1bXTtsZXQgdj1uMChwK3UqTzYsJCxKLFEsWiksRzE9ZjUoUDYodixbJF0sRjYpKSx6MT1NYXRoLmFicyhwLUcxKTwwLjUmJk1hdGguYWJzKHUpPDg7aWYoWXx8ejEpe3IoRzEpLE4xKEcxKTtyZXR1cm59QighMCksSC5jdXJyZW50PUQ2KHtmcm9tOnAsdG86RzEsdmVsb2NpdHk6dSxzdGlmZm5lc3M6azYsZGFtcGluZzpNNixvblVwZGF0ZTpyLG9uQ29tcGxldGU6KCk9PntILmN1cnJlbnQ9bnVsbCxCKCExKSxOMShHMSl9fSl9LFtaLCQsWSxOMSxRLEoscl0pO2IoKCk9PntyZXR1cm4oKT0+e2lmKHgoKSxrLmN1cnJlbnQhPW51bGwpY2FuY2VsQW5pbWF0aW9uRnJhbWUoay5jdXJyZW50KTtpZihDLmN1cnJlbnQhPW51bGwpe2lmKGNsZWFyVGltZW91dChDLmN1cnJlbnQpLGouY3VycmVudCE9bnVsbClRMShqLmN1cnJlbnQpfX19LFt4LFExXSksYigoKT0+e2lmKCFxKXJldHVybjtsZXQgXz0oKT0+SjEoKSxwPSgpPT57aWYoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlPT09ImhpZGRlbiIpSjEoKX0sdT0odik9PntsZXQgRzE9VS5jdXJyZW50O2lmKCFHMXx8RzEucG9pbnRlcklkIT09di5wb2ludGVySWQpcmV0dXJuO3YucHJldmVudERlZmF1bHQoKSxLMShSNChHMSx2LmNsaWVudFgsdi5jbGllbnRZLFopKX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJibHVyIixfKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHUse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLF8sITApLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIixfLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixwKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIixfKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHUsITApLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLF8sITApLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIixfLCEwKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixwKX19LFtaLEoxLHEsSzFdKTtsZXQgWTE9RCgoXyk9PntsZXQgcD1VLmN1cnJlbnQ7aWYoIXB8fHAucG9pbnRlcklkIT09Xy5wb2ludGVySWQpcmV0dXJuO18ucHJldmVudERlZmF1bHQoKSxfLnN0b3BQcm9wYWdhdGlvbigpLEoxKCl9LFtKMV0pLEMxPUQoKF8pPT57aWYoXy5idXR0b24hPT0wKXJldHVybjtfLnByZXZlbnREZWZhdWx0KCksXy5zdG9wUHJvcGFnYXRpb24oKSxfLmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoXy5wb2ludGVySWQpLEwxKF8ucG9pbnRlcklkLF8uY2xpZW50WCxfLmNsaWVudFkpfSxbTDFdKSx5PUQoKF8pPT57bGV0IHA9VS5jdXJyZW50O2lmKCFwfHxwLnBvaW50ZXJJZCE9PV8ucG9pbnRlcklkKXJldHVybjtfLnByZXZlbnREZWZhdWx0KCksSzEoUjQocCxfLmNsaWVudFgsXy5jbGllbnRZLFopKX0sW1osSzFdKSxnPUQoKF8pPT57bGV0IHA9Xy5rZXk9PT0iQXJyb3dSaWdodCJ8fF8ua2V5PT09IkFycm93RG93biI/MTpfLmtleT09PSJBcnJvd0xlZnQifHxfLmtleT09PSJBcnJvd1VwIj8tMTowO2lmKHA9PT0wKXJldHVybjtfLnByZXZlbnREZWZhdWx0KCkseCgpO2xldCB1PV8uc2hpZnRLZXk/ODA6MjQsdj1mNShuMChvK3AqdSwkLEosUSxaKSk7cih2KSxOMSh2KX0sW1oseCxvLCQsTjEsUSxKLHJdKTtyZXR1cm57aGFuZGxlUmVmOkYsd2lkdGg6bixjb21taXR0ZWRXaWR0aDpvLG1pbldpZHRoOmMsbWF4V2lkdGg6bSxpc1Jlc2l6aW5nOnEsaXNJbmVydGlhOk4saGFuZGxlSG92ZXJlZDpMLGhhbmRsZUFjdGl2ZTpMfHxxfHxOLHNldEhhbmRsZUhvdmVyZWQ6VixvblBvaW50ZXJEb3duOkMxLG9uUG9pbnRlck1vdmU6eSxvblBvaW50ZXJFbmQ6WTEsb25LZXlEb3duOmd9fWZ1bmN0aW9uIFI0KCQsSixRLFope2xldCBLPUotJC5zdGFydFgsWT0oUS0kLnN0YXJ0WSkqWjtyZXR1cm4gJC5zdGFydFdpZHRoKyhNYXRoLmFicyhLKT49TWF0aC5hYnMoWSk/SzpZKX1mdW5jdGlvbiBnNCgpe2xldCAkPVQobmV3IE1hcCksSj1UKG5ldyBNYXApLFE9RCgoRyk9PntsZXQgTj1KLmN1cnJlbnQuZ2V0KEcpO2lmKE4pY2xlYXJUaW1lb3V0KE4pO0ouY3VycmVudC5kZWxldGUoRyl9LFtdKSxaPUQoKEcsTj0xLzApPT57YzIuY3VzdG9tKCgpPT5YKGo2LHt0b2FzdDpHfSkse2lkOkcuaWQsZHVyYXRpb246Tn0pfSxbXSksSz1EKChHLE4pPT57bGV0IEI9Y3J5cHRvLnJhbmRvbVVVSUQoKSxMPXtpZDpCLG5hbWU6RyxraW5kOk4sc3RhdHVzOiJ1cGxvYWRpbmciLHByb2dyZXNzOjB9O3JldHVybiAkLmN1cnJlbnQuc2V0KEIsTCksWihMKSxCfSxbWl0pLFk9RCgoRyxOKT0+e2xldCBCPSQuY3VycmVudC5nZXQoRyk7aWYoIUIpcmV0dXJuO1EoRyk7bGV0IEw9ey4uLkIsLi4uTn07aWYoJC5jdXJyZW50LnNldChHLEwpLFooTCxOLnN0YXR1cz09PSJzdWNjZXNzInx8Ti5zdGF0dXM9PT0iZXJyb3IiPzMwMDA6MS8wKSxOLnN0YXR1cz09PSJzdWNjZXNzInx8Ti5zdGF0dXM9PT0iZXJyb3IiKXtsZXQgVj1zZXRUaW1lb3V0KCgpPT57JC5jdXJyZW50LmRlbGV0ZShHKSxKLmN1cnJlbnQuZGVsZXRlKEcpfSwzMDAwKTtKLmN1cnJlbnQuc2V0KEcsVil9fSxbUSxaXSkscT1EKChHLE4pPT57bGV0IEI9JC5jdXJyZW50LmdldChHKTtpZighQilyZXR1cm47bGV0IEw9ey4uLkIscHJvZ3Jlc3M6Tn07JC5jdXJyZW50LnNldChHLEwpLFooTCl9LFtaXSk7cmV0dXJue2FkZDpLLHVwZGF0ZTpZLHNldFByb2dyZXNzOnF9fWZ1bmN0aW9uIGY0KCQsSil7bGV0W1EsWl09QShbXSksW0ssWV09QShudWxsKSxbcSxHXT1BKCExKSxOPUQoYXN5bmMoKT0+e2lmKCEkKXJldHVybjtHKCEwKSxZKG51bGwpO3RyeXtsZXQgQj1hd2FpdCBmZXRjaCgkLHtjYWNoZToibm8tc3RvcmUifSksTD1hd2FpdCBCLmpzb24oKTtpZighQi5va3x8TC5lcnJvcil0aHJvdyBFcnJvcihMLmVycm9yfHwiRmFpbGVkIHRvIGxpc3QgV2ViS2l0IHRhcmdldHMiKTtsZXQgVj10eXBlb2Ygd2luZG93PiJ1Ij9udWxsOndpbmRvdy5sb2NhdGlvbixVPUwudGFyZ2V0cz8/W107WihWP1UubWFwKCh6KT0+RjQoeixWKSk6VSl9Y2F0Y2goQil7WShCIGluc3RhbmNlb2YgRXJyb3I/Qi5tZXNzYWdlOiJGYWlsZWQgdG8gc3RhcnQgV2ViS2l0IERldlRvb2xzIil9ZmluYWxseXtHKCExKX19LFskXSk7cmV0dXJuIGIoKCk9PntpZighSilyZXR1cm47TigpO2xldCBCPXNldEludGVydmFsKCgpPT52b2lkIE4oKSwyNTAwKTtyZXR1cm4oKT0+Y2xlYXJJbnRlcnZhbChCKX0sW0osTl0pLHt0YXJnZXRzOlEsZXJyb3I6Syxsb2FkaW5nOnEscmVmcmVzaDpOfX12YXIgWlo9NjAsWFo9MTAwMDtmdW5jdGlvbiBtNCgkLEosUSxaPVpaKXtsZXRbSyxZXT1BKG51bGwpLFtxLEddPUEoMCksW04sQl09QShaKSxbTCxWXT1BKDApO2IoKCk9PntpZighSnx8ISQpcmV0dXJuO2xldCBGPSExLE89JC5pbmNsdWRlcygiPyIpPyImIjoiPyIsST1hc3luYygpPT57dHJ5e2xldCBqPWF3YWl0KGF3YWl0IGZldGNoKGAkeyR9JHtPfWxpbWl0PSR7Tn0mb2Zmc2V0PTBgLHtjYWNoZToibm8tc3RvcmUifSkpLmpzb24oKTtpZihGKXJldHVybjtpZihZKGouZGV2aWNlcz8/W10pLHR5cGVvZiBqLnRvdGFsPT09Im51bWJlciIpRyhqLnRvdGFsKX1jYXRjaHtpZighRilZKFtdKX19O0koKTtsZXQgdz1zZXRJbnRlcnZhbChJLFE/NzUwOjMwMDApO3JldHVybigpPT57Rj0hMCxjbGVhckludGVydmFsKHcpfX0sWyQsSixMLFEsTl0pO2xldCBVPUQoKCk9PlYoKEYpPT5GKzEpLFtdKSx6PUQoKCk9PkIoKEYpPT5GK1opLFtaXSksaz1EKCgpPT5CKFhaKSxbXSksSD1EKCgpPT5CKFopLFtaXSksQz1xPihLPy5sZW5ndGg/PzApO3JldHVybntkZXZpY2VzOkssdG90YWw6cSxyZWZyZXNoOlUsbG9hZE1vcmU6eixsb2FkQWxsOmsscmVzZXRQYWdlOkgsaGFzTW9yZTpDfX12YXIgcDQ9e21qcGVnRnBzOjYwLG1qcGVnUXVhbGl0eTowLjcsbWF4RGltZW5zaW9uOjAsaDI2NEJpdHJhdGU6NjAwMDAwMCxoMjY0RnBzOjYwfSxLWj17dHJhbnNwb3J0OiJodHRwIixodHRwQ29kZWM6ImF1dG8iLHdlYlJ0Y0NvZGVjOiJoMjY0IiwuLi5wNH07ZnVuY3Rpb24gWVooJCl7cmV0dXJuIHR5cGVvZiAkPT09Im51bWJlciImJk51bWJlci5pc0Zpbml0ZSgkKT8kOm51bGx9ZnVuY3Rpb24gdTQoJCxKLFEsWil7bGV0IEs9WVooJCk7cmV0dXJuIEs9PW51bGw/SjpNYXRoLm1pbihaLE1hdGgubWF4KFEsSykpfWZ1bmN0aW9uIGE1KCQsSixRLFope3JldHVybiBNYXRoLnJvdW5kKHU0KCQsSixRLFopKX1mdW5jdGlvbiBxWigkKXtpZighQXJyYXkuaXNBcnJheSgkKXx8JC5sZW5ndGg+MTYpcmV0dXJuIG51bGw7bGV0IEo9W107Zm9yKGxldCBRIG9mICQpe2lmKCFRfHx0eXBlb2YgUSE9PSJvYmplY3QiKXJldHVybiBudWxsO2xldCBaPVEudXJscztpZighQXJyYXkuaXNBcnJheShaKXx8Wi5sZW5ndGg9PT0wfHxaLmxlbmd0aD4xNnx8IVouZXZlcnkoKHEpPT50eXBlb2YgcT09PSJzdHJpbmciJiZxLmxlbmd0aDw9MjA0OCYmL14oc3R1bnxzdHVuc3x0dXJufHR1cm5zKTovaS50ZXN0KHEpKSlyZXR1cm4gbnVsbDtsZXR7dXNlcm5hbWU6SyxjcmVkZW50aWFsOll9PVE7aWYoSyE9PXZvaWQgMCYmdHlwZW9mIEshPT0ic3RyaW5nIilyZXR1cm4gbnVsbDtpZihZIT09dm9pZCAwJiZ0eXBlb2YgWSE9PSJzdHJpbmciKXJldHVybiBudWxsO0oucHVzaCh7dXJsczpaLC4uLnR5cGVvZiBLPT09InN0cmluZyI/e3VzZXJuYW1lOkt9Ont9LC4uLnR5cGVvZiBZPT09InN0cmluZyI/e2NyZWRlbnRpYWw6WX06e319KX1yZXR1cm4gSn1mdW5jdGlvbiBYOCgkPXt9LEo9S1ope2xldCBaPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgkLCJpY2VTZXJ2ZXJzIik/cVooJC5pY2VTZXJ2ZXJzKTpKLmljZVNlcnZlcnMsSz1aPT09bnVsbD9KLmljZVNlcnZlcnM6WiYmWi5sZW5ndGg+MD9aOnZvaWQgMDtyZXR1cm57dHJhbnNwb3J0OiQudHJhbnNwb3J0PT09Imh0dHAifHwkLnRyYW5zcG9ydD09PSJ3ZWJydGMiPyQudHJhbnNwb3J0OkoudHJhbnNwb3J0LGh0dHBDb2RlYzokLmh0dHBDb2RlYz09PSJhdXRvInx8JC5odHRwQ29kZWM9PT0ibWpwZWcifHwkLmh0dHBDb2RlYz09PSJoMjY0Ij8kLmh0dHBDb2RlYzpKLmh0dHBDb2RlYyx3ZWJSdGNDb2RlYzokLndlYlJ0Y0NvZGVjPT09InZwOCJ8fCQud2ViUnRjQ29kZWM9PT0idnA5Inx8JC53ZWJSdGNDb2RlYz09PSJoMjY0Ij8kLndlYlJ0Y0NvZGVjOkoud2ViUnRjQ29kZWMsLi4uSz97aWNlU2VydmVyczpLfTp7fSwuLi5zMigkLEopfX1mdW5jdGlvbiBzMigkPXt9LEo9cDQpe3JldHVybnttanBlZ0ZwczphNSgkLm1qcGVnRnBzLEoubWpwZWdGcHMsMSwxMjApLG1qcGVnUXVhbGl0eTp1NCgkLm1qcGVnUXVhbGl0eSxKLm1qcGVnUXVhbGl0eSwwLjA1LDEpLG1heERpbWVuc2lvbjphNSgkLm1heERpbWVuc2lvbixKLm1heERpbWVuc2lvbiwwLDQwOTYpLGgyNjRCaXRyYXRlOmE1KCQuaDI2NEJpdHJhdGUsSi5oMjY0Qml0cmF0ZSwxZTUsNTAwMDAwMDApLGgyNjRGcHM6YTUoJC5oMjY0RnBzLEouaDI2NEZwcywxLDEyMCl9fWZ1bmN0aW9uIHQyKCQpe3JldHVybnttanBlZ0ZwczokLm1qcGVnRnBzLG1qcGVnUXVhbGl0eTokLm1qcGVnUXVhbGl0eSxtYXhEaW1lbnNpb246JC5tYXhEaW1lbnNpb24saDI2NEJpdHJhdGU6JC5oMjY0Qml0cmF0ZSxoMjY0RnBzOiQuaDI2NEZwc319ZnVuY3Rpb24gbDQoJCl7bGV0IEo9JD97bWpwZWdGcHM6JC5tanBlZ0ZwcyxtanBlZ1F1YWxpdHk6JC5tanBlZ1F1YWxpdHksbWF4RGltZW5zaW9uOiQubWF4RGltZW5zaW9uLGgyNjRCaXRyYXRlOiQuaDI2NEJpdHJhdGUsaDI2NEZwczokLmgyNjRGcHN9Ont9O2lmKCQ/LnRyYW5zcG9ydD09PSJ3ZWJydGMiKXJldHVybiBYOCh7dHJhbnNwb3J0OiJ3ZWJydGMiLHdlYlJ0Y0NvZGVjOiQuY29kZWMsaWNlU2VydmVyczokLmljZVNlcnZlcnMsLi4uSn0pO3JldHVybiBYOCh7dHJhbnNwb3J0OiJodHRwIixodHRwQ29kZWM6JD8uY29kZWM/PyJhdXRvIiwuLi5KfSl9ZnVuY3Rpb24gSzgoJCxKKXtyZXR1cm4gWDgoey4uLiQsLi4uSn0sJCl9ZnVuY3Rpb24gZTIoJCxKKXtsZXQgUT10MigkKSxaPXMyKHsuLi5RLC4uLkp9LFEpO2lmKFoubWpwZWdGcHM9PT1RLm1qcGVnRnBzJiZaLm1qcGVnUXVhbGl0eT09PVEubWpwZWdRdWFsaXR5JiZaLm1heERpbWVuc2lvbj09PVEubWF4RGltZW5zaW9uJiZaLmgyNjRCaXRyYXRlPT09US5oMjY0Qml0cmF0ZSYmWi5oMjY0RnBzPT09US5oMjY0RnBzKXJldHVybiAkO3JldHVybnsuLi4kLC4uLlp9fXZhciBjND0ic2VydmUtc2ltOmNvZGVjIixHWj0zMDAwO2Z1bmN0aW9uIGQ0KCQpe2xldCBKPWw0KCQpO2lmKEoudHJhbnNwb3J0IT09Imh0dHAifHxKLmh0dHBDb2RlYyE9PSJhdXRvIilyZXR1cm4gSjt0cnl7bGV0IFE9d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGM0KTtpZihRPT09ImF1dG8ifHxRPT09Im1qcGVnInx8UT09PSJoMjY0IilyZXR1cm4gSzgoSix7aHR0cENvZGVjOlF9KX1jYXRjaHt9cmV0dXJuIEp9ZnVuY3Rpb24gbzQoe2RldmljZTokLGVuZHBvaW50OkosaW5pdGlhbFNldHRpbmdzOlF9KXtsZXRbWixLXT1BKCgpPT5kNChRKSksW1kscV09QSghMSksRz1UKFopLE49VCghMSksQj1UKDApLEw9VChudWxsKSxWPVQobnVsbCk7YigoKT0+eysrQi5jdXJyZW50O2xldCBrPWQ0KFEpO2lmKEwuY3VycmVudD8uYWJvcnQoKSxWLmN1cnJlbnQ/LmFib3J0KCksTC5jdXJyZW50PW51bGwsVi5jdXJyZW50PW51bGwsRy5jdXJyZW50PWssTi5jdXJyZW50PSExLEsoaykscSghMSksIUopcmV0dXJuO2xldCBIPSExLEM9ITEsRj1hc3luYygpPT57aWYoSHx8Ti5jdXJyZW50fHxMLmN1cnJlbnQpcmV0dXJuO2xldCB3PSsrQi5jdXJyZW50LFM9bmV3IEFib3J0Q29udHJvbGxlcjtMLmN1cnJlbnQ9Uzt0cnl7bGV0IGo9YXdhaXQgZmV0Y2goSix7Y2FjaGU6Im5vLXN0b3JlIixzaWduYWw6Uy5zaWduYWx9KTtpZighai5vayl0aHJvdyBFcnJvcihgU3RyZWFtIHNldHRpbmdzIHJlcXVlc3QgZmFpbGVkICgke2ouc3RhdHVzfSlgKTtsZXQgJDE9czIoYXdhaXQgai5qc29uKCksdDIoRy5jdXJyZW50KSk7aWYoIVMuc2lnbmFsLmFib3J0ZWQmJkIuY3VycmVudD09PXcpe2xldCBtPUcuY3VycmVudCxjPWUyKG0sJDEpO2lmKGMhPT1tKUcuY3VycmVudD1jLEsoYyl9Qz0hMX1jYXRjaChqKXtpZighUy5zaWduYWwuYWJvcnRlZCYmIUMpQz0hMCxjb25zb2xlLndhcm4oIkZhaWxlZCB0byBsb2FkIHN0cmVhbSBzZXR0aW5ncyIsail9ZmluYWxseXtpZihMLmN1cnJlbnQ9PT1TKUwuY3VycmVudD1udWxsfX07RigpO2xldCBPPSgpPT57aWYodHlwZW9mIGRvY3VtZW50PiJ1Inx8ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIT09ImhpZGRlbiIpRigpfSxJPXNldEludGVydmFsKE8sR1opO2lmKHR5cGVvZiB3aW5kb3c8InUiKXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsTyk7aWYodHlwZW9mIGRvY3VtZW50PCJ1Iilkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixPKTtyZXR1cm4oKT0+e2lmKEg9ITAsY2xlYXJJbnRlcnZhbChJKSx0eXBlb2Ygd2luZG93PCJ1Iil3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLE8pO2lmKHR5cGVvZiBkb2N1bWVudDwidSIpZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsTyk7TC5jdXJyZW50Py5hYm9ydCgpLFYuY3VycmVudD8uYWJvcnQoKSxMLmN1cnJlbnQ9bnVsbCxWLmN1cnJlbnQ9bnVsbH19LFskLEosUV0pO2xldCBVPUQoKGspPT57aWYoay5odHRwQ29kZWMhPT12b2lkIDApdHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShjNCxrLmh0dHBDb2RlYyl9Y2F0Y2h7fWxldCBIPUs4KEcuY3VycmVudCxrKTtHLmN1cnJlbnQ9SCxLKEgpfSxbXSksej1EKChrKT0+e2lmKCFKfHxOLmN1cnJlbnR8fE9iamVjdC5rZXlzKGspLmxlbmd0aD09PTApcmV0dXJuO2xldCBIPUcuY3VycmVudCxDPWUyKEgsayk7Ry5jdXJyZW50PUMsSyhDKSxMLmN1cnJlbnQ/LmFib3J0KCksTC5jdXJyZW50PW51bGw7bGV0IEY9KytCLmN1cnJlbnQsTz1uZXcgQWJvcnRDb250cm9sbGVyO1YuY3VycmVudD1PLE4uY3VycmVudD0hMCxxKCEwKSxmZXRjaChKLHttZXRob2Q6IlBBVENIIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoayksc2lnbmFsOk8uc2lnbmFsfSkudGhlbihhc3luYyhJKT0+e2lmKCFJLm9rKXRocm93IEVycm9yKGBTdHJlYW0gc2V0dGluZ3MgdXBkYXRlIGZhaWxlZCAoJHtJLnN0YXR1c30pYCk7bGV0IHc9czIoYXdhaXQgSS5qc29uKCksdDIoQykpO2lmKCFPLnNpZ25hbC5hYm9ydGVkJiZCLmN1cnJlbnQ9PT1GKXtsZXQgUz1lMihHLmN1cnJlbnQsdyk7Ry5jdXJyZW50PVMsSyhTKX19KS5jYXRjaCgoSSk9PntpZihPLnNpZ25hbC5hYm9ydGVkKXJldHVybjtpZihjb25zb2xlLndhcm4oIkZhaWxlZCB0byB1cGRhdGUgc3RyZWFtIHNldHRpbmdzIixJKSxCLmN1cnJlbnQ9PT1GKXtsZXQgdz1lMihHLmN1cnJlbnQsdDIoSCkpO0cuY3VycmVudD13LEsodyl9fSkuZmluYWxseSgoKT0+e2lmKFYuY3VycmVudD09PU8pVi5jdXJyZW50PW51bGw7aWYoIU8uc2lnbmFsLmFib3J0ZWQmJkIuY3VycmVudD09PUYpTi5jdXJyZW50PSExLHEoITEpfSl9LFtKXSk7cmV0dXJue3NldHRpbmdzOlosdXBkYXRlUGxheWJhY2s6VSx1cGRhdGVFbmNvZGVyOnoscGVuZGluZzpZLGVuY29kZXJTZXR0aW5nc0F2YWlsYWJsZTohIUp9fXZhciBZOD17c3RyZWFtZWQ6ITEsZmVsbEJhY2s6ITF9O2Z1bmN0aW9uIHI0KCQsSil7c3dpdGNoKEope2Nhc2UiZGVjb2RlZC1mcmFtZSI6cmV0dXJuICQuc3RyZWFtZWQ/JDp7Li4uJCxzdHJlYW1lZDohMH07Y2FzZSJ0aW1lb3V0IjpyZXR1cm4gJC5zdHJlYW1lZHx8JC5mZWxsQmFjaz8kOnsuLi4kLGZlbGxCYWNrOiEwfTtjYXNlImVycm9yIjpyZXR1cm4gJC5mZWxsQmFjaz8kOnsuLi4kLGZlbGxCYWNrOiEwfTtjYXNlInJlc2V0IjpyZXR1cm4gWTh9fXZhciBpND00MDAwO3ZhciBWWj17S2V5QTo0LEtleUI6NSxLZXlDOjYsS2V5RDo3LEtleUU6OCxLZXlGOjksS2V5RzoxMCxLZXlIOjExLEtleUk6MTIsS2V5SjoxMyxLZXlLOjE0LEtleUw6MTUsS2V5TToxNixLZXlOOjE3LEtleU86MTgsS2V5UDoxOSxLZXlROjIwLEtleVI6MjEsS2V5UzoyMixLZXlUOjIzLEtleVU6MjQsS2V5VjoyNSxLZXlXOjI2LEtleVg6MjcsS2V5WToyOCxLZXlaOjI5LERpZ2l0MTozMCxEaWdpdDI6MzEsRGlnaXQzOjMyLERpZ2l0NDozMyxEaWdpdDU6MzQsRGlnaXQ2OjM1LERpZ2l0NzozNixEaWdpdDg6MzcsRGlnaXQ5OjM4LERpZ2l0MDozOSxFbnRlcjo0MCxFc2NhcGU6NDEsQmFja3NwYWNlOjQyLFRhYjo0MyxTcGFjZTo0NCxNaW51czo0NSxFcXVhbDo0NixCcmFja2V0TGVmdDo0NyxCcmFja2V0UmlnaHQ6NDgsQmFja3NsYXNoOjQ5LFNlbWljb2xvbjo1MSxRdW90ZTo1MixCYWNrcXVvdGU6NTMsQ29tbWE6NTQsUGVyaW9kOjU1LFNsYXNoOjU2LENhcHNMb2NrOjU3LEYxOjU4LEYyOjU5LEYzOjYwLEY0OjYxLEY1OjYyLEY2OjYzLEY3OjY0LEY4OjY1LEY5OjY2LEYxMDo2NyxGMTE6NjgsRjEyOjY5LFByaW50U2NyZWVuOjcwLFNjcm9sbExvY2s6NzEsUGF1c2U6NzIsSW5zZXJ0OjczLEhvbWU6NzQsUGFnZVVwOjc1LERlbGV0ZTo3NixFbmQ6NzcsUGFnZURvd246NzgsQXJyb3dSaWdodDo3OSxBcnJvd0xlZnQ6ODAsQXJyb3dEb3duOjgxLEFycm93VXA6ODIsTnVtTG9jazo4MyxOdW1wYWREaXZpZGU6ODQsTnVtcGFkTXVsdGlwbHk6ODUsTnVtcGFkU3VidHJhY3Q6ODYsTnVtcGFkQWRkOjg3LE51bXBhZEVudGVyOjg4LE51bXBhZDE6ODksTnVtcGFkMjo5MCxOdW1wYWQzOjkxLE51bXBhZDQ6OTIsTnVtcGFkNTo5MyxOdW1wYWQ2Ojk0LE51bXBhZDc6OTUsTnVtcGFkODo5NixOdW1wYWQ5Ojk3LE51bXBhZDA6OTgsTnVtcGFkRGVjaW1hbDo5OSxDb250cm9sTGVmdDoyMjQsU2hpZnRMZWZ0OjIyNSxBbHRMZWZ0OjIyNixNZXRhTGVmdDoyMjcsQ29udHJvbFJpZ2h0OjIyOCxTaGlmdFJpZ2h0OjIyOSxBbHRSaWdodDoyMzAsTWV0YVJpZ2h0OjIzMX07ZnVuY3Rpb24gYTQoJCl7cmV0dXJuIFZaWyRdPz9udWxsfXZhciBxOD0zMjAsbjQ9NzYwLEc4PTMwMDtmdW5jdGlvbiBWOCgkLEope2lmKCEkKXJldHVybiBudWxsO2lmKCEkLmRldmljZSlyZXR1cm4gJDtpZighJC5wcm94eUhlbHBlcnMpcmV0dXJuICQ7bGV0IFo9YCR7JC5iYXNlUGF0aD09PSIvIj8iIjooJC5iYXNlUGF0aD8/IiIpLnJlcGxhY2UoL1wvKyQvLCIiKX0vaGVscGVyLyR7ZW5jb2RlVVJJQ29tcG9uZW50KCQuZGV2aWNlKX1gLEs9YCR7Si5wcm90b2NvbH0vLyR7Si5ob3N0fWAsWT1KLnByb3RvY29sPT09Imh0dHBzOiI/IndzczoiOiJ3czoiO3JldHVybnsuLi4kLHVybDpgJHtLfSR7Wn1gLHN0cmVhbVVybDpgJHtLfSR7Wn0vc3RyZWFtLm1qcGVnYCx3c1VybDpgJHtZfS8vJHtKLmhvc3R9JHtafS93c2B9fWZ1bmN0aW9uIHM0KCQsSil7bGV0IFE9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KEopKSxaPW5ldyBVaW50OEFycmF5KDErUS5sZW5ndGgpO3JldHVybiBaWzBdPSQsWi5zZXQoUSwxKSxafWZ1bmN0aW9uIEJaKCQsSixRPTMyKXtsZXQgWj1bLi4uJCxKXTtyZXR1cm4gWi5sZW5ndGg+UT9aLnNsaWNlKFoubGVuZ3RoLVEpOlp9ZnVuY3Rpb24gQjgoJCxKLFE9RGF0ZS5ub3coKSxaPTE1MDApe2xldCBLPUouZmlsdGVyKChZKT0+US1ZLmNyZWF0ZWRBdDw9Wik7aWYoISR8fCQucmVhZHlTdGF0ZSE9PTEpcmV0dXJuIEs7Zm9yKGxldCBZIG9mIEspJC5zZW5kKHM0KFkudGFnLFkucGF5bG9hZCkuYnVmZmVyKTtyZXR1cm5bXX1mdW5jdGlvbiB0NCgkLEosUSxaLEs9RGF0ZS5ub3coKSl7bGV0IFk9QjgoJCxKLEspO2lmKCQ/LnJlYWR5U3RhdGU9PT0xKXJldHVybiAkLnNlbmQoczQoUSxaKS5idWZmZXIpLFk7cmV0dXJuIEJaKFkse3RhZzpRLHBheWxvYWQ6WixjcmVhdGVkQXQ6S30pfXZhciBOWj17aDI2NDpbImgyNjQiLCJ2cDgiLCJ2cDkiXSx2cDk6WyJ2cDkiLCJ2cDgiXSx2cDg6WyJ2cDgiXX07ZnVuY3Rpb24gTFooJCxKKXtsZXQgUT1OWlskXSxaPVEuaW5kZXhPZihKKTtpZihaPT09LTEpcmV0dXJuIFFbMF0/P251bGw7cmV0dXJuIFFbWisxXT8/bnVsbH1mdW5jdGlvbiBlNCgkLEosUSl7aWYoUS5raW5kPT09InBlcm1hbmVudCIpcmV0dXJue3R5cGU6InN3aXRjaC10by1odHRwIn07aWYoUS5jb2RlYyE9PUopcmV0dXJuIG51bGw7bGV0IFo9TFooJCxKKTtyZXR1cm4gWiYmWiE9PUo/e3R5cGU6InJldHJ5LWNvZGVjIixjb2RlYzpafTp7dHlwZToic3dpdGNoLXRvLWh0dHAifX1mdW5jdGlvbiAkNygkKXtyZXR1cm4gJD9gJHskLmRldmljZX06JHskLnBpZH06JHskLnN0cmVhbVVybH06JHskLndzVXJsfToke0pTT04uc3RyaW5naWZ5KCQuc3RyZWFtU2V0dGluZ3M/P251bGwpfWA6IiJ9ZnVuY3Rpb24gelooKXtsZXRbJCxKXT1BKCgpPT5WOChsMih3aW5kb3cuX19TSU1fUFJFVklFV19fKSx3aW5kb3cubG9jYXRpb24pKSxbUSxaXT1BKCExKSxbSyxZXT1BKCgpPT57bGV0IHU9bDIod2luZG93Ll9fU0lNX1BSRVZJRVdfXyk7aWYodSlyZXR1cm4gdS5kZXZpY2U7cmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCJkZXZpY2UiKX0pLFtxLEddPUEoITEpLFtOLEJdPUEoITEpLFtMLFZdPUEoKCk9PntpZih0eXBlb2Ygd2luZG93PiJ1IilyZXR1cm4hMTtyZXR1cm4gd2luZG93LmlubmVyV2lkdGg+PUc4KzUyMH0pLHt3aWR0aDpVLG9uUG9pbnRlckRvd246en09aTUoInNlcnZlLXNpbTpkZXZpY2Utc2lkZWJhci13aWR0aCIsRzgsMjQwLDY0MCwicmlnaHQiKSxbayxIXT1BKG51bGwpLEM9d2luZG93Ll9fU0lNX1BSRVZJRVdfXyxGPUM/LmdyaWRBcGlFbmRwb2ludD8/ZjEoImdyaWQvYXBpIiksTz1DPy5ncmlkU3RhcnRFbmRwb2ludD8/ZjEoImdyaWQvYXBpL3N0YXJ0IiksST1DPy5ncmlkU2h1dGRvd25FbmRwb2ludD8/ZjEoImdyaWQvYXBpL3NodXRkb3duIiksW3csU109QSh7fSksW2osJDFdPUEoe30pLFttLGNdPUEoe30pLG49T2JqZWN0LnZhbHVlcyh3KS5zb21lKEJvb2xlYW4pfHxPYmplY3QudmFsdWVzKGopLnNvbWUoQm9vbGVhbikse2RldmljZXM6byx0b3RhbDpyLHJlZnJlc2g6UTEsbG9hZE1vcmU6TjEsbG9hZEFsbDpkLHJlc2V0UGFnZTp4LGhhc01vcmU6YX09bTQoRiwhMCxuKSxLMT0hIShLJiZvPy5maW5kKCh1KT0+dS5kZXZpY2U9PT1LKT8uaGVscGVyKSxMMT1EKCh1KT0+e1kodSk7dHJ5e2xldCB2PW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO3Yuc2VhcmNoUGFyYW1zLnNldCgiZGV2aWNlIix1KSx3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwiIix2LnRvU3RyaW5nKCkpfWNhdGNoe319LFtdKSxKMT1EKGFzeW5jKHUsdj0yMDAwMCk9PntsZXQgRzE9RGF0ZS5ub3coKSt2O3doaWxlKERhdGUubm93KCk8RzEpe3RyeXtpZigoKGF3YWl0KGF3YWl0IGZldGNoKEYse2NhY2hlOiJuby1zdG9yZSJ9KSkuanNvbigpKS5kZXZpY2VzPz9bXSkuc29tZSgoVzEpPT5XMS5kZXZpY2U9PT11JiZXMS5oZWxwZXIpKXJldHVybiEwfWNhdGNoe31hd2FpdCBuZXcgUHJvbWlzZSgoejEpPT5zZXRUaW1lb3V0KHoxLDQwMCkpfXJldHVybiExfSxbRl0pLFkxPUQoYXN5bmModSk9PntTKCh2KT0+KHsuLi52LFt1XTohMH0pKSxjKCh2KT0+KHsuLi52LFt1XTpudWxsfSkpO3RyeXtsZXQgdj1hd2FpdCBmZXRjaChPLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpKU09OLnN0cmluZ2lmeSh7dWRpZDp1fSl9KSxHMT1hd2FpdCB2Lmpzb24oKS5jYXRjaCgoKT0+KHt9KSk7aWYoIXYub2t8fCFHMS5vayl7YygoejEpPT4oey4uLnoxLFt1XTpHMS5lcnJvcj8/YEhUVFAgJHt2LnN0YXR1c31gfSkpO3JldHVybn1hd2FpdCBKMSh1KX1jYXRjaCh2KXtjKChHMSk9Pih7Li4uRzEsW3VdOnY/Lm1lc3NhZ2U/PyJSZXF1ZXN0IGZhaWxlZCJ9KSl9ZmluYWxseXtTKCh2KT0+KHsuLi52LFt1XTohMX0pKSxRMSgpfX0sW08sSjEsUTFdKSxDMT1EKGFzeW5jKHUpPT57JDEoKHYpPT4oey4uLnYsW3VdOiEwfSkpLGMoKHYpPT4oey4uLnYsW3VdOm51bGx9KSk7dHJ5e2xldCB2PWF3YWl0IGZldGNoKEkse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxib2R5OkpTT04uc3RyaW5naWZ5KHt1ZGlkOnV9KX0pLEcxPWF3YWl0IHYuanNvbigpLmNhdGNoKCgpPT4oe30pKTtpZighdi5va3x8IUcxLm9rKWMoKHoxKT0+KHsuLi56MSxbdV06RzEuZXJyb3I/P2BIVFRQICR7di5zdGF0dXN9YH0pKX1jYXRjaCh2KXtjKChHMSk9Pih7Li4uRzEsW3VdOnY/Lm1lc3NhZ2U/PyJSZXF1ZXN0IGZhaWxlZCJ9KSl9ZmluYWxseXskMSgodik9Pih7Li4udixbdV06ITF9KSksUTEoKX19LFtJLFExXSk7YigoKT0+e2lmKEspcmV0dXJuO2lmKCQ/LmRldmljZSl7WSgkLmRldmljZSk7cmV0dXJufWlmKCFvfHxvLmxlbmd0aD09PTApcmV0dXJuO2xldCB1PW8uZmluZCgodik9PnYuaGVscGVyKT8/by5maW5kKCh2KT0+di5zdGF0ZT09PSJCb290ZWQiKT8/b1swXTtpZih1KVkodS5kZXZpY2UpfSxbSywkPy5kZXZpY2Usb10pLGIoKCk9PntsZXQgdT1gJHtmMSgiYXBpL2V2ZW50cyIpfSR7Sz9gP2RldmljZT0ke2VuY29kZVVSSUNvbXBvbmVudChLKX1gOiIifWAsdj0oejEpPT57SigoQTEpPT57aWYoejE9VjgobDIoejEpLHdpbmRvdy5sb2NhdGlvbiksJDcoQTEpPT09JDcoejEpKXJldHVybiBBMTtpZih6MSl3aW5kb3cuX19TSU1fUFJFVklFV19fPXoxO2Vsc2UgaWYod2luZG93Ll9fU0lNX1BSRVZJRVdfXyl7bGV0e2Jhc2VQYXRoOlcxLGV4ZWNUb2tlbjppMX09d2luZG93Ll9fU0lNX1BSRVZJRVdfXzt3aW5kb3cuX19TSU1fUFJFVklFV19fPXtiYXNlUGF0aDpXMSxleGVjVG9rZW46aTF9fXJldHVybiB6MX0pfSxHMT15MCh1KTtyZXR1cm4gRzEub25tZXNzYWdlPSh6MSk9Pnt0cnl7dihsMihKU09OLnBhcnNlKHoxLmRhdGEpKSl9Y2F0Y2h7fX0sKCk9PkcxLmNsb3NlKCl9LFtLLEsxXSksYigoKT0+e2lmKCEkPy5sb2dzRW5kcG9pbnQpcmV0dXJuO2xldCB1PXkwKCQubG9nc0VuZHBvaW50KSx2PW5ldyBNYXAsRzE9WyIjOGJlOWZkIiwiIzUwZmE3YiIsIiNmZmI4NmMiLCIjZmY3OWM2IiwiI2JkOTNmOSIsIiNmMWZhOGMiLCIjNjI3MmE0IiwiI2ZmNTU1NSIsIiM2OWZmOTQiLCIjZDZhY2ZmIiwiI2ZmZmZhNSIsIiNhNGZmZmYiLCIjZmY2ZTZlIiwiI2NhYTlmYSIsIiM1YWY3OGUiXTtmdW5jdGlvbiB6MShpMSl7bGV0IE8xPXYuZ2V0KGkxKTtpZighTzEpe2xldCBqMT0wO2ZvcihsZXQgXzE9MDtfMTxpMS5sZW5ndGg7XzErKylqMT0oajE8PDUpLWoxK2kxLmNoYXJDb2RlQXQoXzEpfDA7TzE9RzFbTWF0aC5hYnMoajEpJUcxLmxlbmd0aF0sdi5zZXQoaTEsTzEpfXJldHVybiBPMX1sZXQgQTE9IiIsVzE9ITE7cmV0dXJuIHUub25tZXNzYWdlPShpMSk9Pnt0cnl7bGV0IE8xPUpTT04ucGFyc2UoaTEuZGF0YSksajE9TzEucHJvY2Vzc0ltYWdlUGF0aD8uc3BsaXQoIi8iKS5wb3AoKT8/TzEuc2VuZGVySW1hZ2VQYXRoPy5zcGxpdCgiLyIpLnBvcCgpPz8iIixfMT1PMS5zdWJzeXN0ZW0/PyIiLGwxPU8xLmNhdGVnb3J5Pz8iIixVMT1PMS5ldmVudE1lc3NhZ2U/PyIiO2lmKCFVMSlyZXR1cm47aWYoajEhPT1BMSl7aWYoVzEpY29uc29sZS5ncm91cEVuZCgpO2xldCBoMT16MShqMSk7Y29uc29sZS5ncm91cENvbGxhcHNlZChgJWMke2oxfSR7XzE/YCAlYyR7XzF9JHtsMT8iOiIrbDE6IiJ9YDoiIn1gLGBjb2xvcjoke2gxfTtmb250LXdlaWdodDpib2xkYCwuLi5fMT9bImNvbG9yOiM4ODg7Zm9udC13ZWlnaHQ6bm9ybWFsIl06W10pLFcxPSEwLEExPWoxfWxldCBJMT0oTzEubWVzc2FnZVR5cGU/PyIiKS50b0xvd2VyQ2FzZSgpLGQxPV8xJiZqMT09PUExP2AlYyR7bDF8fF8xfSVjIGA6IiIsdDE9ZDE/WyJjb2xvcjojODg4O2ZvbnQtc3R5bGU6aXRhbGljIiwiY29sb3I6aW5oZXJpdCJdOltdO2lmKEkxPT09ImZhdWx0Inx8STE9PT0iZXJyb3IiKWNvbnNvbGUubG9nKGAke2QxfSVjJHtVMX1gLC4uLnQxLCJjb2xvcjojZmY1NTU1Iik7ZWxzZSBpZihJMT09PSJkZWJ1ZyIpY29uc29sZS5sb2coYCR7ZDF9JWMke1UxfWAsLi4udDEsImNvbG9yOiM2MjcyYTQiKTtlbHNlIGNvbnNvbGUubG9nKGAke2QxfSVjJHtVMX1gLC4uLnQxLCJjb2xvcjppbmhlcml0Iil9Y2F0Y2h7fX0sKCk9PntpZihXMSljb25zb2xlLmdyb3VwRW5kKCk7dS5jbG9zZSgpfX0sWyQ/LmxvZ3NFbmRwb2ludF0pO2xldCB5PUs/PyQ/LmRldmljZT8/bnVsbCxnPW8/LmZpbmQoKHUpPT51LmRldmljZT09PXkpPz9udWxsLF89ISEkJiYkLmRldmljZT09PXkscDtpZihfJiYkKXA9WChVWix7Y29uZmlnOiQsZGV2aWNlTmFtZTpnPy5uYW1lPz9udWxsLGRldmljZVJ1bnRpbWU6Zz8ucnVudGltZT8/bnVsbCxjaHJvbWU6Zz8uY2hyb21lPz9udWxsLGF4T3ZlcmxheUVuYWJsZWQ6cSxzZXRBeE92ZXJsYXlFbmFibGVkOkcsZGV2dG9vbHNPcGVuOk4sc2V0RGV2dG9vbHNPcGVuOkIsZ3JpZE9wZW46TCxzZXRHcmlkT3BlbjpWLGdyaWRQYW5lbFdpZHRoOlUsc2VsZWN0ZWREZXZ0b29sc1RhcmdldElkOmssc2V0U2VsZWN0ZWREZXZ0b29sc1RhcmdldElkOkgsc3RyZWFtaW5nOlEsc2V0U3RyZWFtaW5nOlp9KTtlbHNle2xldCB1PUw/VSszNjoyNDtwPVgoImRpdiIse2NsYXNzTmFtZToiaC1zY3JlZW4gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTMgYmctcGFnZSBmb250LXN5c3RlbSBib3gtYm9yZGVyIFt0cmFuc2l0aW9uOnBhZGRpbmdfMC4yNXNfZWFzZV0iLHN0eWxlOntwYWRkaW5nTGVmdDp1LHBhZGRpbmdSaWdodDoyNH0sY2hpbGRyZW46Zz9YKHM5LHtuYW1lOmcubmFtZSxydW50aW1lOmcucnVudGltZSxjaHJvbWU6Zy5jaHJvbWU/P251bGwscGxhY2Vob2xkZXJBc3NldDpnLnBsYWNlaG9sZGVyQXNzZXQ/P251bGwsYnVzeTohIWcuaGVscGVyfHwhIXdbZy5kZXZpY2VdLGJ1c3lMYWJlbDpnLmhlbHBlcj8iQ29ubmVjdGluZ+KApiI6IlN0YXJ0aW5n4oCmIixlcnJvcjptW2cuZGV2aWNlXT8/bnVsbCxvblN0YXJ0OigpPT5ZMShnLmRldmljZSl9KTpYKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0zIHRleHQtY2VudGVyIixjaGlsZHJlbjpbWCgiaDEiLHtjbGFzc05hbWU6InRleHQtWzE4cHhdIG0tMCB0ZXh0LXdoaXRlLzkwIixjaGlsZHJlbjoiTm8gc2ltdWxhdG9ycyBhdmFpbGFibGUifSksWCgicCIse2NsYXNzTmFtZToidGV4dC13aGl0ZS81NSB0ZXh0LVsxNHB4XSBtYXgtdy0xMjAiLGNoaWxkcmVuOlsiQ3JlYXRlIGEgc2ltdWxhdG9yIGluIFhjb2RlLCBvciBzdGFydCBvbmUgd2l0aCIsIiAiLFgoImNvZGUiLHtjbGFzc05hbWU6ImJnLVsjMjIyXSBweC0xLjUgcHktMC41IHJvdW5kZWQgdGV4dC1bMTNweF0iLGNoaWxkcmVuOiJidW54IEBleHBvL3NlcnZlLXNpbSAtLWRldGFjaCJ9KSwiLiJdfSldfSl9KX1yZXR1cm4gWChaMSx7Y2hpbGRyZW46W3AsWCh4Nix7fSksWChaNix7b3BlbjpMLG9uQ2xvc2U6KCk9PlYoITEpLHdpZHRoOlUsc2lkZToibGVmdCIsZGV2aWNlczpvLHRvdGFsOnIsaGFzTW9yZTphLG9uTG9hZE1vcmU6TjEsb25Mb2FkQWxsOmQsb25SZXNldFBhZ2U6eCxzZWxlY3RlZFVkaWQ6eSxvblNlbGVjdDpMMSxzdGFydGluZzp3LHNodXR0aW5nRG93bjpqLG9uU2h1dGRvd246QzF9KSxYKHY1LHtwYW5lbFdpZHRoOlUsdmlzaWJsZTpMLG9uUG9pbnRlckRvd246eixhcmlhTGFiZWw6IlJlc2l6ZSBzaW11bGF0b3JzIHNpZGViYXIiLHNpZGU6ImxlZnQifSksWChjOSx7b3BlbjpMLG9uQ2xpY2s6KCk9PlYoITApfSldfSl9ZnVuY3Rpb24gVVooe2NvbmZpZzokLGRldmljZU5hbWU6SixkZXZpY2VSdW50aW1lOlEsY2hyb21lOlosYXhPdmVybGF5RW5hYmxlZDpLLHNldEF4T3ZlcmxheUVuYWJsZWQ6WSxkZXZ0b29sc09wZW46cSxzZXREZXZ0b29sc09wZW46RyxncmlkT3BlbjpOLHNldEdyaWRPcGVuOkIsZ3JpZFBhbmVsV2lkdGg6TCxzZWxlY3RlZERldnRvb2xzVGFyZ2V0SWQ6VixzZXRTZWxlY3RlZERldnRvb2xzVGFyZ2V0SWQ6VSxzdHJlYW1pbmc6eixzZXRTdHJlYW1pbmc6a30pe2IoKCk9Pntkb2N1bWVudC50aXRsZT1KP2BTaW11bGF0b3IgLSAke0p9YDoiU2ltdWxhdG9yIFByZXZpZXcifSxbSl0pO2xldCBIPUkwKEopLEM9ZjQoJC5kZXZ0b29sc0VuZHBvaW50Pz9mMSgiZGV2dG9vbHMiKSxxKTtiKCgpPT57aWYoIXEpcmV0dXJuO2lmKFYmJkMudGFyZ2V0cy5zb21lKChoKT0+aC5pZD09PVYpKXJldHVybjtVKEMudGFyZ2V0cy5sZW5ndGg9PT0xP0MudGFyZ2V0c1swXS5pZDpudWxsKX0sW3EsQy50YXJnZXRzLFYsVV0pLGIoKCk9PntVKG51bGwpfSxbJC5kZXZpY2UsVV0pO2xldCBGPXc0KCksTz1vNCh7ZGV2aWNlOiQuZGV2aWNlLGVuZHBvaW50OiQuc3RyZWFtU2V0dGluZ3NFbmRwb2ludCxpbml0aWFsU2V0dGluZ3M6JC5zdHJlYW1TZXR0aW5nc30pLEk9Ty5zZXR0aW5ncyx3PU8udXBkYXRlUGxheWJhY2ssUz1JLnRyYW5zcG9ydD09PSJ3ZWJydGMiLGo9VChudWxsKSwkMT1TLFttLGNdPUEobnVsbCksbj1JLndlYlJ0Y0NvZGVjLG89bT8/bixyPWI0KHtvZmZlclVybDpTMygkKSxjbG9zZVVybDpoOSgkKSxlbmFibGVkOiQxLGNvZGVjOm8saWNlU2VydmVyczpJLmljZVNlcnZlcnN9KSxbUTEsTjFdPWQwKHI0LFk4KSxbZF09QSgoKT0+bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5nZXQoImNvZGVjIik9PT0ibWpwZWciKSx4PUkuaHR0cENvZGVjPT09Im1qcGVnIixhPSEkMSYmIXgmJkYuc3VwcG9ydGVkJiYhUTEuZmVsbEJhY2smJiFkLEsxPUQ0KGF8fCQxP251bGw6UjkoJCkpO2IoKCk9PntrKCExKSxOMSgicmVzZXQiKSxjKG51bGwpfSxbJC5zdHJlYW1VcmwsayxJLnRyYW5zcG9ydCxJLmh0dHBDb2RlYyxJLndlYlJ0Y0NvZGVjXSksYigoKT0+e2lmKCFTfHwhci5mYWlsdXJlKXJldHVybjtpZihqLmN1cnJlbnQ9PT1yLmZhaWx1cmUuc2Vzc2lvbklkKXJldHVybjtqLmN1cnJlbnQ9ci5mYWlsdXJlLnNlc3Npb25JZDtsZXQgaD1lNChuLG8sci5mYWlsdXJlKTtpZighaClyZXR1cm47aWYoaC50eXBlPT09InN3aXRjaC10by1odHRwIil7dyh7dHJhbnNwb3J0OiJodHRwIn0pO3JldHVybn1jKGguY29kZWMpfSxbbixvLHcsUyxyLmZhaWx1cmVdKSxiKCgpPT57aWYoIWEpcmV0dXJuO2xldCBoPXNldFRpbWVvdXQoKCk9Pk4xKCJ0aW1lb3V0IiksaTQpO3JldHVybigpPT5jbGVhclRpbWVvdXQoaCl9LFthLCQuc3RyZWFtVXJsXSk7bGV0W0wxLEoxXT1BKG51bGwpLFtZMSxDMV09QShudWxsKSx5PVkxLGc9TDE/P3k/P3EyKEgsSiksXz1rNShILGcpLHA9RzIoSCxnKSx1PUY1KGcpLHY9WDIoZyksRzE9dj92LndpZHRoL3YuaGVpZ2h0OjEsejE9ZjAoZyksQTE9ISFaJiYhejEsVzE9QTE/Wi5mcmFtZS53aWR0aC9aLnNjcmVlbi53aWR0aDoxLGkxPXAqVzEsTzE9QTE/Wi5mcmFtZS53aWR0aC9aLmZyYW1lLmhlaWdodDpHMSxqMT1BMT9gJHtaLmZyYW1lLndpZHRofSAvICR7Wi5mcmFtZS5oZWlnaHR9YDp1LF8xPVQobnVsbCksbDE9VChbXSk7YigoKT0+e2xldCBoPSExLGU9bnVsbCxXPW51bGw7bDEuY3VycmVudD1bXTtsZXQgTT0oKT0+e2lmKGh8fGUpcmV0dXJuO2U9c2V0VGltZW91dCgoKT0+e2U9bnVsbCxFKCl9LDEwMDApfSxFPSgpPT57bGV0IFI9bmV3IFdlYlNvY2tldCgkLndzVXJsKTtSLmJpbmFyeVR5cGU9ImFycmF5YnVmZmVyIixXPVIsXzEuY3VycmVudD1SLFIub25vcGVuPSgpPT57bDEuY3VycmVudD1COChSLGwxLmN1cnJlbnQpfSxSLm9ubWVzc2FnZT0odCk9PntpZighKHQuZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm47bGV0IHExPW5ldyBVaW50OEFycmF5KHQuZGF0YSk7aWYocTEubGVuZ3RoPDF8fHExWzBdIT09MTMwKXJldHVybjt0cnl7bGV0IEgxPUpTT04ucGFyc2UobmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHExLnN1YmFycmF5KDEpKSk7aWYoSDEud2lkdGg8PTB8fEgxLmhlaWdodDw9MClyZXR1cm47QzEoKFAxKT0+UDEmJlAxLndpZHRoPT09SDEud2lkdGgmJlAxLmhlaWdodD09PUgxLmhlaWdodCYmUDEub3JpZW50YXRpb249PT1IMS5vcmllbnRhdGlvbj9QMTpIMSl9Y2F0Y2h7fX0sUi5vbmNsb3NlPSgpPT57aWYoXzEuY3VycmVudD09PVIpXzEuY3VycmVudD1udWxsO00oKX0sUi5vbmVycm9yPSgpPT57Ui5jbG9zZSgpfX07cmV0dXJuIEUoKSwoKT0+e2lmKGg9ITAsZSljbGVhclRpbWVvdXQoZSk7aWYoXzEuY3VycmVudD09PVcpXzEuY3VycmVudD1udWxsO1c/LmNsb3NlKCl9fSxbJC53c1VybF0pO2xldCBVMT1EKChoLGUpPT57bDEuY3VycmVudD10NChfMS5jdXJyZW50LGwxLmN1cnJlbnQsaCxlKX0sW10pLEkxPUQoKGgpPT5VMSgzLGgpLFtVMV0pLGQxPUQoKGgpPT5VMSg1LGgpLFtVMV0pLHQxPUQoKGgpPT5VMSg0LHtidXR0b246aH0pLFtVMV0pLGgxPUQoKHtwaGFzZTpoLGJ1dHRvbjplfSk9PntpZihlLnVzYWdlUGFnZT09bnVsbHx8ZS51c2FnZT09bnVsbClyZXR1cm47VTEoNCx7YnV0dG9uOmUubmFtZSxwYWdlOmUudXNhZ2VQYWdlLHVzYWdlOmUudXNhZ2UscGhhc2U6aH0pfSxbVTFdKSxhMT1EKChoKT0+VTEoMTAse2RlbHRhOmh9KSxbVTFdKSwkMD1EKChoKT0+VTEoMTEsaCksW1UxXSksVjA9RCgoaCk9PntKMSgoZSk9PmUmJmUud2lkdGg9PT1oLndpZHRoJiZlLmhlaWdodD09PWguaGVpZ2h0JiZlLm9yaWVudGF0aW9uPT09aC5vcmllbnRhdGlvbj9lOmgpfSxbXSksczE9RCgoaCk9PntVMSg3LHtvcmllbnRhdGlvbjpofSl9LFtVMV0pLHYwPWcub3JpZW50YXRpb24/PyJwb3J0cmFpdCIsbTE9SCE9PSJ3YXRjaCImJkghPT0idmlzaW9uIixxMD1EKChoKT0+e2lmKCFtMSlyZXR1cm47bGV0IGU9KGg9PT0ibGVmdCI/RDI6SDMpW3YwXTtzMShlKX0sW20xLHYwLHMxXSk7YigoKT0+e0oxKG51bGwpLEMxKG51bGwpfSxbJC5zdHJlYW1VcmxdKSxiKCgpPT57bGV0IGg9eTtpZighaClyZXR1cm47SjEoKGUpPT5lJiZlLndpZHRoPT09aC53aWR0aCYmZS5oZWlnaHQ9PT1oLmhlaWdodCYmZS5vcmllbnRhdGlvbj09PWgub3JpZW50YXRpb24/ZTpudWxsKX0sW3kseT8ud2lkdGgseT8uaGVpZ2h0LHk/Lm9yaWVudGF0aW9uXSk7bGV0IEowPUQoKGgsZSk9PntVMSg2LHt0eXBlOmgsdXNhZ2U6ZX0pfSxbVTFdKSxbXzAsYzFdPUEobnVsbCksW24xLFAwXT1BKCgpPT57aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuITE7bGV0IGg9TnVtYmVyKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgic2VydmUtc2ltOnRvb2xzLXBhbmVsLXdpZHRoIikpLGU9TnVtYmVyLmlzRmluaXRlKGgpJiZoPjA/aDpxODtyZXR1cm4gd2luZG93LmlubmVyV2lkdGg+PWUrNDgwfSkse3dpZHRoOnYxLG9uUG9pbnRlckRvd246QzB9PWk1KCJzZXJ2ZS1zaW06dG9vbHMtcGFuZWwtd2lkdGgiLHE4LDI0MCw3MjApLHt3aWR0aDpCMCxvblBvaW50ZXJEb3duOkQxfT1pNSgic2VydmUtc2ltOmRldnRvb2xzLXBhbmVsLXdpZHRoIixuNCw0MjAsMTQwMCksW3kxLFEwXT1BKCgpPT50eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cuaW5uZXJXaWR0aDowKSxbRjAsTjBdPUEoKCk9PnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdy5pbm5lckhlaWdodDowKTtiKCgpPT57bGV0IGg9KCk9PntRMCh3aW5kb3cuaW5uZXJXaWR0aCksTjAod2luZG93LmlubmVySGVpZ2h0KX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGgpLCgpPT53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixoKX0sW10pLGIoKCk9PntsZXQgaD15MCgkLmFwcFN0YXRlRW5kcG9pbnQ/P2YxKCJhcHBzdGF0ZSIpKSxlPW51bGw7cmV0dXJuIGgub25tZXNzYWdlPShXKT0+e3RyeXtsZXQgTT1KU09OLnBhcnNlKFcuZGF0YSk7aWYoZSljbGVhclRpbWVvdXQoZSk7bGV0IEU9TT8uaXNSZWFjdE5hdGl2ZT8wOjYwMDtlPXNldFRpbWVvdXQoKCk9PmMxKE0pLEUpfWNhdGNoe319LCgpPT57aWYoZSljbGVhclRpbWVvdXQoZSk7aC5jbG9zZSgpfX0sWyQuYXBwU3RhdGVFbmRwb2ludF0pO2xldCBrMD1EKGFzeW5jKCk9PntKMCgiZG93biIsMjEpLGF3YWl0IG5ldyBQcm9taXNlKChlKT0+c2V0VGltZW91dChlLDMwKSksSjAoInVwIiwyMSl9LFtKMF0pLFgxPVQobnVsbCksW1AsbF09QSgwKSxbaSxrMV09QSgwKTtiKCgpPT57bGV0IGg9WDEuY3VycmVudDtpZighaHx8dHlwZW9mIFJlc2l6ZU9ic2VydmVyPiJ1IilyZXR1cm47bGV0IGU9bmV3IFJlc2l6ZU9ic2VydmVyKChXKT0+e2xldCBNPVdbMF0/LmNvbnRlbnRSZWN0O2woTT8ud2lkdGg/PzApLGsxKE0/LmhlaWdodD8/MCl9KTtyZXR1cm4gZS5vYnNlcnZlKGgpLCgpPT5lLmRpc2Nvbm5lY3QoKX0sW10pO2xldFtWMSxCMV09QSghMCksZzE9VCghMCk7ZzEuY3VycmVudD1WMTtsZXQgcDE9VChuZXcgU2V0KTtiKCgpPT57bGV0IGg9KGUpPT57bGV0IFc9ISFYMS5jdXJyZW50Py5jb250YWlucyhlLnRhcmdldCk7QjEoVyl9O3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsaCwhMCksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixoLCEwKX0sW10pLGIoKCk9PntpZihWMSlyZXR1cm47bGV0IGg9cDEuY3VycmVudDtpZihoLnNpemU9PT0wKXJldHVybjtmb3IobGV0IGUgb2YgaClVMSg2LHt0eXBlOiJ1cCIsdXNhZ2U6ZX0pO2guY2xlYXIoKX0sW1YxLFUxXSksYigoKT0+e2xldCBoPShNLEUpPT57aWYoIWcxLmN1cnJlbnQpcmV0dXJuO2lmKE0uY29kZT09PSJLZXlIIiYmTS5tZXRhS2V5JiZNLnNoaWZ0S2V5KXtpZihNLnByZXZlbnREZWZhdWx0KCksRT09PSJkb3duIiYmIU0ucmVwZWF0KVUxKDQse2J1dHRvbjoiaG9tZSJ9KTtyZXR1cm59aWYoKE0uY29kZT09PSJBcnJvd0xlZnQifHxNLmNvZGU9PT0iQXJyb3dSaWdodCIpJiZNLm1ldGFLZXkmJiFNLnNoaWZ0S2V5JiYhTS5hbHRLZXkmJiFNLmN0cmxLZXkpe2lmKE0ucHJldmVudERlZmF1bHQoKSxFPT09ImRvd24iJiYhTS5yZXBlYXQpcTAoTS5jb2RlPT09IkFycm93TGVmdCI/ImxlZnQiOiJyaWdodCIpO3JldHVybn1pZihNLmNvZGU9PT0iS2V5QSImJk0ubWV0YUtleSYmTS5zaGlmdEtleSl7aWYoTS5wcmV2ZW50RGVmYXVsdCgpLEU9PT0iZG93biImJiFNLnJlcGVhdClFMShgeGNydW4gc2ltY3RsIHVpICR7JC5kZXZpY2V9IGFwcGVhcmFuY2VgKS50aGVuKCh0KT0+e2xldCBxMT10LnN0ZG91dC50cmltKCk9PT0iZGFyayI/ImxpZ2h0IjoiZGFyayI7cmV0dXJuIEUxKGB4Y3J1biBzaW1jdGwgdWkgJHskLmRldmljZX0gYXBwZWFyYW5jZSAke3ExfWApfSkuY2F0Y2goKCk9Pnt9KTtyZXR1cm59aWYoTS5jb2RlPT09IktleUsiJiZNLm1ldGFLZXkmJiFNLnNoaWZ0S2V5JiYhTS5hbHRLZXkmJiFNLmN0cmxLZXkpe2lmKE0ucHJldmVudERlZmF1bHQoKSxFPT09ImRvd24iJiYhTS5yZXBlYXQpVTEoMTIse30pO3JldHVybn1sZXQgUj1hNChNLmNvZGUpO2lmKFI9PW51bGwpcmV0dXJuO2lmKE0ucHJldmVudERlZmF1bHQoKSxFPT09ImRvd24iKXAxLmN1cnJlbnQuYWRkKFIpO2Vsc2UgcDEuY3VycmVudC5kZWxldGUoUik7VTEoNix7dHlwZTpFLHVzYWdlOlJ9KX0sZT0oTSk9PmgoTSwiZG93biIpLFc9KE0pPT5oKE0sInVwIik7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixlKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLFcpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLGUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsVyl9fSxbVTEsJC5kZXZpY2UscTBdKTtsZXQgeDE9ZzQoKSxNMD12NCgkLmRldmljZSksWjA9XzQoe2V4ZWM6RTEsdWRpZDokLmRldmljZSxlbmFibGVkOnosb25VcGxvYWRTdGFydDp4MS5hZGQsb25VcGxvYWRQcm9ncmVzczp4MS5zZXRQcm9ncmVzcyxvblVwbG9hZEVuZDooaCxlLFcpPT54MS51cGRhdGUoaCx7c3RhdHVzOmU/InN1Y2Nlc3MiOiJlcnJvciIsbWVzc2FnZTpXfSksb25VbnN1cHBvcnRlZDooaCk9PntsZXQgZT14MS5hZGQoaC5uYW1lLCJtZWRpYSIpO3gxLnVwZGF0ZShlLHtzdGF0dXM6ImVycm9yIixtZXNzYWdlOmBVbnN1cHBvcnRlZDogJHtoLnR5cGV8fEYyKGgpfWB9KX0sb25Ib3N0UGF0aERyb3A6TTAuZGlzbWlzc30pLHcxPWg0KHtkZWZhdWx0V2lkdGg6aTEsdmlld3BvcnRXaWR0aDp5MSx2aWV3cG9ydEhlaWdodDpGMCxhc3BlY3RSYXRpbzpPMSxvblN0YXJ0OigpPT5CMSghMSl9KSxMMD0xMixEMD0yNCxTMD1QPjA/TWF0aC5taW4oUCx3MS53aWR0aCk6dzEud2lkdGgsTzA9KGgpPT57aWYoaDw9MClyZXR1cm4gMDtsZXQgZT15MS1MMC1oLE09eTEvMitTMC8yLShlLUQwKTtpZihNPD0wKXJldHVybiAwO2xldCBFPTIqTTtyZXR1cm4gRTw9aCtEMD9FOjB9LCQ1PU8wKHE/QjA6bjE/djE6MCksSjU9TzAoTj9MOjApO3JldHVybiBYKGw5LHtlbmRwb2ludDpLPyQ/LmF4RW5kcG9pbnQ6dm9pZCAwLGNoaWxkcmVuOlgoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC1zY3JlZW4gYmctcGFnZSBweS02IGdhcC0zIGZvbnQtc3lzdGVtIGJveC1ib3JkZXIiLHN0eWxlOntwYWRkaW5nTGVmdDoyNCtKNSxwYWRkaW5nUmlnaHQ6MjQrJDUsdHJhbnNpdGlvbjp3MS5pc1Jlc2l6aW5nfHx3MS5pc0luZXJ0aWE/Im5vbmUiOlk2fSxjaGlsZHJlbjpbWCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMyBtaW4tdy0wIixzdHlsZTp7d2lkdGg6dzEud2lkdGgsdHJhbnNpdGlvbjp3MS5pc1Jlc2l6aW5nfHx3MS5pc0luZXJ0aWE/ZjM6bTN9LGNoaWxkcmVuOltYKHIxLHtleGVjOkUxLG9uUm90YXRlOnMxLG9yaWVudGF0aW9uOmcub3JpZW50YXRpb24/P251bGwsZGV2aWNlVWRpZDokLmRldmljZSxkZXZpY2VOYW1lOkosZGV2aWNlUnVudGltZTpRLHN0cmVhbWluZzp6LCJhcmlhLWxhYmVsIjoiU2ltdWxhdG9yIHN0YXR1cyIsc3R5bGU6e2FsaWduU2VsZjoiY2VudGVyIix3aWR0aDoiYXV0byIsbWluV2lkdGg6MCxtYXhXaWR0aDoiMTAwJSIsZmxleFdyYXA6Im5vd3JhcCIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsZ2FwOjEwLHBhZGRpbmc6IjZweCAxMHB4Iixib3JkZXJSYWRpdXM6MTh9LGNoaWxkcmVuOltYKHIxLlRpdGxlLHtvbkNsaWNrOigpPT5CKChoKT0+IWgpLCJhcmlhLWxhYmVsIjoiVG9nZ2xlIHNpbXVsYXRvcnMgc2lkZWJhciIsImFyaWEtcHJlc3NlZCI6Tix0aXRsZToiU2ltdWxhdG9ycyIsaGlkZVN1YnRpdGxlOiEwLGhpZGVDaGV2cm9uOiEwLHN0eWxlOnttYXhXaWR0aDoibWluKDIzMHB4LCBjYWxjKDEwMHZ3IC0gMTcwcHgpKSJ9fSksWChSNix7c3RyZWFtaW5nOnp9KV19KSxYKCJkaXYiLHtyZWY6WDEsY2xhc3NOYW1lOiJyZWxhdGl2ZSBtYXgtaC1mdWxsIixzdHlsZTp7d2lkdGg6dzEud2lkdGgsYXNwZWN0UmF0aW86ajEsdHJhbnNpdGlvbjp3MS5pc1Jlc2l6aW5nfHx3MS5pc0luZXJ0aWE/ZjM6bTMsd2lsbENoYW5nZTp3MS5pc1Jlc2l6aW5nfHx3MS5pc0luZXJ0aWE/IndpZHRoIjp2b2lkIDB9LC4uLlowLmRyb3Bab25lUHJvcHMsY2hpbGRyZW46WygoKT0+e2xldCBoPVgoQzUse3VybDokLnVybCx3c1VybDokLndzVXJsLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixib3JkZXI6Im5vbmUiLHBvaW50ZXJFdmVudHM6dzEuaXNSZXNpemluZ3x8dzEuaXNJbmVydGlhPyJub25lIjp2b2lkIDB9LGltYWdlU3R5bGU6e2JvcmRlclJhZGl1czpBMT8wOl8sY29ybmVyU2hhcGU6QTE/dm9pZCAwOiJzdXBlcmVsbGlwc2UoMS4zKSIsLi4uQTE/e306e2JveFNoYWRvdzoiaW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSJ9fSxoaWRlQ29udHJvbHM6ITAsb25TdHJlYW1pbmdDaGFuZ2U6ayxvblN0cmVhbVRvdWNoOkkxLG9uU3RyZWFtTXVsdGlUb3VjaDpkMSxvblN0cmVhbUJ1dHRvbjp0MSxvblN0cmVhbURpZ2l0YWxDcm93bjphMSxvblN0cmVhbVNjcm9sbDokMCxzdHJlYW1Nb2RlOiQxPyJ3ZWJydGMiOmE/ImF2Y2MiOiJtanBlZyIsd2ViUnRjU3RyZWFtOnIuc3RyZWFtLG9uV2ViUnRjRnJhbWU6ci5tYXJrRnJhbWVEZWNvZGVkLHN0cmVhbUVycm9yOiQxP3IuZXJyb3I6bnVsbCxvbkF2Y2NFcnJvcjooKT0+TjEoImVycm9yIiksb25BdmNjRGVjb2RlZEZyYW1lOigpPT5OMSgiZGVjb2RlZC1mcmFtZSIpLHN1YnNjcmliZUZyYW1lOmE/dm9pZCAwOksxLnN1YnNjcmliZUZyYW1lLHN0cmVhbUZyYW1lOmE/dm9pZCAwOksxLmZyYW1lLHN0cmVhbUNvbmZpZzpnLGVuYWJsZURpZ2l0YWxDcm93bjpIPT09IndhdGNoIixvblNjcmVlbkNvbmZpZ0NoYW5nZTpWMH0pLGU9WChaMSx7Y2hpbGRyZW46W2gsSyYmWCh1OSx7fSldfSk7aWYoIUExKXJldHVybiBlO3JldHVybiBYKHg1LHtjaHJvbWU6WixpbnRlcmFjdGl2ZTohMCxvbkJ1dHRvbjpoMSxvbkNyb3duV2hlZWw6KFcsTSk9PntsZXQgRT13MihXLE0saXx8MSk7aWYoRSE9bnVsbClhMShFKX0sc2NyZWVuOmV9KX0pKCksWjAuaXNEcmFnT3ZlciYmWCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIGJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLWFjY2VudCBiZy1bcmdiYSg5OSwxMDIsMjQxLDAuMTgpXSB0ZXh0LWFjY2VudCBwb2ludGVyLWV2ZW50cy1ub25lIHotMjAiLHN0eWxlOntib3JkZXJSYWRpdXM6QTE/dm9pZCAwOl99LGNoaWxkcmVuOltYKGYyLHtzaXplOjMyLHN0cm9rZVdpZHRoOjEuNX0pLFgoInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzEzcHhdIGZvbnQtbWVkaXVtIixjaGlsZHJlbjoiRHJvcCBtZWRpYSBvciAuaXBhIn0pXX0pLFgoSTYse3NpbXVsYXRvclJlc2l6ZTp3MSxkZXZpY2VUeXBlOkgsc3RyZWFtQ29uZmlnOmcsY29udGFpbmVyV2lkdGg6UHx8dzEud2lkdGgsY29udGFpbmVySGVpZ2h0Oml8fChPMT4wP3cxLndpZHRoL08xOjApfSksWCh2Nix7d2lkdGg6UHx8dzEud2lkdGgsaGVpZ2h0Oml8fChPMT4wP3cxLndpZHRoL08xOjApLHZpc2libGU6dzEuaXNSZXNpemluZ3x8dzEuaXNJbmVydGlhfSldfSksWCgiZGl2Iix7Y2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgbWF4LXctZnVsbCIsY2hpbGRyZW46W1gocjEse2V4ZWM6RTEsb25Sb3RhdGU6czEsb3JpZW50YXRpb246Zy5vcmllbnRhdGlvbj8/bnVsbCxkZXZpY2VVZGlkOiQuZGV2aWNlLGRldmljZU5hbWU6SixkZXZpY2VSdW50aW1lOlEsc3RyZWFtaW5nOnosImFyaWEtbGFiZWwiOiJTaW11bGF0b3IgYWN0aW9ucyIsc3R5bGU6e2FsaWduU2VsZjoiY2VudGVyIix3aWR0aDoiYXV0byIsbWluV2lkdGg6MCxtYXhXaWR0aDoiMTAwJSIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIscGFkZGluZzoiNnB4IDhweCIsYm9yZGVyUmFkaXVzOjE4fSxjaGlsZHJlbjpYKHIxLkFjdGlvbnMse2NoaWxkcmVuOltfMD8uaXNSZWFjdE5hdGl2ZSYmWChyMS5CdXR0b24seyJhcmlhLWxhYmVsIjoiUmVsb2FkIFJlYWN0IE5hdGl2ZSBidW5kbGUiLHRpdGxlOiJSZWxvYWQgKFIpIixvbkNsaWNrOigpPT52b2lkIGswKCksY2hpbGRyZW46WChpMCx7fSl9KSxYKHIxLkhvbWVCdXR0b24se3RpdGxlOiJIb21lIn0pLFgocjEuU2NyZWVuc2hvdEJ1dHRvbix7dGl0bGU6IlNjcmVlbnNob3QiLG9uQ2xpY2s6KGgpPT57aC5wcmV2ZW50RGVmYXVsdCgpLE0wLmNhcHR1cmUoKX19KSxYKHIxLlJvdGF0ZUJ1dHRvbix7dGl0bGU6IlJvdGF0ZSBkZXZpY2UifSldfSl9KSxYKHIxLHtleGVjOkUxLG9uUm90YXRlOnMxLG9yaWVudGF0aW9uOmcub3JpZW50YXRpb24/P251bGwsZGV2aWNlVWRpZDokLmRldmljZSxkZXZpY2VOYW1lOkosZGV2aWNlUnVudGltZTpRLHN0cmVhbWluZzp6LCJhcmlhLWxhYmVsIjoiQWNjZXNzaWJpbGl0eSBvdmVybGF5IixzdHlsZTp7d2lkdGg6ImF1dG8iLG1pbldpZHRoOjAsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIscGFkZGluZzo2LGJvcmRlclJhZGl1czoyMn0sY2hpbGRyZW46WChkOSx7b3ZlcmxheUVuYWJsZWQ6SyxzdHJlYW1pbmc6eixvblRvZ2dsZU92ZXJsYXk6KCk9PlkoKGgpPT4haCl9KX0pXX0pXX0pLFgoImRpdiIse2NsYXNzTmFtZTpgZml4ZWQgdG9wLTMgcmlnaHQtMyBmbGV4IGZsZXgtY29sIGdhcC0xIHAtMSBiZy1wYW5lbC1iZyBib3JkZXIgYm9yZGVyLXdoaXRlLzggcm91bmRlZC1bMTBweF0gYmFja2Ryb3AtYmx1ci1bMTJweF0gWy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMTJweCldIFt0cmFuc2l0aW9uOm9wYWNpdHlfMC4xOHNfZWFzZV0gei00MCAke24xfHxxPyJvcGFjaXR5LTAgcG9pbnRlci1ldmVudHMtbm9uZSI6Im9wYWNpdHktMTAwIHBvaW50ZXItZXZlbnRzLWF1dG8ifWAsY2hpbGRyZW46W1goImJ1dHRvbiIse29uQ2xpY2s6KCk9PntHKCExKSxQMCgoaCk9PiFoKX0sY2xhc3NOYW1lOiJ3LVszMHB4XSBoLVszMHB4XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSByb3VuZGVkLW1kIHRleHQtWyM4ZThlOTNdIGN1cnNvci1wb2ludGVyIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjoiT3BlbiB0b29scyBwYW5lbCIsImFyaWEtcHJlc3NlZCI6bjEsdGl0bGU6IlRvb2xzIixjaGlsZHJlbjpYKFIyLHtzaXplOjE4LHN0cm9rZVdpZHRoOjEuNzV9KX0pLFgoImJ1dHRvbiIse29uQ2xpY2s6KCk9PntQMCghMSksRygoaCk9PiFoKX0sY2xhc3NOYW1lOiJ3LVszMHB4XSBoLVszMHB4XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSByb3VuZGVkLW1kIHRleHQtWyM4ZThlOTNdIGN1cnNvci1wb2ludGVyIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjoiT3BlbiBXZWJLaXQgRGV2VG9vbHMiLCJhcmlhLXByZXNzZWQiOnEsdGl0bGU6IldlYktpdCBEZXZUb29scyIsY2hpbGRyZW46WChqMix7c2l6ZToxOCxzdHJva2VXaWR0aDoxLjc1fSl9KV19KSxYKEM0LHtvcGVuOm4xLG9uQ2xvc2U6KCk9PlAwKCExKSx1ZGlkOiQuZGV2aWNlLGRldmljZVJ1bnRpbWU6USxjdXJyZW50QXBwOl8wLGV2ZW50TG9nRXZlbnRzRW5kcG9pbnQ6JC5ldmVudExvZ0V2ZW50c0VuZHBvaW50LG1ldHJpY3NFbmRwb2ludDokLm1ldHJpY3NFbmRwb2ludCxheE92ZXJsYXlFbmFibGVkOkssb25Ub2dnbGVBeE92ZXJsYXk6KCk9PlkoKGgpPT4haCksc3RyZWFtU2V0dGluZ3M6SSxvblN0cmVhbVBsYXliYWNrU2V0dGluZ3NDaGFuZ2U6Ty51cGRhdGVQbGF5YmFjayxvblN0cmVhbUVuY29kZXJTZXR0aW5nc0NoYW5nZTpPLnVwZGF0ZUVuY29kZXIsYWN0aXZlQ29kZWM6JDE/YHdlYnJ0Yy8ke299YDphPyJoMjY0IjoibWpwZWciLGF2Y2NTdXBwb3J0ZWQ6Ri5zdXBwb3J0ZWQsc3RyZWFtU2V0dGluZ3NQZW5kaW5nOk8ucGVuZGluZ3x8IU8uZW5jb2RlclNldHRpbmdzQXZhaWxhYmxlLHdpZHRoOnYxfSksWCh2NSx7cGFuZWxXaWR0aDp2MSx2aXNpYmxlOm4xLG9uUG9pbnRlckRvd246QzAsYXJpYUxhYmVsOiJSZXNpemUgdG9vbHMgcGFuZWwifSksWChXNCx7b3BlbjpxLG9uQ2xvc2U6KCk9PkcoITEpLHVkaWQ6JC5kZXZpY2UsdGFyZ2V0czpDLnRhcmdldHMsc2VsZWN0ZWRUYXJnZXRJZDpWLG9uU2VsZWN0VGFyZ2V0OlUsbG9hZGluZzpDLmxvYWRpbmcsZXJyb3I6Qy5lcnJvcixvblJlZnJlc2g6KCk9PnZvaWQgQy5yZWZyZXNoKCksd2lkdGg6QjB9KSxYKHY1LHtwYW5lbFdpZHRoOkIwLHZpc2libGU6cSxvblBvaW50ZXJEb3duOkQxLGFyaWFMYWJlbDoiUmVzaXplIFdlYktpdCBEZXZUb29scyBwYW5lbCJ9KV19KX0pfXM4KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb290IikpLnJlbmRlcihYKHpaLHt9KSk7Cjwvc2NyaXB0Pgo8L2JvZHk+PC9odG1sPg==","base64").toString("utf-8");return u8}function M1(){return new Promise(($)=>{R0("xcrun",["simctl","list","devices","-j"],{encoding:"utf-8",timeout:3000},(Q,Z)=>{if(Q)return $([]);try{let J=JSON.parse(Z),Y=[];for(let[X,G]of Object.entries(J.devices)){if(!/SimRuntime\.(iOS|watchOS|visionOS|xrOS)-/i.test(X))continue;for(let H of G){if(H.isAvailable===!1)continue;Y.push({...H,runtime:X.replace(/^.*SimRuntime\./,"")})}}$(Y)}catch{$([])}})})}var F1=1610612736;function N1(){try{let $=Number(Q4("sysctl -n hw.memsize",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()),Q=Number(Q4("sysctl -n hw.pagesize",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()),Z=Q4("vm_stat",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}),J=(X)=>{let G=Z.match(X);return G?Number(G[1]):0},Y=J(/Pages free:\s+(\d+)/)+J(/Pages inactive:\s+(\d+)/)+J(/Pages speculative:\s+(\d+)/);return{totalBytes:Number.isFinite($)?$:0,availableBytes:Y*(Number.isFinite(Q)?Q:4096)}}catch{return{totalBytes:0,availableBytes:0}}}function _1(){try{let $=Q4("ps -axo rss=,args=",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:3000,maxBuffer:8388608}),Q={},Z=0,J=/\/Devices\/([0-9A-F-]{36})\//i;for(let Y of $.split(`
77
77
  `)){let X=Y.trimStart();if(!X)continue;let G=J.exec(X);if(!G)continue;let H=Number(X.split(/\s+/,1)[0]);if(!Number.isFinite(H))continue;let V=H*1024,W=G[1].toUpperCase();Q[W]=(Q[W]??0)+V,Z+=V}return{perUdid:Q,totalBytes:Z}}catch{return{perUdid:{},totalBytes:0}}}function B1(){let{totalBytes:$,availableBytes:Q}=N1(),Z=_1(),J=Object.keys(Z.perUdid).length,Y=J>0?Z.totalBytes/J:0,X=Y>=268435456?"measured":"estimated",G=X==="measured"?Y:F1,H=G>0?Math.max(0,Math.floor(Q/G)):0;return{totalBytes:$,availableBytes:Q,runningSimulators:J,perSimAvgBytes:G,perSimSource:X,estimatedAdditional:H}}function x$($){if($==="auto"||$==="h264"||$==="mjpeg")return{transport:"http",codec:$};return}function L1($,Q){let Z=Buffer.from($),J=Buffer.from(Q);if(Z.length!==J.length)return!1;return u2(Z,J)}function U1($){if(!$)return!1;return $.split(";",1)[0].trim().toLowerCase()==="application/json"}function O1($,Q,Z,J=D$,Y=[],X=I0){if(!Z){Q.writeHead(404),Q.end("No serve-sim device");return}Q.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no",...j9($.headers.origin,Y)}),Q.write(`:
78
78
 
79
79
  `);let G=X.subscribe(Z.device),{meta:H,unsubscribe:V}=J.subscribe(Z.device,(z)=>{if(!Q.writableEnded)Q.write("data: "+JSON.stringify(z)+`
@@ -83,15 +83,15 @@ data: `+JSON.stringify(H)+`
83
83
 
84
84
  `);let W=setInterval(()=>{if(!Q.writableEnded)Q.write(`:
85
85
 
86
- `)},15000);$.on("close",()=>{clearInterval(W),V(),G.unsubscribe()})}function P3($){let Q=$?.streamSettings??x$($?.codec),Z=($?.basePath??"/.sim").replace(/\/+$/,""),J=r2(Z),Y=t2(Z),X=$?.proxyHelpers??!1,G=$?.inspectWebKitBridge??K1,H=$?.execToken??h2(32).toString("base64url"),V=$?.metricsCorsOrigins??[],W=async(M)=>{let N=M??{};if(typeof N.device!=="string"||!/^[0-9A-Za-z-]+$/.test(N.device))throw Error("missing or invalid device udid");if(N.option===void 0)return{status:await w6(N.device)};if(!L0[N.option])throw Error(`unknown option: ${N.option}`);let j=typeof N.value==="string"?I6(N.option,N.value):null;if(j===null)throw Error(`invalid value for ${N.option}: ${N.value}`);await q6(N.device,N.option,j);try{K0({device:N.device,source:"ui",kind:"ui-setting",action:N.option,status:"ok",summary:`UI ${N.option} ${j}`,details:{option:N.option,value:j}})}catch{}return{ok:!0}},z=async(M,N,j)=>{let R=M.url??"",x=R.indexOf("?"),A=x===-1?R:R.slice(0,x),D=O$(R),U=D??$?.device??null,C=Z==="/"?"/devtools-frontend":`${Z}/devtools-frontend`,E=A$(R,J);if(E){let F=E.device??U;if(Z1(M,N,F,E.upstreamPath,Q))return;N.writeHead(404,{"Content-Type":"text/plain; charset=utf-8"}),N.end("No serve-sim device");return}if(A===C||A.startsWith(`${C}/`)){let F=A===C?"inspector.html":A.slice(C.length+1);if(F.split("/").some((K)=>K==="..")){N.writeHead(400,{"Content-Type":"text/plain; charset=utf-8"}),N.end("Invalid asset path");return}try{let K=await fetch(`https://chrome-devtools-frontend.appspot.com/serve_rev/@${g2}/${F}${x===-1?"":R.slice(x)}`),_={"Cache-Control":"public, max-age=604800"},L=K.headers.get("content-type");if(L)_["Content-Type"]=L;N.writeHead(K.status,_),N.end(Buffer.from(await K.arrayBuffer()))}catch(K){N.writeHead(502,{"Content-Type":"text/plain; charset=utf-8"}),N.end(K instanceof Error?K.message:"Failed to load DevTools frontend")}return}if(A===Z||A===Z+"/"){let F=await G0(),K=M0(F,U),_=H1();if(!K){let L=JSON.stringify({basePath:Z,execToken:H});_=_.replace("<!--__SIM_PREVIEW_CONFIG__-->",`<script>window.__SIM_PREVIEW__=${L}</script>`)}if(K){let L=T4(K,e0(M),Z,E4(M),X),T=`<script>window.__SIM_PREVIEW__=${JSON.stringify(h8(L,Z,g8(),H,Q,X))}</script>`;_=_.replace("<!--__SIM_PREVIEW_CONFIG__-->",T)}N.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store"}),N.end(_);return}if(A===Z+"/grid/api/memory"){N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify(B1()));return}if(A===Z+"/grid/api/devicekit-chrome"){H6(new URL(R||"/","http://serve-sim.local"),N);return}if(A===Z+"/grid/api/device-placeholder-asset"){M6(new URL(R||"/","http://serve-sim.local"),N);return}if(A===Z+"/grid/api"){let F=await G0(),K=new Map(F.map((I)=>[I.device,I])),_=await M1(),L=n2(),P=(I)=>{if(/iphone/i.test(I))return 0;if(/ipad/i.test(I))return 1;if(/watch/i.test(I))return 2;if(/(apple\s*tv|^tv\b)/i.test(I))return 3;if(/vision|reality/i.test(I))return 4;return 5},T=(I)=>{if(K.has(I.udid))return 0;if(U&&I.udid===U)return 1;if(I.state==="Booted")return 2;if(I.udid===L)return 3;return 4},q=(I)=>{let u=I.match(/-(\d+)-(\d+)/),d=u?Number(u[1]):0,Z0=u?Number(u[2]):0;return-(d*1000+Z0)};_.sort((I,u)=>T(I)-T(u)||P(I.name)-P(u.name)||I.name.localeCompare(u.name)||q(I.runtime)-q(u.runtime));let S=_.length,{limit:y,offset:k}=o2(R),c=(y==null?_:_.slice(k,k+y)).map((I)=>{let u=K.get(I.udid),d=u?T4(u,e0(M),Z,E4(M),X):null;return{device:I.udid,name:I.name,runtime:I.runtime,state:I.state,chrome:W6(I),placeholderAsset:z6(I),helper:d?{port:d.port,url:d.url,streamUrl:d.streamUrl,wsUrl:d.wsUrl}:null}});N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({devices:c,total:S,offset:y==null?0:k,limit:y??S}));return}if(A===Z+"/grid/api/shutdown"&&M.method==="POST"){let F="";M.on("data",(K)=>{F+=typeof K==="string"?K:K.toString()}),M.on("end",()=>{let K="";try{K=JSON.parse(F).udid??""}catch{}if(!/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(K)){N.writeHead(400,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!1,error:"Invalid or missing udid"}));return}$8(K),$4={at:0,booted:null},R0("xcrun",["simctl","shutdown",K],{timeout:30000},(_,L,P)=>{if(_){N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!1,error:P?.toString().trim()||_.message}));return}N.writeHead(200,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!0}))})});return}if(A===Z+"/grid/api/start"&&M.method==="POST"){let F="";M.on("data",(K)=>{F+=typeof K==="string"?K:K.toString()}),M.on("end",()=>{let K="";try{K=JSON.parse(F).udid??""}catch{}if(!/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(K)){N.writeHead(400,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!1,error:"Invalid or missing udid"}));return}let _=M.socket.localPort??0;J1(K,_,Z,Q).then((L)=>{if(N.writableEnded)return;if(L)N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!1,error:L}));else N.writeHead(200,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!0}))})});return}if(A===Z+"/devtools"){let F=await G0();if(!M0(F,U)){N.writeHead(404,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:"No serve-sim device"}));return}try{let _=await G(),L=await _.listTargets(),P=X?W1(M):"ws",T=X?`${e0(M)??`127.0.0.1:${_.port}`}${Y}`:`127.0.0.1:${_.port}/devtools`,q=L.map((S)=>({...S,webSocketDebuggerUrl:`${P}://${T}/page/${encodeURIComponent(S.id)}`,devtoolsFrontendUrl:z1(C,P,T,S.id)}));N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({port:_.port,targets:q}))}catch(_){N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:_ instanceof Error?_.message:"Failed to start inspect-webkit"}))}return}if(A===Z+"/devtools/release"&&M.method==="POST"){let F="";M.on("data",(K)=>F+=K),M.on("end",async()=>{try{let K=F?JSON.parse(F):{};(await G()).releaseHighlight?.(K.targetId),N.writeHead(200,{"Content-Type":"application/json"}),N.end("{}")}catch(K){N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:K instanceof Error?K.message:"Failed to release"}))}});return}if(A===Z+"/devtools/highlight"&&M.method==="POST"){let F="";M.on("data",(K)=>F+=K),M.on("end",async()=>{try{let{targetId:K,on:_}=JSON.parse(F||"{}");if(!K){N.writeHead(400,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:"Missing targetId"}));return}let L=await G();if(!L.highlightTarget){N.writeHead(501,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:"highlightTarget not supported by inspect-webkit"}));return}await L.highlightTarget(K,!!_),N.writeHead(200,{"Content-Type":"application/json"}),N.end("{}")}catch(K){N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:K instanceof Error?K.message:"Failed to highlight target"}))}});return}if(A===Z+"/api"){let F=await G0(),K=M0(F,U),_=`${U??"(any)"}|${F.length}|${K?`${K.device}@${K.port}`:"none"}`;if(_!==F$)F$=_,o0("GET /api selectedDevice=%s states=%d chose=%s",U??"(any)",F.length,K?`${K.device}@${K.port}`:"none");N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"});let L=K?T4(K,e0(M),Z,E4(M),X):null;N.end(JSON.stringify(L?h8(L,Z,g8(),H,Q,X):null));return}if(A===Z+"/api/event-log"){N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({events:o4({device:D,sinceId:B$(R),limit:_$(R)})}));return}if(A===Z+"/api/event-log/events"){N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
86
+ `)},15000);$.on("close",()=>{clearInterval(W),V(),G.unsubscribe()})}function P3($){let Q=$?.streamSettings??x$($?.codec),Z=($?.basePath??"/.sim").replace(/\/+$/,""),J=r2(Z),Y=t2(Z),X=$?.proxyHelpers??!1,G=$?.inspectWebKitBridge??K1,H=$?.execToken??h2(32).toString("base64url"),V=$?.metricsCorsOrigins??[],W=async(M)=>{let N=M??{};if(typeof N.device!=="string"||!/^[0-9A-Za-z-]+$/.test(N.device))throw Error("missing or invalid device udid");if(N.option===void 0)return{status:await w6(N.device)};if(!L0[N.option])throw Error(`unknown option: ${N.option}`);let j=typeof N.value==="string"?I6(N.option,N.value):null;if(j===null)throw Error(`invalid value for ${N.option}: ${N.value}`);await q6(N.device,N.option,j);try{V0({device:N.device,source:"ui",kind:"ui-setting",action:N.option,status:"ok",summary:`UI ${N.option} ${j}`,details:{option:N.option,value:j}})}catch{}return{ok:!0}},z=async(M,N,j)=>{let R=M.url??"",x=R.indexOf("?"),A=x===-1?R:R.slice(0,x),D=O$(R),U=D??$?.device??null,C=Z==="/"?"/devtools-frontend":`${Z}/devtools-frontend`,E=A$(R,J);if(E){let F=E.device??U;if(Z1(M,N,F,E.upstreamPath,Q))return;N.writeHead(404,{"Content-Type":"text/plain; charset=utf-8"}),N.end("No serve-sim device");return}if(A===C||A.startsWith(`${C}/`)){let F=A===C?"inspector.html":A.slice(C.length+1);if(F.split("/").some((K)=>K==="..")){N.writeHead(400,{"Content-Type":"text/plain; charset=utf-8"}),N.end("Invalid asset path");return}try{let K=await fetch(`https://chrome-devtools-frontend.appspot.com/serve_rev/@${g2}/${F}${x===-1?"":R.slice(x)}`),_={"Cache-Control":"public, max-age=604800"},L=K.headers.get("content-type");if(L)_["Content-Type"]=L;N.writeHead(K.status,_),N.end(Buffer.from(await K.arrayBuffer()))}catch(K){N.writeHead(502,{"Content-Type":"text/plain; charset=utf-8"}),N.end(K instanceof Error?K.message:"Failed to load DevTools frontend")}return}if(A===Z||A===Z+"/"){let F=await J0(),K=K0(F,U),_=H1();if(!K){let L=JSON.stringify({basePath:Z,execToken:H});_=_.replace("<!--__SIM_PREVIEW_CONFIG__-->",`<script>window.__SIM_PREVIEW__=${L}</script>`)}if(K){let L=E4(K,e0(M),Z,I4(M),X),T=`<script>window.__SIM_PREVIEW__=${JSON.stringify(h8(L,Z,g8(),H,Q,X))}</script>`;_=_.replace("<!--__SIM_PREVIEW_CONFIG__-->",T)}N.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store"}),N.end(_);return}if(A===Z+"/grid/api/memory"){N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify(B1()));return}if(A===Z+"/grid/api/devicekit-chrome"){H6(new URL(R||"/","http://serve-sim.local"),N);return}if(A===Z+"/grid/api/device-placeholder-asset"){M6(new URL(R||"/","http://serve-sim.local"),N);return}if(A===Z+"/grid/api"){let F=await J0(),K=new Map(F.map((I)=>[I.device,I])),_=await M1(),L=n2(),P=(I)=>{if(/iphone/i.test(I))return 0;if(/ipad/i.test(I))return 1;if(/watch/i.test(I))return 2;if(/(apple\s*tv|^tv\b)/i.test(I))return 3;if(/vision|reality/i.test(I))return 4;return 5},T=(I)=>{if(K.has(I.udid))return 0;if(U&&I.udid===U)return 1;if(I.state==="Booted")return 2;if(I.udid===L)return 3;return 4},q=(I)=>{let u=I.match(/-(\d+)-(\d+)/),d=u?Number(u[1]):0,Z0=u?Number(u[2]):0;return-(d*1000+Z0)};_.sort((I,u)=>T(I)-T(u)||P(I.name)-P(u.name)||I.name.localeCompare(u.name)||q(I.runtime)-q(u.runtime));let S=_.length,{limit:y,offset:k}=o2(R),c=(y==null?_:_.slice(k,k+y)).map((I)=>{let u=K.get(I.udid),d=u?E4(u,e0(M),Z,I4(M),X):null;return{device:I.udid,name:I.name,runtime:I.runtime,state:I.state,chrome:W6(I),placeholderAsset:z6(I),helper:d?{port:d.port,url:d.url,streamUrl:d.streamUrl,wsUrl:d.wsUrl}:null}});N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({devices:c,total:S,offset:y==null?0:k,limit:y??S}));return}if(A===Z+"/grid/api/shutdown"&&M.method==="POST"){let F="";M.on("data",(K)=>{F+=typeof K==="string"?K:K.toString()}),M.on("end",()=>{let K="";try{K=JSON.parse(F).udid??""}catch{}if(!/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(K)){N.writeHead(400,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!1,error:"Invalid or missing udid"}));return}$8(K),$4={at:0,booted:null},R0("xcrun",["simctl","shutdown",K],{timeout:30000},(_,L,P)=>{if(_){N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!1,error:P?.toString().trim()||_.message}));return}N.writeHead(200,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!0}))})});return}if(A===Z+"/grid/api/start"&&M.method==="POST"){let F="";M.on("data",(K)=>{F+=typeof K==="string"?K:K.toString()}),M.on("end",()=>{let K="";try{K=JSON.parse(F).udid??""}catch{}if(!/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(K)){N.writeHead(400,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!1,error:"Invalid or missing udid"}));return}let _=M.socket.localPort??0;J1(K,_,Z,Q).then((L)=>{if(N.writableEnded)return;if(L)N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!1,error:L}));else N.writeHead(200,{"Content-Type":"application/json"}),N.end(JSON.stringify({ok:!0}))})});return}if(A===Z+"/devtools"){let F=await J0();if(!K0(F,U)){N.writeHead(404,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:"No serve-sim device"}));return}try{let _=await G(),L=await _.listTargets(),P=X?W1(M):"ws",T=X?`${e0(M)??`127.0.0.1:${_.port}`}${Y}`:`127.0.0.1:${_.port}/devtools`,q=L.map((S)=>({...S,webSocketDebuggerUrl:`${P}://${T}/page/${encodeURIComponent(S.id)}`,devtoolsFrontendUrl:z1(C,P,T,S.id)}));N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({port:_.port,targets:q}))}catch(_){N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:_ instanceof Error?_.message:"Failed to start inspect-webkit"}))}return}if(A===Z+"/devtools/release"&&M.method==="POST"){let F="";M.on("data",(K)=>F+=K),M.on("end",async()=>{try{let K=F?JSON.parse(F):{};(await G()).releaseHighlight?.(K.targetId),N.writeHead(200,{"Content-Type":"application/json"}),N.end("{}")}catch(K){N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:K instanceof Error?K.message:"Failed to release"}))}});return}if(A===Z+"/devtools/highlight"&&M.method==="POST"){let F="";M.on("data",(K)=>F+=K),M.on("end",async()=>{try{let{targetId:K,on:_}=JSON.parse(F||"{}");if(!K){N.writeHead(400,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:"Missing targetId"}));return}let L=await G();if(!L.highlightTarget){N.writeHead(501,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:"highlightTarget not supported by inspect-webkit"}));return}await L.highlightTarget(K,!!_),N.writeHead(200,{"Content-Type":"application/json"}),N.end("{}")}catch(K){N.writeHead(500,{"Content-Type":"application/json"}),N.end(JSON.stringify({error:K instanceof Error?K.message:"Failed to highlight target"}))}});return}if(A===Z+"/healthz"){N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({status:"ok"}));return}if(A===Z+"/readyz"){let F=await J0(),K=K0(F,U);if(!K){N.writeHead(503,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({status:"starting"}));return}try{await H4(K.device,Q).start(),N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({status:"ready",device:K.device}))}catch{N.writeHead(503,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({status:"starting"}))}return}if(A===Z+"/api"){let F=await J0(),K=K0(F,U),_=`${U??"(any)"}|${F.length}|${K?`${K.device}@${K.port}`:"none"}`;if(_!==F$)F$=_,o0("GET /api selectedDevice=%s states=%d chose=%s",U??"(any)",F.length,K?`${K.device}@${K.port}`:"none");N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"});let L=K?E4(K,e0(M),Z,I4(M),X):null;N.end(JSON.stringify(L?h8(L,Z,g8(),H,Q,X):null));return}if(A===Z+"/api/event-log"){N.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),N.end(JSON.stringify({events:a4({device:D,sinceId:B$(R),limit:_$(R)})}));return}if(A===Z+"/api/event-log/events"){N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
87
87
 
88
- `),N.write("data: "+JSON.stringify({events:o4({device:D,sinceId:B$(R),limit:_$(R)})})+`
88
+ `),N.write("data: "+JSON.stringify({events:a4({device:D,sinceId:B$(R),limit:_$(R)})})+`
89
89
 
90
90
  `);let F=D9((_)=>{if(D&&_.device!==D)return;if(N.writableEnded)return;N.write("data: "+JSON.stringify({event:_})+`
91
91
 
92
92
  `)}),K=setInterval(()=>{if(!N.writableEnded)N.write(`:
93
93
 
94
- `)},15000);M.on("close",()=>{clearInterval(K),F()});return}if(A===Z+"/api/events"){let F=async()=>{let h=await G0(),c=M0(h,U),I=c?T4(c,e0(M),Z,E4(M),X):null;return JSON.stringify(I?h8(I,Z,g8(),H,Q,X):null)};N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
94
+ `)},15000);M.on("close",()=>{clearInterval(K),F()});return}if(A===Z+"/api/events"){let F=async()=>{let h=await J0(),c=K0(h,U),I=c?E4(c,e0(M),Z,I4(M),X):null;return JSON.stringify(I?h8(I,Z,g8(),H,Q,X):null)};N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
95
95
 
96
96
  `);let K=await F();N.write("data: "+K+`
97
97
 
@@ -99,14 +99,14 @@ data: `+JSON.stringify(H)+`
99
99
 
100
100
  `)},P=null,T=()=>{if(P)return;P=setTimeout(()=>{P=null,L()},150)},q=null,S=null,y=()=>{if(_||N.writableEnded||q||S)return;S=setTimeout(()=>{if(S=null,_||N.writableEnded||q)return;try{q=S2(p8,T),q.on("error",()=>{q?.close(),q=null,y()}),L()}catch{y()}},250)};y();let k=setInterval(()=>{if(_||N.writableEnded)return;N.write(`:
101
101
 
102
- `),y()},15000);M.on("close",()=>{if(_=!0,P)clearTimeout(P);if(S)clearTimeout(S);clearInterval(k),q?.close()});return}if(A===Z+"/logs"){let F=await G0(),K=M0(F,U);if(!K){N.writeHead(404),N.end("No serve-sim device");return}let _=K.device;N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
102
+ `),y()},15000);M.on("close",()=>{if(_=!0,P)clearTimeout(P);if(S)clearTimeout(S);clearInterval(k),q?.close()});return}if(A===Z+"/logs"){let F=await J0(),K=K0(F,U);if(!K){N.writeHead(404),N.end("No serve-sim device");return}let _=K.device;N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
103
103
 
104
104
  `);let L=y2("xcrun",["simctl","spawn",_,"log","stream","--style","ndjson","--level","info"],{stdio:["ignore","pipe","ignore"]}),P="";L.stdout.on("data",(T)=>{P+=T.toString();let q;while((q=P.indexOf(`
105
105
  `))!==-1){let S=P.slice(0,q).trim();if(P=P.slice(q+1),S)N.write("data: "+S+`
106
106
 
107
- `)}if(P.length>p2)P=""}),L.on("error",()=>{try{N.end()}catch{}}),L.on("close",()=>N.end()),M.on("close",()=>{L.stdout?.destroy(),L.kill()});return}if(A===Z+"/ax"){let F=await G0(),K=M0(F,U);if(!K){N.writeHead(404),N.end("No serve-sim device");return}N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
107
+ `)}if(P.length>p2)P=""}),L.on("error",()=>{try{N.end()}catch{}}),L.on("close",()=>N.end()),M.on("close",()=>{L.stdout?.destroy(),L.kill()});return}if(A===Z+"/ax"){let F=await J0(),K=K0(F,U);if(!K){N.writeHead(404),N.end("No serve-sim device");return}N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
108
108
 
109
- `),N$.prune(F.map((P)=>P.device));let L=N$.get(K.device).addClient(N);M.on("close",L);return}if(A===Z+"/metrics"){let F=await G0(),K=M0(F,U);O1(M,N,K,D$,V);return}if((A===Z+"/exec"||A===Z+"/exec/")&&M.method==="POST"){if(!U1(M.headers["content-type"])){N.writeHead(415,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Unsupported Media Type",exitCode:1}));return}let F=M.headers.origin;if(F)try{if(new URL(F).host!==M.headers.host){N.writeHead(403,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Cross-origin request blocked",exitCode:1}));return}}catch{N.writeHead(403,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Invalid Origin",exitCode:1}));return}let K=M.headers.authorization??"",_=/^Bearer\s+(.+)$/i.exec(K);if(!_||!L1(_[1].trim(),H)){N.writeHead(401,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Unauthorized",exitCode:1}));return}let L="",P=!1;M.on("data",(T)=>{if(L+=typeof T==="string"?T:T.toString(),L.length>4194304)P=!0,N.writeHead(413,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Payload Too Large",exitCode:1})),M.destroy()}),M.on("end",()=>{if(P)return;let T="";try{T=JSON.parse(L).command??""}catch{}if(!T){N.writeHead(400,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Missing command",exitCode:1}));return}k2(T,{maxBuffer:16777216},(q,S,y)=>{let k=q?q.code??1:0;L$(T,{exitCode:k}),N.writeHead(200,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:S.toString(),stderr:y.toString(),exitCode:k}))})});return}if(A===Z+"/appstate"){let F=await G0(),K=M0(F,U);if(!K){N.writeHead(404),N.end("No serve-sim device");return}let _=K.device;N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
109
+ `),N$.prune(F.map((P)=>P.device));let L=N$.get(K.device).addClient(N);M.on("close",L);return}if(A===Z+"/metrics"){let F=await J0(),K=K0(F,U);O1(M,N,K,D$,V);return}if((A===Z+"/exec"||A===Z+"/exec/")&&M.method==="POST"){if(!U1(M.headers["content-type"])){N.writeHead(415,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Unsupported Media Type",exitCode:1}));return}let F=M.headers.origin;if(F)try{if(new URL(F).host!==M.headers.host){N.writeHead(403,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Cross-origin request blocked",exitCode:1}));return}}catch{N.writeHead(403,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Invalid Origin",exitCode:1}));return}let K=M.headers.authorization??"",_=/^Bearer\s+(.+)$/i.exec(K);if(!_||!L1(_[1].trim(),H)){N.writeHead(401,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Unauthorized",exitCode:1}));return}let L="",P=!1;M.on("data",(T)=>{if(L+=typeof T==="string"?T:T.toString(),L.length>4194304)P=!0,N.writeHead(413,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Payload Too Large",exitCode:1})),M.destroy()}),M.on("end",()=>{if(P)return;let T="";try{T=JSON.parse(L).command??""}catch{}if(!T){N.writeHead(400,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:"",stderr:"Missing command",exitCode:1}));return}k2(T,{maxBuffer:16777216},(q,S,y)=>{let k=q?q.code??1:0;L$(T,{exitCode:k}),N.writeHead(200,{"Content-Type":"application/json"}),N.end(JSON.stringify({stdout:S.toString(),stderr:y.toString(),exitCode:k}))})});return}if(A===Z+"/appstate"){let F=await J0(),K=K0(F,U);if(!K){N.writeHead(404),N.end("No serve-sim device");return}let _=K.device;N.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),N.write(`:
110
110
 
111
111
  `);let L=null,P=0,T=async(y)=>{if(N.writableEnded||y.bundleId===L?.bundleId&&y.pid===L.pid)return;L=y;let k=++P,h=await d2(_,y.bundleId);if(!N.writableEnded&&k===P)N.write("data: "+JSON.stringify({bundleId:y.bundleId,pid:y.pid,isReactNative:h})+`
112
112
 
@@ -117,7 +117,7 @@ ${E}`)}})();return}if(!A){N.destroy();return}let U=A.device??x;if(A.upstreamPath
117
117
  \r
118
118
  `);return}N.end(`HTTP/1.1 400 Bad Request\r
119
119
  \r
120
- `)};let B=async(M)=>{return y6(z,M)};return B.handleWebSocket=C6({path:`${Z}/exec-ws`,execToken:H,ssePrefixes:[`${Z}/api/events`,`${Z}/api/event-log/events`,`${Z}/appstate`,`${Z}/logs`,`${Z}/metrics`,`${Z}/ax`],onUiRequest:W,onCommandResult:(M,N)=>L$(M,N),onSseRequest(M,N){let j=new URL(M,N.url);return B(new Request(j,{headers:{accept:"text/event-stream"}}))}}),B.handleUpgrade=(M,N,j)=>{z.handleUpgrade?.(M,N,j)},B}export{J1 as startDeviceInProcess,P3 as simMiddleware,M0 as selectServeSimState,T4 as rewriteStateForRequestHost,G0 as readServeSimStates,h8 as previewConfigForState,o2 as parseGridPaging,D3 as matchInstalledAppByDisplayName,O1 as handleMetricsRequest};
120
+ `)};let B=async(M)=>{return y6(z,M)};return B.handleWebSocket=C6({path:`${Z}/exec-ws`,execToken:H,ssePrefixes:[`${Z}/api/events`,`${Z}/api/event-log/events`,`${Z}/appstate`,`${Z}/logs`,`${Z}/metrics`,`${Z}/ax`],onUiRequest:W,onCommandResult:(M,N)=>L$(M,N),onSseRequest(M,N){let j=new URL(M,N.url);return B(new Request(j,{headers:{accept:"text/event-stream"}}))}}),B.handleUpgrade=(M,N,j)=>{z.handleUpgrade?.(M,N,j)},B}export{J1 as startDeviceInProcess,P3 as simMiddleware,K0 as selectServeSimState,E4 as rewriteStateForRequestHost,J0 as readServeSimStates,h8 as previewConfigForState,o2 as parseGridPaging,D3 as matchInstalledAppByDisplayName,O1 as handleMetricsRequest};
121
121
 
122
- //# debugId=BA4F8FABF97089D764756E2164756E21
122
+ //# debugId=3251E8093BAB7ADE64756E2164756E21
123
123
  //# sourceMappingURL=middleware.js.map