serve-sim 0.1.13 → 0.1.14

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,15 +1,50 @@
1
- import{readdirSync as $$,readFileSync as J$,existsSync as Q$,unlinkSync as M}from"fs";import{execSync as Z$,spawn as _,exec as z$,execFile as G$}from"child_process";import{tmpdir as K$}from"os";import{join as T}from"path";import{execFile as b}from"child_process";import{promisify as m}from"util";var g="AXe is not installed. Install it from https://github.com/cameroncooke/AXe.";var h=3500,A=500,N=500,S=2000,p=15000,u=m(b);async function c(J,$){let{stdout:Z}=await u(J,$,{timeout:h,maxBuffer:8388608});return Z.toString()}function i(J){return J[0]?.frame??{x:0,y:0,width:1,height:1}}function l(J,$){return Math.abs(J.x-$.x)<0.5&&Math.abs(J.y-$.y)<0.5&&Math.abs(J.width-$.width)<0.5&&Math.abs(J.height-$.height)<0.5}function n(J){let $=i(J),Z=[],Q=(z,K)=>{if(Z.length>=A)return;let V=z.frame;if(!l(V,$))Z.push({id:z.AXUniqueId??K,path:K,label:z.AXLabel??"",value:z.AXValue??"",role:z.role_description,type:z.type,enabled:z.enabled!==!1,frame:V});for(let W=0;W<z.children.length&&Z.length<A;W++)Q(z.children[W],`${K}.${W}`)};for(let z=0;z<J.length&&Z.length<A;z++)Q(J[z],String(z));return{screen:{width:$.width,height:$.height},elements:Z}}async function o(J){let $=await c("axe",["describe-ui","--udid",J]);return n(JSON.parse($))}function d(J){return J?.code==="ENOENT"}function a(J){return J?.errors?.includes(g)??!1}function r(J){return J.elements.length>0&&J.screen.width>1&&J.screen.height>1}async function t(J){let $=[];try{let Z=await o(J);if(!r(Z))throw Error(`axe returned ${Z.elements.length} elements in ${Z.screen.width}x${Z.screen.height} AX space`);return{...Z,errors:$}}catch(Z){let Q=Z;$.push(d(Z)?g:Q.stderr||Q.message||String(Z))}return{screen:{width:1,height:1},elements:[],errors:$}}function s(J){return`data: ${JSON.stringify(J)}
1
+ var ZQ=Object.defineProperty;var YQ=($)=>$;function XQ($,J){this[$]=YQ.bind(null,J)}var GQ=($,J)=>{for(var Q in J)ZQ($,Q,{get:J[Q],enumerable:!0,configurable:!0,set:XQ.bind(J,Q)})};var VQ=($,J)=>()=>($&&(J=$($=0)),J);var iJ={};GQ(iJ,{startCdpServer:()=>mZ,startBunCdpServer:()=>eZ,listTargets:()=>$0,listDevices:()=>pJ});import{createRequire as EQ}from"node:module";import*as jJ from"node:net";import*as TJ from"node:net";import{spawnSync as aQ}from"node:child_process";import*as SJ from"node:tls";import*as kJ from"node:http";function SQ($){return this[$]}function AJ($){return $.replace(/[&<>'"]/g,(J)=>J==="&"?"&amp;":J==="<"?"&lt;":J===">"?"&gt;":J==="'"?"&apos;":"&quot;")}function uQ($){let J="";for(let Q=0;Q<$.length;Q++)J+=String.fromCharCode($[Q]);return btoa(J)}function lQ($){let J=atob($.replace(/\s+/g,"")),Q=new Uint8Array(J.length);for(let Z=0;Z<J.length;Z++)Q[Z]=J.charCodeAt(Z);return Q}function b$($,J){if($===null||$===void 0)return`${J}<string></string>`;if(typeof $==="boolean")return`${J}<${$?"true":"false"}/>`;if(typeof $==="string")return`${J}<string>${AJ($)}</string>`;if(typeof $==="number"){if(Number.isInteger($))return`${J}<integer>${$}</integer>`;return`${J}<real>${$}</real>`}if(typeof $==="bigint")return`${J}<integer>${$.toString()}</integer>`;if($ instanceof Uint8Array)return`${J}<data>${uQ($)}</data>`;if($ instanceof Date)return`${J}<date>${$.toISOString().replace(/\.\d+Z$/,"Z")}</date>`;if(Array.isArray($)){if($.length===0)return`${J}<array/>`;let X=$.map((Y)=>b$(Y,J+"\t")).join(`
2
+ `);return`${J}<array>
3
+ ${X}
4
+ ${J}</array>`}let Q=Object.keys($);if(Q.length===0)return`${J}<dict/>`;let Z=Q.map((X)=>`${J} <key>${AJ(X)}</key>
5
+ `+b$($[X],J+"\t")).join(`
6
+ `);return`${J}<dict>
7
+ ${Z}
8
+ ${J}</dict>`}function d$($){let J=b$($,"");return new TextEncoder().encode(bQ+J+hQ)}class MJ{src;pos=0;constructor($){this.src=$}skip(){while(this.pos<this.src.length){let $=this.src[this.pos];if($===" "||$==="\t"||$===`
9
+ `||$==="\r")this.pos++;else if(this.src.startsWith("<!--",this.pos)){let J=this.src.indexOf("-->",this.pos+4);if(J<0)throw Error("unterminated comment");this.pos=J+3}else if(this.src.startsWith("<?",this.pos)){let J=this.src.indexOf("?>",this.pos+2);if(J<0)throw Error("unterminated processing instruction");this.pos=J+2}else if(this.src.startsWith("<!DOCTYPE",this.pos)){let J=0;while(this.pos<this.src.length){let Q=this.src[this.pos++];if(Q==="[")J++;else if(Q==="]")J--;else if(Q===">"&&J===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 J=this.src.slice(this.pos+1,$);this.pos=$+1;let Q=J.startsWith("/"),Z=J.endsWith("/");return{name:J.replace(/^\/?/,"").replace(/\/$/,"").trim().split(/\s+/)[0],selfClose:Z,isClose:Q}}readText(){let $=this.src.indexOf("<",this.pos),J=$<0?this.src.slice(this.pos):this.src.slice(this.pos,$);return this.pos=$<0?this.src.length:$,J.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&")}}function h$($,J){let Q=(Z)=>{let X=$.nextTag();if(!X||!X.isClose||X.name!==Z)throw Error(`expected </${Z}>`)};switch(J){case"true":case"false":throw Error(`<${J}> must be self-closing`);case"string":case"key":{let Z=$.readText();return Q(J),Z}case"integer":{let Z=$.readText().trim();if(Q("integer"),/^-?\d+$/.test(Z)&&Math.abs(Number(Z))<=Number.MAX_SAFE_INTEGER)return Number(Z);return BigInt(Z)}case"real":{let Z=Number($.readText().trim());return Q("real"),Z}case"data":{let Z=lQ($.readText());return Q("data"),Z}case"date":{let Z=new Date($.readText().trim());return Q("date"),Z}case"array":{let Z=[];while(!0){let X=$.nextTag();if(!X)throw Error("unterminated <array>");if(X.isClose&&X.name==="array")return Z;Z.push(X.selfClose?u$(X.name):h$($,X.name))}}case"dict":{let Z={};while(!0){let X=$.nextTag();if(!X)throw Error("unterminated <dict>");if(X.isClose&&X.name==="dict")return Z;if(X.name!=="key")throw Error(`expected <key>, got <${X.name}>`);let Y=$.readText();Q("key");let G=$.nextTag();if(!G)throw Error("unterminated <dict>");Z[Y]=G.selfClose?u$(G.name):h$($,G.name)}}default:throw Error(`unknown plist tag <${J}>`)}}function u$($){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 R$($){let J=typeof $==="string"?$:new TextDecoder().decode($),Q=new MJ(J);while(!0){let X=Q.nextTag();if(!X)throw Error("no <plist> root");if(X.name==="plist"&&!X.isClose)break}let Z=Q.nextTag();if(!Z)throw Error("empty plist");return Z.selfClose?u$(Z.name):h$(Q,Z.name)}function e($,J,Q){let Z=0;for(let X=0;X<Q;X++)Z=Z*256+$[J+X];return Z}function pQ($){if($.length<41)throw Error("bplist too short");let J=new TextDecoder().decode($.slice(0,8));if(J!=="bplist00")throw Error(`bad magic: ${J}`);let Q=$.length-32,Z=$[Q+6],X=$[Q+7],Y=e($,Q+8,8),G=e($,Q+16,8),U=e($,Q+24,8),z=Array(Y);for(let N=0;N<Y;N++)z[N]=e($,U+N*Z,Z);function P(N){return e($,N,X)}function O(N){let _=z[N],B=$[_],M=B>>4,q=B&15;function j(C){if(q!==15)return{len:q,next:C};let R=$[C];if((R&240)!==16)throw Error("expected int marker for length");let F=1<<(R&15);return{len:e($,C+1,F),next:C+1+F}}switch(M){case 0:if(q===0)return null;if(q===8)return!1;if(q===9)return!0;if(q===15)return null;throw Error(`unknown singleton ${q}`);case 1:{let C=1<<q,R=e($,_+1,C);if(C===8&&R>Number.MAX_SAFE_INTEGER)return BigInt(R);return R}case 2:{let C=1<<q,R=new DataView($.buffer,$.byteOffset+_+1,C);return C===4?R.getFloat32(0,!1):R.getFloat64(0,!1)}case 3:{let R=new DataView($.buffer,$.byteOffset+_+1,8).getFloat64(0,!1);return new Date(Date.UTC(2001,0,1)+R*1000)}case 4:{let{len:C,next:R}=j(_+1);return $.slice(R,R+C)}case 5:{let{len:C,next:R}=j(_+1);return new TextDecoder("ascii").decode($.slice(R,R+C))}case 6:{let{len:C,next:R}=j(_+1),F=$.slice(R,R+C*2),A=new Uint8Array(F.length);for(let D=0;D<F.length;D+=2)A[D]=F[D+1],A[D+1]=F[D];return new TextDecoder("utf-16le").decode(A)}case 10:{let{len:C,next:R}=j(_+1),F=[];for(let A=0;A<C;A++)F.push(O(P(R+A*X)));return F}case 13:{let{len:C,next:R}=j(_+1),F={};for(let A=0;A<C;A++){let D=O(P(R+A*X)),W=O(P(R+(C+A)*X));if(typeof D!=="string")throw Error(`non-string dict key: ${typeof D}`);F[D]=W}return F}default:throw Error(`unknown bplist marker 0x${B.toString(16)} at ${_}`)}}return O(G)}function cQ($){if($.length>=8){if(new TextDecoder().decode($.slice(0,8))==="bplist00")return pQ($)}return R$($)}class O${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 J of this.waiters)J.reject($??Error("stream closed"));this.waiters=[]}read($){return new Promise((J,Q)=>{if(this.closed&&this.size<$){Q(this.closeErr??Error("stream closed"));return}this.waiters.push({n:$,resolve:J,reject:Q}),this.drain()})}drain(){while(this.waiters.length>0&&this.waiters[0].n<=this.size){let $=this.waiters.shift(),J=new Uint8Array($.n),Q=0;while(Q<$.n){let Z=this.chunks[0],X=$.n-Q;if(Z.length<=X)J.set(Z,Q),Q+=Z.length,this.chunks.shift();else J.set(Z.subarray(0,X),Q),this.chunks[0]=Z.subarray(X),Q+=X}this.size-=$.n,$.resolve(J)}}}function n$($,J){let Q=(Y)=>{J.push(new Uint8Array(Y.buffer,Y.byteOffset,Y.byteLength))},Z=()=>J.close(),X=(Y)=>J.close(Y);return $.on("data",Q),$.on("close",Z),$.on("error",X),()=>{$.off("data",Q),$.off("close",Z),$.off("error",X)}}async function g$(){let $=new O$;return new Promise((J,Q)=>{let Z=jJ.createConnection({path:nQ}),X=(Y)=>{$.close(Y),Q(Y)};Z.once("error",X),Z.once("connect",()=>{Z.off("error",X);let Y=n$(Z,$);J({socket:Z,stream:$,detach:Y})})})}async function gQ($){let J=await $.read(4),Q=new DataView(J.buffer,J.byteOffset,4).getUint32(0,!0);return(await $.read(Q-4)).slice(12)}function mQ($,J,Q){let Z=16+Q.length,X=new Uint8Array(16),Y=new DataView(X.buffer);Y.setUint32(0,Z,!0),Y.setUint32(4,iQ,!0),Y.setUint32(8,dQ,!0),Y.setUint32(12,J,!0),$.write(X),$.write(Q)}async function m$($,J,Q,Z){let X=d$({ClientVersionString:"inspect-webkit-1.0",ProgName:"inspect-webkit",kLibUSBMuxVersion:3,...Z});mQ($,Q,X);let Y=await gQ(J);return R$(Y)}async function EJ(){let{socket:$,stream:J}=await g$();try{return(await m$($,J,1,{MessageType:"ListDevices"})).DeviceList??[]}finally{$.end()}}async function BJ($){let{socket:J,stream:Q}=await g$();try{let X=(await m$(J,Q,1,{MessageType:"ReadPairRecord",PairRecordID:$})).PairRecordData;if(!X)throw Error(`no pair record for ${$} — pair the device first (open Finder/iTunes, tap "Trust")`);return R$(X)}finally{J.end()}}async function FJ($,J){let{socket:Q,stream:Z,detach:X}=await g$(),Y=(J&255)<<8|J>>8&255,G=await m$(Q,Z,1,{MessageType:"Connect",DeviceID:$,PortNumber:Y});if(G.MessageType!=="Result"||G.Number!==0){Q.end();let U=G.Number??"?";throw Error(`Connect to device ${$} port ${J} failed (code ${U})`)}return{socket:Q,stream:Z,detach:X}}async function qJ(){let $=aQ("lsof",["-U"],{stdio:["ignore","pipe","ignore"]});if($.status!==0||!$.stdout)return[];let J=$.stdout.toString("utf8"),Q=new Map;for(let Z of J.split(`
10
+ `)){if(!/com\.apple\.webinspectord_sim\.socket\b/.test(Z))continue;if(!Z.startsWith("webinspec"))continue;let X=Z.split(/\s+/),Y=Number(X[1]),G=X[X.length-1];if(G)Q.set(G,Y)}return Array.from(Q,([Z,X])=>({socketPath:Z,pid:X}))}async function xJ($){let J=new O$;return new Promise((Q,Z)=>{let X=TJ.createConnection({path:$}),Y=(G)=>{J.close(G),Z(G)};X.once("error",Y),X.once("connect",()=>{X.off("error",Y),n$(X,J),Q({socket:X,stream:J})})})}async function w$($){let J=await $.read(4),Q=new DataView(J.buffer,J.byteOffset,4).getUint32(0,!1),Z=await $.read(Q);return R$(Z)}function I$($,J){let Q=d$({Label:"inspect-webkit",...J}),Z=new Uint8Array(4);new DataView(Z.buffer).setUint32(0,Q.length,!1),$.write(Z),$.write(Q)}function f$($,J){if($.Error)throw Error(`lockdown ${J} error: ${String($.Error)}`);if($.Request!==J)throw Error(`lockdown expected Request=${J}, got ${String($.Request)}`)}function DJ($,J,Q,Z){return new Promise((X,Y)=>{J();let G=new O$,U=SJ.connect({socket:$,cert:Buffer.from(Q.HostCertificate),key:Buffer.from(Q.HostPrivateKey),ca:Buffer.from(Q.RootCertificate),rejectUnauthorized:!1}),z=(P)=>{m(`${Z} tls error:`,P),G.close(P),Y(P)};U.once("error",z),U.once("secureConnect",()=>{m(`${Z} tls handshake complete`),U.off("error",z);let P=n$(U,G);X({socket:U,stream:G,detach:P})})})}class _${socket;stream;pair;udid;deviceID;detach;constructor($,J,Q,Z,X,Y){this.socket=$,this.stream=J,this.pair=Q,this.udid=Z,this.deviceID=X,this.detach=Y}static async open($,J){m("connecting usbmux tunnel to lockdown port",LJ);let{socket:Q,stream:Z,detach:X}=await FJ($.DeviceID,LJ),Y=new _$(Q,Z,J,$.Properties.SerialNumber,$.DeviceID,X);m("sending QueryType"),I$(Q,{Request:"QueryType"});let G=await w$(Z);if(m("QueryType reply:",G),f$(G,"QueryType"),G.Type!=="com.apple.mobile.lockdown")throw Error(`unexpected lockdown Type: ${String(G.Type)}`);return Y}async startSession(){m("StartSession with HostID",this.pair.HostID),I$(this.socket,{Request:"StartSession",HostID:this.pair.HostID,SystemBUID:this.pair.SystemBUID});let $=await w$(this.stream);if(m("StartSession reply:",$),f$($,"StartSession"),$.EnableSessionSSL){m("upgrading to TLS");let J=await DJ(this.socket,this.detach,this.pair,"lockdown");this.socket=J.socket,this.stream=J.stream,this.detach=J.detach,m("TLS upgrade complete")}}async startService($){m("StartService",$),I$(this.socket,{Request:"StartService",Service:$});let J=await w$(this.stream);return m("StartService reply:",J),f$(J,"StartService"),{port:J.Port,enableServiceSSL:Boolean(J.EnableServiceSSL),service:$}}async connectService($){m("connecting service tunnel to port",$.port,"ssl=",$.enableServiceSSL);let{socket:J,stream:Q,detach:Z}=await FJ(this.deviceID,$.port);if(!$.enableServiceSSL)return{socket:J,stream:Q};let X=await DJ(J,Z,this.pair,"service");return{socket:X.socket,stream:X.stream}}close(){this.socket.end()}}async function oQ($){let J=await $.read(4),Q=new DataView(J.buffer,J.byteOffset,4).getUint32(0,!1),Z=await $.read(Q);return cQ(Z)}function rQ($,J){let Q=d$(J),Z=new Uint8Array(4);new DataView(Z.buffer).setUint32(0,Q.length,!1),$.write(Z),$.write(Q)}function tQ(){let $=crypto.getRandomValues(new Uint8Array(16));$[6]=$[6]&15|64,$[8]=$[8]&63|128;let J=Array.from($,(Q)=>Q.toString(16).padStart(2,"0")).join("");return`${J.slice(0,8)}-${J.slice(8,12)}-${J.slice(12,16)}-${J.slice(16,20)}-${J.slice(20)}`}class L${socket;stream;connectionId=tQ();subscribers=new Set;reading;constructor($,J){this.socket=$,this.stream=J,this.reading=(async()=>{try{while(!J.closed){let Q=await oQ(J);for(let Z of[...this.subscribers])try{Z(Q)}catch{}}}catch{}})()}subscribe($){return this.subscribers.add($),()=>this.subscribers.delete($)}waitFor($,J=5000){return new Promise((Q,Z)=>{let X=setTimeout(()=>{Y(),Z(Error(`timeout waiting for ${$} after ${J}ms`))},J),Y=this.subscribe((G)=>{if(G.__selector===$)clearTimeout(X),Y(),Q(G)})})}send($,J){rQ(this.socket,{__selector:$,__argument:{WIRConnectionIdentifierKey:this.connectionId,...J}})}async reportIdentifier(){this.send("_rpc_reportIdentifier:",{})}async listApplications(){this.send("_rpc_getConnectedApplications:",{});let $=await this.waitFor("_rpc_reportConnectedApplicationList:",3000).catch(()=>null);if(!$)return[];let Q=$.__argument.WIRApplicationDictionaryKey??{},Z=[];for(let[X,Y]of Object.entries(Q)){let G=Y;Z.push({appId:X,bundleId:G.WIRApplicationBundleIdentifierKey,name:G.WIRApplicationNameKey,isProxy:Boolean(G.WIRIsApplicationProxyKey),isActive:Boolean(G.WIRIsApplicationActiveKey),hostAppId:G.WIRHostApplicationIdentifierKey})}return Z}async getListing($){this.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:$});let J=await this.waitFor("_rpc_applicationSentListing:",3000).catch(()=>null);if(!J)return[];let Z=J.__argument.WIRListingKey??{},X=[];for(let Y of Object.values(Z)){let G=Y;X.push({pageId:Number(G.WIRPageIdentifierKey??0),title:G.WIRTitleKey??"",url:G.WIRURLKey??"",type:G.WIRTypeKey??""})}return X}get connection(){return this.connectionId}forwardSocketSetup($,J,Q){this.send("_rpc_forwardSocketSetup:",{WIRApplicationIdentifierKey:$,WIRPageIdentifierKey:J,WIRSenderKey:Q,WIRAutomaticallyPause:!1})}forwardSocketData($,J,Q,Z){this.send("_rpc_forwardSocketData:",{WIRApplicationIdentifierKey:$,WIRPageIdentifierKey:J,WIRSenderKey:Q,WIRSocketDataKey:Z})}forwardDidClose($,J,Q){this.send("_rpc_forwardDidClose:",{WIRApplicationIdentifierKey:$,WIRPageIdentifierKey:J,WIRSenderKey:Q})}onMessage($){return this.subscribe($)}close(){this.socket.end()}}class a${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($,J,Q,Z,X){this.ws=$,this.wi=J,this.appId=Q,this.pageId=Z,this.senderKey=X}addMessageFilter($,J){let Q=this.filters.get($);if(!Q)this.filters.set($,Q=[]);Q.push(J)}callTarget($,J={}){return new Promise((Q,Z)=>{let X=--this.requestId;this.adapterRequestMap.set(X,{resolve:Q,reject:Z}),this.sendRaw(JSON.stringify({id:X,method:$,params:J}))})}fireEventToTools($,J){this.sendToTools(JSON.stringify({method:$,params:J}))}fireResultToTools($,J){this.sendToTools(JSON.stringify({id:$,result:J}))}fireErrorToTools($,J){this.sendToTools(JSON.stringify({id:$,error:{code:J.code??-32000,message:J.message}}))}replyEmpty($){if(typeof $.id==="number")this.fireResultToTools($.id,{});return Promise.resolve(null)}async onMessageFromTools($){let J;try{J=JSON.parse($)}catch{return}if(typeof J.method==="string"&&typeof J.id==="number")this.toolRequestMap.set(J.id,J.method);let Q=`tools::${J.method}`,Z=this.filters.get(Q),X=J;if(Z)for(let Y of Z){if(!X)break;X=await Y(X)}if(X)this.sendRaw(JSON.stringify(X))}async onMessageFromTarget($){let J;try{J=JSON.parse($)}catch{return}if(J.method==="Target.targetCreated"){this.sawAnyTargetCreated=!0;let Y=J.params?.targetInfo;if(Y?.type==="page"&&!this.innerTargetId)this.innerTargetId=Y.targetId,this.flushQueue();return}if(J.method==="Target.didCommitProvisionalTarget"){let Y=J.params?.newTargetId;if(typeof Y==="string")this.innerTargetId=Y;return}if(J.method==="Target.targetDestroyed")return;if(J.method==="Target.dispatchMessageFromTarget"){let Y=J.params?.message;if(typeof Y==="string")return this.onMessageFromTarget(Y);return}if(typeof J.id==="number"&&this.wrappedAckIds.has(J.id)){this.wrappedAckIds.delete(J.id);return}if(typeof J.id==="number"){let Y=this.adapterRequestMap.get(J.id);if(Y){if(this.adapterRequestMap.delete(J.id),"error"in J&&J.error)Y.reject(J.error);else Y.resolve(J.result??{});return}let G=this.toolRequestMap.get(J.id);if(G){this.toolRequestMap.delete(J.id);let U=`target::${G}`;if("error"in J&&this.filters.has("target::error"))U="target::error";let z=this.filters.get(U);if(!z)return this.sendToTools($);let P=J;for(let O of z){if(!P)break;P=await O(P)}if(P)this.sendToTools(JSON.stringify(P));return}return this.sendToTools($)}let Q=`target::${J.method}`,Z=this.filters.get(Q);if(!Z)return this.sendToTools($);let X=J;for(let Y of Z){if(!X)break;X=await Y(X)}if(X)this.sendToTools(JSON.stringify(X))}sendRaw($){let J=null;try{J=JSON.parse($)}catch{}let Q=J&&typeof J.method==="string"&&J.method.startsWith("Target.");if(this.innerTargetId&&J&&!Q){if(typeof J.id==="number")this.wrappedAckIds.add(J.id);let Z={id:J.id,method:"Target.sendMessageToTarget",params:{id:J.id,message:$,targetId:this.innerTargetId}};this.writeFrame(JSON.stringify(Z));return}if(!this.innerTargetId&&J&&!Q){if(this.outgoingQueue.push($),this.outgoingQueue.length===1)setTimeout(()=>{if(!this.innerTargetId&&!this.sawAnyTargetCreated&&this.outgoingQueue.length>0){let Z=this.outgoingQueue;this.outgoingQueue=[];for(let X of Z)this.writeFrame(X)}},250);return}this.writeFrame($)}flushQueue(){if(this.outgoingQueue.length===0)return;let $=this.outgoingQueue;this.outgoingQueue=[];for(let J of $)this.sendRaw(J)}writeFrame($){this.wi.forwardSocketData(this.appId,this.pageId,this.senderKey,new TextEncoder().encode($))}sendToTools($){if(this.ws.readyState===1)this.ws.send($)}}function eQ(){return{lastScriptEval:{value:""},pageExecCtx:{id:0,isPage:!1},lastConsoleApiCalled:{value:null}}}function I($,J,Q){return $.fireResultToTools(J.id,Q),Promise.resolve(null)}function $Z($,J){$.addMessageFilter("tools::Debugger.canSetScriptSource",(Q)=>I($,Q,{result:!1})),$.addMessageFilter("tools::Debugger.setBlackboxPatterns",(Q)=>I($,Q,{})),$.addMessageFilter("tools::Debugger.setAsyncCallStackDepth",(Q)=>I($,Q,{})),$.addMessageFilter("target::Debugger.enable",(Q)=>{return $.callTarget("Debugger.setBreakpointsActive",{active:!0}).catch(()=>{}),$.callTarget("Debugger.setPauseOnDebuggerStatements",{enabled:!0}).catch(()=>{}),Promise.resolve(Q)}),$.addMessageFilter("target::Debugger.scriptParsed",(Q)=>{if(Q.params?.scriptId)J.lastScriptEval.value=String(Q.params.scriptId);return Promise.resolve(Q)}),$.addMessageFilter("tools::Debugger.setBreakpoint",(Q)=>{let Z=Q.params??{};return Q.params={location:Z.location,options:Z.condition?{condition:Z.condition}:{}},Promise.resolve(Q)}),$.addMessageFilter("tools::Debugger.setBreakpointByUrl",(Q)=>{let Z=Q.params??{};return Q.params={lineNumber:Z.lineNumber,url:Z.url,urlRegex:Z.urlRegex,columnNumber:Z.columnNumber,options:Z.condition?{condition:Z.condition}:{}},Promise.resolve(Q)});for(let Q of["removeBreakpoint","continueToLocation","stepInto","stepOver","stepOut","resume","pause","getScriptSource","evaluateOnCallFrame"])$.addMessageFilter(`tools::Debugger.${Q}`,(Z)=>Promise.resolve(Z));$.addMessageFilter("target::Debugger.paused",(Q)=>{let Z=Q.params?.callFrames;if(Array.isArray(Z))for(let X of Z){if(X.functionName==null&&typeof X.name==="string")X.functionName=X.name;if(!X.location&&X.sourceCodeLocation)X.location={scriptId:String(X.sourceCodeLocation.scriptId??""),lineNumber:X.sourceCodeLocation.lineNumber??0,columnNumber:X.sourceCodeLocation.columnNumber??0};if(Array.isArray(X.scopeChain)){for(let Y of X.scopeChain)if(!Y.object&&Y.value)Y.object=Y.value}}return Promise.resolve(Q)}),$.addMessageFilter("tools::Debugger.setBlackboxedRanges",(Q)=>I($,Q,{})),$.addMessageFilter("tools::Debugger.setSkipAllPauses",(Q)=>I($,Q,{})),$.addMessageFilter("tools::Debugger.setPauseOnExceptions",(Q)=>{return Promise.resolve(Q)})}function JZ($,J){$.addMessageFilter("target::Runtime.executionContextCreated",(Q)=>{let Z=Q.params?.context;if(Z){if(!Z.origin)Z.origin=Z.name??"";let X=Number(Z.id),Y=!!(Z.isPageContext||Z.type==="normal");if(Number.isFinite(X)&&X>0){if(!J.pageExecCtx.id||Y&&!J.pageExecCtx.isPage)J.pageExecCtx.id=X,J.pageExecCtx.isPage=Y}if(Z.frameId)Z.auxData={frameId:Z.frameId,isDefault:!0},delete Z.frameId}return Promise.resolve(Q)}),$.addMessageFilter("tools::Runtime.evaluate",(Q)=>{let Z=Q.params;if(!Z)return Promise.resolve(Q);if("silent"in Z)Z.doNotPauseOnExceptionsAndMuteConsole=!!Z.silent,delete Z.silent;if("userGesture"in Z)Z.emulateUserGesture=!!Z.userGesture,delete Z.userGesture;return Promise.resolve(Q)}),$.addMessageFilter("target::Runtime.evaluate",(Q)=>{let Z=Q.result;if(Z?.wasThrown){if(Z.result)Z.result.subtype="error";Z.exceptionDetails={exceptionId:0,text:Z.result?.description??"Uncaught",url:"",scriptId:J.lastScriptEval.value,lineNumber:0,columnNumber:0,stackTrace:{callFrames:[{functionName:"",scriptId:J.lastScriptEval.value,url:"",lineNumber:0,columnNumber:0}]},exception:Z.result}}return Promise.resolve(Q)}),$.addMessageFilter("target::Runtime.getProperties",(Q)=>{let Z=Q.result;if(!Z)return Promise.resolve(Q);let X=Array.isArray(Z.result)?Z.result:Array.isArray(Z.properties)?Z.properties:null;if(X)Z.result=X.filter((Y)=>Y.isOwn||Y.nativeGetter).map((Y)=>({...Y,isOwn:!0})),delete Z.properties;if(Array.isArray(Z.internalProperties))Z.internalProperties=Z.internalProperties.map((Y)=>({name:Y.name,value:Y.value}));return Promise.resolve(Q)}),$.addMessageFilter("tools::Runtime.compileScript",(Q)=>I($,Q,{scriptId:null,exceptionDetails:null})),$.addMessageFilter("tools::Runtime.globalLexicalScopeNames",(Q)=>I($,Q,{names:[]})),$.addMessageFilter("tools::Runtime.terminateExecution",(Q)=>I($,Q,{})),$.addMessageFilter("tools::Runtime.getIsolateId",(Q)=>I($,Q,{id:"inspect-webkit"})),$.addMessageFilter("tools::Runtime.getHeapUsage",(Q)=>I($,Q,{usedSize:0,totalSize:0})),$.addMessageFilter("tools::Runtime.discardConsoleEntries",(Q)=>{return Q.method="Console.clearMessages",Promise.resolve(Q)}),$.addMessageFilter("tools::Runtime.runIfWaitingForDebugger",(Q)=>I($,Q,{})),$.addMessageFilter("tools::Runtime.setAsyncCallStackDepth",(Q)=>I($,Q,{})),$.addMessageFilter("tools::Runtime.releaseObject",(Q)=>Promise.resolve(Q)),$.addMessageFilter("tools::Runtime.releaseObjectGroup",(Q)=>Promise.resolve(Q)),$.addMessageFilter("tools::Runtime.callFunctionOn",(Q)=>Promise.resolve(Q)),$.addMessageFilter("tools::Runtime.queryObjects",(Q)=>Promise.resolve(Q)),$.addMessageFilter("target::Debugger.globalObjectCleared",(Q)=>{return $.fireEventToTools("Runtime.executionContextsCleared",{}),Promise.resolve(null)})}function QZ($,J){$.addMessageFilter("tools::Log.startViolationsReport",(Q)=>I($,Q,{})),$.addMessageFilter("tools::Log.stopViolationsReport",(Q)=>I($,Q,{})),$.addMessageFilter("tools::Log.clear",(Q)=>{return Q.method="Console.clearMessages",Promise.resolve(Q)}),$.addMessageFilter("tools::Log.disable",(Q)=>{return Q.method="Console.disable",Promise.resolve(Q)}),$.addMessageFilter("tools::Log.enable",(Q)=>{return Q.method="Console.enable",Promise.resolve(Q)}),$.addMessageFilter("tools::Runtime.enable",(Q)=>{return $.callTarget("Console.enable",{}).catch(()=>{}),Promise.resolve(Q)}),$.addMessageFilter("target::Console.messageAdded",(Q)=>{let Z=Q.params?.message??{},Y=(Array.isArray(Z.stackTrace)?Z.stackTrace:Array.isArray(Z.stackTrace?.callFrames)?Z.stackTrace.callFrames:[]).map((z)=>({functionName:z.functionName??"",scriptId:z.scriptId??"",url:z.url??"",lineNumber:Number(z.lineNumber??0),columnNumber:Number(z.columnNumber??0)})),G=Y.length?{callFrames:Y}:void 0,U=Date.now();if(Z.source==="console-api"){let z=Z.type==="log"?Z.level??"log":Z.type??"log",P=ZZ(z),O=Array.isArray(Z.parameters)&&Z.parameters.length>0?Z.parameters:[{type:"string",value:String(Z.text??"")}],N={type:P,args:O,executionContextId:J.pageExecCtx.id||1,timestamp:U,stackTrace:G};return J.lastConsoleApiCalled.value=N,$.fireEventToTools("Runtime.consoleAPICalled",N),Promise.resolve(null)}if(Z.source==="javascript"&&Z.level==="error")return $.fireEventToTools("Runtime.exceptionThrown",{timestamp:U,exceptionDetails:{exceptionId:0,text:String(Z.text??"Uncaught"),lineNumber:Number(Z.line??0),columnNumber:Number(Z.column??0),scriptId:J.lastScriptEval.value,url:Z.url,stackTrace:G,exception:{type:"string",value:String(Z.text??"")}}}),Promise.resolve(null);return $.fireEventToTools("Log.entryAdded",{entry:{source:Z.source??"other",level:YZ(Z.level??Z.type??"log"),text:String(Z.text??""),timestamp:U,url:Z.url,lineNumber:Z.line,stackTrace:G,networkRequestId:Z.networkRequestId}}),Promise.resolve(null)}),$.addMessageFilter("target::Console.messagesCleared",()=>{return $.fireEventToTools("Log.entriesCleared",{}),$.fireEventToTools("Runtime.consoleAPICalled",{type:"clear",args:[],executionContextId:J.pageExecCtx.id||1,timestamp:Date.now()}),J.lastConsoleApiCalled.value=null,Promise.resolve(null)}),$.addMessageFilter("target::Console.messageRepeatCountUpdated",()=>{let Q=J.lastConsoleApiCalled.value;if(Q)$.fireEventToTools("Runtime.consoleAPICalled",{...Q,timestamp:Date.now()});return Promise.resolve(null)}),$.addMessageFilter("target::Console.heapSnapshot",()=>Promise.resolve(null))}function ZZ($){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 YZ($){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 J=new Set;$.addMessageFilter("tools::DOM.enable",(Q)=>I($,Q,{})),$.addMessageFilter("tools::DOM.setInspectMode",(Q)=>{if(Q.method="DOM.setInspectModeEnabled",Q.params)Q.params.enabled=Q.params.mode==="searchForNode",delete Q.params.mode,delete Q.params.highlightConfig;return Promise.resolve(Q)}),$.addMessageFilter("tools::DOM.setInspectedNode",(Q)=>{return Q.method="Console.addInspectedNode",Promise.resolve(Q)}),$.addMessageFilter("tools::DOM.performSearch",(Q)=>{if(Q.params)Q.params={query:Q.params.query,caseSensitive:!!Q.params.caseSensitive};return Promise.resolve(Q)}),$.addMessageFilter("target::DOM.performSearch",(Q)=>{let Z=Q.result?.searchId;if(typeof Z==="string")J.add(Z);return Promise.resolve(Q)}),$.addMessageFilter("tools::DOM.discardSearchResults",(Q)=>{let Z=Q.params?.searchId;if(typeof Z==="string")J.delete(Z);return Promise.resolve(Q)}),$.addMessageFilter("tools::DOM.pushNodesByBackendIdsToFrontend",async(Q)=>{let Z=Q.params?.backendNodeIds??[],X=await Promise.all(Z.map((Y)=>$.callTarget("DOM.pushNodeByBackendIdToFrontend",{backendNodeId:Y}).then((G)=>G.nodeId).catch(()=>Y)));return $.fireResultToTools(Q.id,{nodeIds:X}),null}),$.addMessageFilter("tools::DOM.getBoxModel",(Q)=>{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:Q.params?.nodeId}).catch(()=>{}),Promise.resolve(null)}),$.addMessageFilter("tools::DOM.getNodeForLocation",async(Q)=>{try{let X=(await $.callTarget("Runtime.evaluate",{expression:`document.elementFromPoint(${Q.params?.x},${Q.params?.y})`})).result?.objectId;if(!X)return $.fireResultToTools(Q.id,{nodeId:0}),null;let Y=await $.callTarget("DOM.requestNode",{objectId:X});$.fireResultToTools(Q.id,{nodeId:Y.nodeId,backendNodeId:Y.nodeId})}catch(Z){$.fireErrorToTools(Q.id,{message:Z?.message??String(Z)})}return null}),$.addMessageFilter("tools::DOM.resolveNode",(Q)=>{if(Q.params&&Q.params.objectGroup===void 0)delete Q.params.objectGroup;return Promise.resolve(Q)})}function GZ($){$.addMessageFilter("tools::DOMDebugger.getEventListeners",async(J)=>{try{let Q=await $.callTarget("DOM.requestNode",{objectId:J.params?.objectId}),X=((await $.callTarget("DOM.getEventListenersForNode",{nodeId:Q.nodeId,objectGroup:"event-listeners-panel"})).listeners??[]).map((Y)=>({type:Y.type,useCapture:!!Y.useCapture,passive:!!Y.passive,once:!!Y.once,location:Y.location,handler:Y.handler}));$.fireResultToTools(J.id,{listeners:X})}catch(Q){$.fireErrorToTools(J.id,{message:Q?.message??String(Q)})}return null}),$.addMessageFilter("tools::DOMDebugger.setXHRBreakpoint",(J)=>I($,J,{})),$.addMessageFilter("tools::DOMDebugger.removeXHRBreakpoint",(J)=>I($,J,{})),$.addMessageFilter("tools::DOMDebugger.setEventListenerBreakpoint",(J)=>I($,J,{})),$.addMessageFilter("tools::DOMDebugger.removeEventListenerBreakpoint",(J)=>I($,J,{}))}function VZ($,J){$.addMessageFilter("tools::Page.setOverlayMessage",(Y)=>{return Y.method="Debugger.setOverlayMessage",Promise.resolve(Y)}),$.addMessageFilter("tools::Page.configureOverlay",(Y)=>{return Y.method="Debugger.setOverlayMessage",Promise.resolve(Y)}),$.addMessageFilter("tools::Page.getNavigationHistory",async(Y)=>{try{let G=await $.callTarget("Runtime.evaluate",{expression:"window.location.href"}),U=await $.callTarget("Runtime.evaluate",{expression:"document.title"});$.fireResultToTools(Y.id,{currentIndex:0,entries:[{id:0,url:G.result?.value??"",userTypedURL:G.result?.value??"",title:U.result?.value??"",transitionType:"link"}]})}catch(G){$.fireErrorToTools(Y.id,{message:G?.message??String(G)})}return null}),$.addMessageFilter("target::Page.frameNavigated",(Y)=>{return wJ(Y.params?.frame),Promise.resolve(Y)}),$.addMessageFilter("target::Page.getResourceTree",(Y)=>{return l$(Y.result?.frameTree),Promise.resolve(Y)}),$.addMessageFilter("tools::Page.getFrameTree",async(Y)=>{if(typeof Y.id!=="number")return null;try{let G=await $.callTarget("Page.getResourceTree",{}),U=IJ(G?.frameTree);l$(U),$.fireResultToTools(Y.id,{frameTree:U})}catch(G){$.fireErrorToTools(Y.id,{message:G?.message??String(G)})}return null}),$.addMessageFilter("tools::Page.createIsolatedWorld",(Y)=>{if(typeof Y.id!=="number")return Promise.resolve(null);return I($,Y,{executionContextId:J.pageExecCtx.id||1})});let Q=1;$.addMessageFilter("tools::Page.addScriptToEvaluateOnNewDocument",(Y)=>I($,Y,{identifier:`pptr-${Q++}`})),$.addMessageFilter("tools::WebMCP.enable",(Y)=>I($,Y,{})),$.addMessageFilter("tools::WebMCP.disable",(Y)=>I($,Y,{})),$.addMessageFilter("tools::Page.captureScreenshot",(Y)=>{return $.fireErrorToTools(Y.id,{message:"Page.captureScreenshot not supported by Safari"}),Promise.resolve(null)}),$.addMessageFilter("tools::Page.startScreencast",(Y)=>I($,Y,{})),$.addMessageFilter("tools::Page.stopScreencast",(Y)=>I($,Y,{})),$.addMessageFilter("tools::Page.screencastFrameAck",(Y)=>I($,Y,{})),$.addMessageFilter("tools::Page.setLifecycleEventsEnabled",(Y)=>I($,Y,{}));let Z="",X="0.1";$.addMessageFilter("target::Page.frameNavigated",(Y)=>{let G=Y.params?.frame;if(G)X=G.id??X,Z=G.loaderId??Z,$.fireEventToTools("Page.frameStartedLoading",{frameId:X}),$.fireEventToTools("Page.lifecycleEvent",{frameId:X,loaderId:Z,name:"init",timestamp:0}),$.fireEventToTools("Page.lifecycleEvent",{frameId:X,loaderId:Z,name:"commit",timestamp:0});return Promise.resolve(Y)}),$.addMessageFilter("target::Page.domContentEventFired",(Y)=>{return $.fireEventToTools("Page.lifecycleEvent",{frameId:X,loaderId:Z,name:"DOMContentLoaded",timestamp:Y.params?.timestamp??0}),Promise.resolve(Y)}),$.addMessageFilter("target::Page.loadEventFired",(Y)=>{return $.fireEventToTools("Page.lifecycleEvent",{frameId:X,loaderId:Z,name:"load",timestamp:Y.params?.timestamp??0}),$.fireEventToTools("Page.lifecycleEvent",{frameId:X,loaderId:Z,name:"networkAlmostIdle",timestamp:Y.params?.timestamp??0}),$.fireEventToTools("Page.lifecycleEvent",{frameId:X,loaderId:Z,name:"networkIdle",timestamp:Y.params?.timestamp??0}),$.fireEventToTools("Page.frameStoppedLoading",{frameId:X}),Promise.resolve(Y)})}function wJ($){if(!$)return;if(!$.securityOrigin)try{$.securityOrigin=new URL($.url??"").origin}catch{$.securityOrigin="://"}if(!$.mimeType)$.mimeType="text/html"}function l$($){if(!$)return;if(wJ($.frame),Array.isArray($.childFrames))$.childFrames.forEach(l$)}function IJ($){if(!$)return $;let J={frame:$.frame};if(Array.isArray($.childFrames))J.childFrames=$.childFrames.map(IJ);return J}function zZ($){$.addMessageFilter("tools::Overlay.enable",(J)=>I($,J,{})),$.addMessageFilter("tools::Overlay.disable",(J)=>I($,J,{})),$.addMessageFilter("tools::Overlay.highlightNode",(J)=>{let Q=J.params??{};return J.method="DOM.highlightNode",J.params={highlightConfig:Q.highlightConfig,nodeId:Q.nodeId,objectId:Q.objectId},Promise.resolve(J)}),$.addMessageFilter("tools::Overlay.highlightFrame",(J)=>{return J.method="DOM.highlightFrame",Promise.resolve(J)}),$.addMessageFilter("tools::Overlay.highlightQuad",(J)=>{return J.method="DOM.highlightQuad",Promise.resolve(J)}),$.addMessageFilter("tools::Overlay.highlightRect",(J)=>{return J.method="DOM.highlightRect",Promise.resolve(J)}),$.addMessageFilter("tools::Overlay.hideHighlight",(J)=>{return J.method="DOM.hideHighlight",Promise.resolve(J)}),$.addMessageFilter("tools::Overlay.setShowPaintRects",(J)=>{return J.method="Page.setShowPaintRects",Promise.resolve(J)}),$.addMessageFilter("tools::Overlay.setInspectMode",(J)=>{let Q=J.params??{};return J.method="DOM.setInspectModeEnabled",J.params={enabled:typeof Q.mode==="string"&&Q.mode!=="none",highlightConfig:Q.highlightConfig},Promise.resolve(J)})}function UZ($){$.addMessageFilter("tools::Emulation.canEmulate",(J)=>I($,J,{result:!0})),$.addMessageFilter("tools::Emulation.setTouchEmulationEnabled",(J)=>{return J.method="Page.setTouchEmulationEnabled",Promise.resolve(J)}),$.addMessageFilter("tools::Emulation.setScriptExecutionDisabled",(J)=>{return J.method="Page.setScriptExecutionDisabled",Promise.resolve(J)}),$.addMessageFilter("tools::Emulation.setEmulatedMedia",(J)=>{return J.method="Page.setEmulatedMedia",Promise.resolve(J)}),$.addMessageFilter("tools::Rendering.setShowPaintRects",(J)=>{return J.method="Page.setShowPaintRects",Promise.resolve(J)}),$.addMessageFilter("tools::Emulation.setDeviceMetricsOverride",(J)=>I($,J,{})),$.addMessageFilter("tools::Emulation.clearDeviceMetricsOverride",(J)=>I($,J,{})),$.addMessageFilter("tools::Emulation.setUserAgentOverride",(J)=>{let Q=J.params?.userAgent??"";return J.method="Page.overrideUserAgent",J.params={value:Q},Promise.resolve(J)}),$.addMessageFilter("tools::Emulation.setFocusEmulationEnabled",(J)=>I($,J,{})),$.addMessageFilter("tools::Emulation.setDefaultBackgroundColorOverride",(J)=>I($,J,{}))}function k$($){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 DZ($){if(!$)return $;return{...FZ,...$,hasPostData:$.postData!=null}}function PZ($){if(!$)return $;let J=0,Q=$.headers??{},Z=Q["Content-Length"]??Q["content-length"];if(Z!=null)J=Number(Z)||0;return{...LZ,...$,fromDiskCache:$.source==="disk-cache",fromServiceWorker:$.source==="service-worker",encodedDataLength:J}}function RZ($,J){if(!$)return;for(let[Q,Z]of Object.entries(J))if(Q in $&&!(Z in $))$[Z]=$[Q],delete $[Q]}function OZ($){let J=typeof $.size==="number"?$.size:($.name?.length??0)+($.value?.length??0);return{name:$.name,value:$.value,domain:$.domain,path:$.path,expires:$.expires??-1,size:J,httpOnly:!!$.httpOnly,secure:!!$.secure,session:!!$.session,...$.sameSite?{sameSite:$.sameSite}:{}}}function _Z($,J){let Q=new Map,Z=1024;for(let[Y,G]of Object.entries(WZ))$.addMessageFilter(`tools::${Y}`,(U)=>{return U.method=G,Promise.resolve(U)});$.addMessageFilter("tools::Network.setCacheDisabled",(Y)=>{if(Y.params&&"cacheDisabled"in Y.params)Y.params={disabled:!!Y.params.cacheDisabled};return Promise.resolve(Y)});let X=async(Y)=>{try{let G=await $.callTarget("Page.getCookies",{}),U=Array.isArray(G?.cookies)?G.cookies.map(OZ):[];$.fireResultToTools(Y.id,{cookies:U})}catch(G){$.fireErrorToTools(Y.id,{message:G?.message??String(G)})}return null};$.addMessageFilter("tools::Network.getCookies",X),$.addMessageFilter("tools::Network.getAllCookies",X),$.addMessageFilter("tools::Network.setCookie",(Y)=>{let G=Y.params??{};return Y.method="Page.setCookie",Y.params={cookie:{name:G.name,value:G.value,domain:G.domain??"",path:G.path??"/",expires:G.expires??-1,session:!1,httpOnly:!!G.httpOnly,secure:!!G.secure,sameSite:G.sameSite??"None"}},Promise.resolve(Y)}),$.addMessageFilter("tools::Network.setCookies",async(Y)=>{let G=Array.isArray(Y.params?.cookies)?Y.params.cookies:[];try{await Promise.all(G.map((U)=>$.callTarget("Page.setCookie",{cookie:U}))),$.fireResultToTools(Y.id,{})}catch(U){$.fireErrorToTools(Y.id,{message:U?.message??String(U)})}return null}),$.addMessageFilter("tools::Network.deleteCookies",(Y)=>{let G=Y.params??{},U=G.url??`https://${(G.domain??"").replace(/^\./,"")}${G.path??"/"}`;return Y.method="Page.deleteCookie",Y.params={cookieName:G.name,url:U},Promise.resolve(Y)}),$.addMessageFilter("tools::Network.deleteCookie",(Y)=>{return Y.method="Page.deleteCookie",Promise.resolve(Y)}),$.addMessageFilter("tools::Network.clearBrowserCookies",async(Y)=>{try{let G=await $.callTarget("Page.getCookies",{}),U=Array.isArray(G?.cookies)?G.cookies:[];await Promise.all(U.map((z)=>$.callTarget("Page.deleteCookie",{cookieName:z.name,url:`${z.secure?"https":"http"}://${(z.domain??"").replace(/^\./,"")}${z.path??"/"}`}).catch(()=>{}))),$.fireResultToTools(Y.id,{})}catch(G){$.fireErrorToTools(Y.id,{message:G?.message??String(G)})}return null}),$.addMessageFilter("tools::Network.canEmulateNetworkConditions",(Y)=>I($,Y,{result:!1})),$.addMessageFilter("tools::Network.setExtraHTTPHeaders",(Y)=>I($,Y,{})),$.addMessageFilter("tools::Network.setBlockedURLs",(Y)=>I($,Y,{})),$.addMessageFilter("tools::Network.emulateNetworkConditions",(Y)=>I($,Y,{})),$.addMessageFilter("tools::Network.setMonitoringXHREnabled",(Y)=>I($,Y,{})),$.addMessageFilter("tools::Network.getResponseBody",async(Y)=>{let G=Y.params?.requestId,U=typeof G==="string"?Q.get(G):void 0;if(!U)return $.fireErrorToTools(Y.id,{message:"Network.getResponseBody: requestId not tracked (only requests observed via requestWillBeSent are recoverable)"}),null;try{let z=await $.callTarget("Network.loadResource",{frameId:U.frameId,url:U.url}),P=String(z?.content??""),O=String(z?.mimeType??""),N=/^(text\/|application\/(json|xml|javascript|ecmascript|x-www-form-urlencoded))/.test(O),_=N?P:Buffer.from(P,"binary").toString("base64");$.fireResultToTools(Y.id,{body:_,base64Encoded:!N})}catch(z){$.fireErrorToTools(Y.id,{message:`Network.getResponseBody fallback (loadResource) failed: ${z?.message??String(z)}`})}return null});for(let[Y,G]of Object.entries(HZ))$.addMessageFilter(`target::${Y}`,(U)=>{return RZ(U.params,G),Promise.resolve(U)});$.addMessageFilter("target::Network.requestWillBeSent",(Y)=>{let G=Y.params;if(G){if(Object.assign(G,{...KZ,...G}),G.request=DZ(G.request),G.type=k$(G.type),typeof G.requestId==="string"&&typeof G.request?.url==="string"){if(Q.size>=1024){let U=Q.keys().next().value;if(U!==void 0)Q.delete(U)}Q.set(G.requestId,{url:G.request.url,frameId:G.frameId})}}return Promise.resolve(Y)}),$.addMessageFilter("target::Network.responseReceived",(Y)=>{let G=Y.params;if(G)Object.assign(G,{...NZ,...G}),G.response=PZ(G.response),G.type=k$(G.type);return Promise.resolve(Y)}),$.addMessageFilter("target::Network.loadingFinished",(Y)=>{let G=Y.params;if(G){let U=G.metrics?.responseBodyBytesReceived;if(typeof U==="number"&&G.encodedDataLength==null)G.encodedDataLength=U;Object.assign(G,{...AZ,...G})}return Promise.resolve(Y)}),$.addMessageFilter("target::Network.loadingFailed",(Y)=>{let G=Y.params;if(G){if(G.type=k$(G.type),!("canceled"in G))G.canceled=!1}return Promise.resolve(Y)}),$.addMessageFilter("target::Network.requestServedFromMemoryCache",(Y)=>{if(Y.method="Network.requestServedFromCache",Y.params)Y.params={requestId:Y.params.requestId};return Promise.resolve(Y)}),$.addMessageFilter("tools::Network.loadNetworkResource",async(Y)=>{let G=Y.params??{};if(!J)return $.fireResultToTools(Y.id,{resource:{success:!1,netError:1,netErrorName:"ERR_NOT_IMPLEMENTED"}}),null;try{let U=await $.callTarget("Network.loadResource",{frameId:G.frameId,url:G.url}),z=!!U?.content&&(U?.status??0)>=200&&(U?.status??0)<300,P;if(z)P=`network-resource:${G.frameId??""}:${G.url}`,J.set(P,String(U.content));$.fireResultToTools(Y.id,{resource:{success:z,stream:P,httpStatusCode:U?.status,headers:U?.headers,mimeType:U?.mimeType}})}catch(U){$.fireResultToTools(Y.id,{resource:{success:!1,netError:2,netErrorName:U?.message??"ERR_FAILED"}})}return null})}function CZ($){for(let J of["Target.setAutoAttach","Target.setDiscoverTargets","Target.setRemoteLocations"])$.addMessageFilter(`tools::${J}`,(Q)=>I($,Q,{}))}function jZ($){$.addMessageFilter("target::Inspector.inspect",(J)=>{if(J.method="DOM.inspectNodeRequested",J.params)J.params.backendNodeId=J.params.object?.objectId,delete J.params.object,delete J.params.hints;return Promise.resolve(J)})}function EZ($){if(!$)return $;let J=$.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:J,isConstructed:J,length:$.length??0,endLine:$.endLine??0,endColumn:$.endColumn??0,hasSourceURL:!!$.sourceURL}}function p$($){if(!$)return $;let J={origin:$.origin==="author"?"regular":$.origin,style:$$($.style),selectorList:qZ($.selectorList)};if($.ruleId?.styleSheetId)J.styleSheetId=$.ruleId.styleSheetId;if(Array.isArray($.groupings))J.media=$.groupings.map((Q)=>({text:Q.text,sourceURL:Q.sourceURL,source:TZ[Q.type]}));return J}function yZ($){let J={lastNodeId:0},Q=new Map;async function Z(X,Y){let G=Q.get(X);if(!G)try{if(G=(await $.callTarget("CSS.getStyleSheet",{styleSheetId:X}))?.styleSheet,G)Q.set(X,G)}catch{}let U=G?.rules??[];for(let z=0;z<U.length;z++)if(MZ(U[z]?.style?.range,Y))return{styleSheetId:X,ordinal:z};return{styleSheetId:X,ordinal:0}}$.addMessageFilter("tools::CSS.enable",(X)=>{return $.fireResultToTools(X.id,{}),Promise.resolve(null)}),$.addMessageFilter("target::CSS.styleSheetAdded",(X)=>{if(X.params?.header)X.params.header=EZ(X.params.header);return Promise.resolve(X)}),$.addMessageFilter("target::CSS.getInlineStylesForNode",(X)=>{let Y=X.result;if(Y)X.result={inlineStyle:$$(Y.inlineStyle),attributesStyle:$$(Y.attributesStyle)};return Promise.resolve(X)}),$.addMessageFilter("tools::CSS.getMatchedStylesForNode",async(X)=>{if(typeof X.params?.nodeId==="number")J.lastNodeId=X.params.nodeId;try{let[Y,G]=await Promise.all([$.callTarget("CSS.getInlineStylesForNode",{nodeId:X.params.nodeId}),$.callTarget("CSS.getMatchedStylesForNode",{nodeId:X.params.nodeId,includePseudo:!0,includeInherited:!0})]);$.fireResultToTools(X.id,{inlineStyle:$$(Y?.inlineStyle),attributesStyle:$$(Y?.attributesStyle),matchedCSSRules:o$(G?.matchedCSSRules),pseudoElements:xZ(G?.pseudoElements),inherited:SZ(G?.inherited),cssKeyframesRules:[]})}catch(Y){$.fireErrorToTools(X.id,{message:Y?.message??String(Y)})}return null}),$.addMessageFilter("tools::CSS.setStyleTexts",async(X)=>{let Y=X.params?.edits??[],G=[];for(let U of Y)try{let z=await Z(U.styleSheetId,U.range),P=await $.callTarget("CSS.setStyleText",{styleId:z,text:U.text});G.push($$(P?.style)),Q.delete(U.styleSheetId),$.fireEventToTools("CSS.styleSheetChanged",{styleSheetId:U.styleSheetId})}catch{G.push(null)}return $.fireResultToTools(X.id,{styles:G}),null}),$.addMessageFilter("tools::CSS.setRuleSelector",async(X)=>{let{styleSheetId:Y,range:G,selector:U}=X.params??{};try{let z=await Z(Y,G);X.params={ruleId:z,selector:U}}catch(z){return $.fireErrorToTools(X.id,{message:z?.message??String(z)}),null}return X}),$.addMessageFilter("target::CSS.setRuleSelector",(X)=>{if(X.result?.rule)X.result={rule:p$(X.result.rule)};return Promise.resolve(X)}),$.addMessageFilter("tools::CSS.addRule",async(X)=>{let Y=X.params??{},G=String(Y.ruleText??"").trim().replace(/\{\s*\}\s*$/,"").trim();try{let U=await $.callTarget("CSS.addRule",{contextNodeId:J.lastNodeId,styleSheetId:Y.styleSheetId,selector:G});$.fireResultToTools(X.id,{rule:p$(U?.rule)})}catch(U){$.fireErrorToTools(X.id,{message:U?.message??String(U)})}return null})}function IZ($){$.addMessageFilter("tools::Browser.getVersion",(J)=>I($,J,wZ)),$.addMessageFilter("tools::Browser.getWindowForTarget",(J)=>I($,J,{windowId:1,bounds:{}})),$.addMessageFilter("tools::Browser.setWindowBounds",(J)=>I($,J,{}))}function kZ($){switch($){case"mousePressed":return"mousedown";case"mouseReleased":return"click";case"mouseMoved":return"mousemove";default:return null}}function vZ($){let J=async(Q)=>{let Z=Q.params??{},X=kZ(Z.type);if(!X)return $.fireResultToTools(Q.id,{}),null;let Y=X==="click"?["mousedown","click","mouseup"]:[X];try{for(let G of Y){let U={x:Number(Z.x)||0,y:Number(Z.y)||0,modifiers:Number(Z.modifiers)||0,button:Z.button??"none",type:G},z=`(${fZ}, __sd_simulate(${JSON.stringify(U)}))`;await $.callTarget("Runtime.evaluate",{expression:z})}$.fireResultToTools(Q.id,{})}catch(G){$.fireErrorToTools(Q.id,{message:G?.message??String(G)})}return null};$.addMessageFilter("tools::Input.dispatchMouseEvent",J),$.addMessageFilter("tools::Input.emulateTouchFromMouseEvent",J),$.addMessageFilter("tools::Input.setIgnoreInputEvents",(Q)=>{return $.fireResultToTools(Q.id,{}),Promise.resolve(null)})}function hZ($){let J=new Map;return $.addMessageFilter("tools::IO.read",(Q)=>{let Z=String(Q.params?.handle??""),X=Number(Q.params?.size)||bZ,Y=Number(Q.params?.offset)||0,G=J.get(Z);if(G===void 0)return $.fireResultToTools(Q.id,{data:"",eof:!0,base64Encoded:!1}),Promise.resolve(null);let U=G.slice(Y,Y+X),z=Y+X>=G.length;return $.fireResultToTools(Q.id,{data:U,eof:z,base64Encoded:!1}),Promise.resolve(null)}),$.addMessageFilter("tools::IO.close",(Q)=>{return J.delete(String(Q.params?.handle??"")),$.fireResultToTools(Q.id,{}),Promise.resolve(null)}),J}function uZ($){$.addMessageFilter("tools::Accessibility.enable",(J)=>I($,J,{})),$.addMessageFilter("tools::Accessibility.disable",(J)=>I($,J,{})),$.addMessageFilter("tools::Accessibility.getPartialAXTree",async(J)=>{let Q=J.params??{},Z=Q.nodeId??Q.backendNodeId;if(typeof Z!=="number")return $.fireResultToTools(J.id,{nodes:[]}),null;try{let Y=(await $.callTarget("DOM.getAccessibilityPropertiesForNode",{nodeId:Z}))?.properties??{},G={nodeId:String(Z),ignored:Boolean(Y.ignored),role:Y.role?{type:"role",value:String(Y.role)}:void 0,name:Y.label?{type:"computedString",value:String(Y.label)}:void 0,backendDOMNodeId:Z,childIds:[],properties:[]};$.fireResultToTools(J.id,{nodes:[G]})}catch(X){$.fireResultToTools(J.id,{nodes:[]})}return null})}function cZ($){for(let[Q,Z]of Object.entries(pZ))$.addMessageFilter(`tools::${Q}`,(X)=>I($,X,Z));for(let Q of lZ)for(let Z of["enable","disable"])$.addMessageFilter(`tools::${Q}.${Z}`,(X)=>I($,X,{}));let J=[["Autofill.setAddresses",{}],["Storage.getStorageKey",{storageKey:""}],["Storage.trackCacheStorageForOrigin",{}],["Storage.trackIndexedDBForOrigin",{}],["Storage.untrackCacheStorageForOrigin",{}],["Storage.untrackIndexedDBForOrigin",{}],["Storage.getCookies",{cookies:[]}],["ServiceWorker.unregister",{}]];for(let[Q,Z]of J)$.addMessageFilter(`tools::${Q}`,(X)=>I($,X,Z))}function fJ($){let J=eQ();cZ($);let Q=hZ($);$Z($,J),JZ($,J),QZ($,J),XZ($),GZ($),VZ($,J),zZ($),UZ($),_Z($,Q),CZ($),jZ($),yZ($),IZ($),vZ($),uZ($)}function vJ($){let J=`${$.reqHost}/devtools/page/${$.id}`;return{description:$.description,devtoolsFrontendUrl:`devtools://devtools/bundled/inspector.html?ws=${J}`,devtoolsFrontendUrlCompat:`devtools://devtools/bundled/inspector.html?ws=${J}`,id:$.id,title:$.title,type:$.type,url:$.url,webSocketDebuggerUrl:`ws://${J}`,faviconUrl:""}}function G$($){return $.replace(/[&<>"']/g,(J)=>iZ[J])}function bJ($){return kJ.createServer((J,Q)=>{let Z=new URL(J.url??"/","http://placeholder"),X=J.headers.host??"";if(Z.pathname==="/json/version"){let Y=typeof $.version==="function"?$.version(X):$.version;return v$(Q,Y)}if(Z.pathname==="/json"||Z.pathname==="/json/list")return v$(Q,$.listTargets(X));if(Z.pathname==="/json/protocol")return v$(Q,{});if(Z.pathname==="/")return dZ(Q,$,X);Q.writeHead(404,{"content-type":"text/plain"}),Q.end("not found")})}function v$($,J,Q=200){$.writeHead(Q,{"content-type":"application/json; charset=utf-8"}),$.end(JSON.stringify(J))}function dZ($,J,Q){let Z=J.listTargets(Q),X=Z.map((z)=>`<li><strong>${G$(z.title||z.url||z.id)}</strong><br><small>${G$(z.url)}</small><br><small>copy &amp; paste into Chrome's address bar:</small><br><code style="user-select:all">${G$(z.devtoolsFrontendUrl)}</code></li>`).join(""),Y=`inspect-webkit${J.brand?` (${J.brand})`:""}`,G=J.indexNote??'<p>Open <code style="display:inline;padding:1px 4px">chrome://inspect</code> → <em>Configure…</em> → add '+`<code style="display:inline;padding:1px 4px">${G$(Q)}</code>.</p>`,U=`<!doctype html><meta charset=utf-8><title>${G$(Y)}</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>${G$(Y)} — ${Z.length} target${Z.length===1?"":"s"}</h1>`+G+`<ul>${X}</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(U)}function hJ($,J,Q){return new Promise((Z,X)=>{$.once("error",X);let Y=J==="localhost"||J==="::1"||J==="127.0.0.1"?"::":J;$.listen({port:Q,host:Y,ipv6Only:!1},()=>{$.off("error",X),Z()})})}function uJ($){let J=!process.env.NO_COLOR&&process.stderr.isTTY===!0,Q=(z,P)=>J?`\x1B[${z}m${P}\x1B[0m`:P,Z=(z)=>Q("1",z),X=(z)=>Q("2",z),Y=(z)=>Q("36",z),G=(z)=>Q("32",z),U=`http://${$.host}:${$.port}`;console.error(`${G("●")} ${Z(`${$.brand} CDP`)} ${Y(U)}`),console.error(` ${X("chrome")} chrome://inspect → ${$.host}:${$.port}`),console.error(` ${X("vscode")} "type": "chrome", "port": ${$.port}`)}function nZ($,J){let Q=!!process.env.INSPECT_WEBKIT_DEBUG,Z=new Map,X=!1,Y=!1,G=!1,U=new Map,z=null;function P(F){if($.readyState!==1)return;let A=JSON.stringify(F);if(Q)console.error(`[browser] tools<< ${A.slice(0,240)}`);$.send(A)}function O(F,A){let D={method:F,params:A};if(z)D.sessionId=z;P(D)}function N(F,A){return{targetId:F.targetId,type:F.type==="page"?"page":F.type||"other",title:F.title||"",url:F.url||"",attached:A,canAccessOpener:!1,browserContextId:"default"}}function _(F){for(let A of Z.values())if(A.targetId===F)return!0;return!1}function B(F,A){let D=J.listEntries().find((L)=>L.targetId===F);if(!D)return null;let W=crypto.randomUUID(),V=(L)=>{let T;try{T=JSON.parse(L)}catch{return}T.sessionId=W,P(T)},K=J.createPageSession(F,V);if(!K)return null;return Z.set(W,{handle:K,targetId:F}),O("Target.attachedToTarget",{sessionId:W,targetInfo:N(D,!0),waitingForDebugger:A}),{sessionId:W,entry:D}}function M(F){let A=Z.get(F);if(!A)return!1;try{A.handle.close()}catch{}return Z.delete(F),O("Target.detachedFromTarget",{sessionId:F,targetId:A.targetId}),!0}function q(){let F=J.listEntries(),A=new Set;for(let D of F){A.add(D.targetId);let W=U.get(D.targetId);if(!W){if(U.set(D.targetId,D),X)O("Target.targetCreated",{targetInfo:N(D,_(D.targetId))});if(Y&&!_(D.targetId))B(D.targetId,G)}else if(W.title!==D.title||W.url!==D.url){if(U.set(D.targetId,D),X)O("Target.targetInfoChanged",{targetInfo:N(D,_(D.targetId))})}}for(let D of[...U.keys()]){if(A.has(D))continue;U.delete(D);for(let[W,V]of Z)if(V.targetId===D)M(W);if(X)O("Target.targetDestroyed",{targetId:D})}}let j=setInterval(q,J.refreshMs??1000);function C(F,A){if(F)A.sessionId=F;P(A)}function R(F,A){let{id:D,method:W}=F,V=F.params??{};switch(W){case"Browser.getVersion":return C(A,{id:D,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(!z)z=crypto.randomUUID();return C(A,{id:D,result:{sessionId:z}})}case"Target.setDiscoverTargets":{if(X=!!V.discover,X)for(let K of J.listEntries())U.set(K.targetId,K),O("Target.targetCreated",{targetInfo:N(K,_(K.targetId))});if(typeof D==="number")C(A,{id:D,result:{}});return}case"Target.getTargets":{let K=J.listEntries().map((L)=>N(L,_(L.targetId)));return C(A,{id:D,result:{targetInfos:K}})}case"Target.setAutoAttach":{if(Y=!!V.autoAttach,G=!!V.waitForDebuggerOnStart,Y){for(let K of J.listEntries())if(!_(K.targetId))B(K.targetId,G)}if(typeof D==="number")C(A,{id:D,result:{}});return}case"Target.attachToTarget":{for(let[L,T]of Z)if(T.targetId===V.targetId){if(typeof D==="number")C(A,{id:D,result:{sessionId:L}});return}let K=B(V.targetId,!1);if(!K){if(typeof D==="number")C(A,{id:D,error:{code:-32000,message:"No target with given id found"}});return}if(typeof D==="number")C(A,{id:D,result:{sessionId:K.sessionId}});return}case"Target.detachFromTarget":{if(M(V.sessionId),typeof D==="number")C(A,{id:D,result:{}});return}case"Target.sendMessageToTarget":{let K=Z.get(V.sessionId);if(K)K.handle.onMessageFromTools(V.message);if(typeof D==="number")C(A,{id:D,result:{}});return}case"Target.setRemoteLocations":case"Target.exposeDevToolsProtocol":case"Target.activateTarget":case"Target.closeTarget":if(typeof D==="number")C(A,{id:D,result:{}});return;case"Target.getBrowserContexts":{if(typeof D==="number")C(A,{id:D,result:{browserContextIds:["default"]}});return}}if(typeof D==="number")C(A,{id:D,error:{code:-32601,message:`Browser-level method '${W??"?"}' not implemented`}})}$.on("message",(F,A)=>{let D=A?new TextDecoder().decode(F):F.toString();if(Q)console.error(`[browser] tools>> ${D.slice(0,240)}`);let W;try{W=JSON.parse(D)}catch{return}if(typeof W.sessionId==="string"){if(W.sessionId===z){let L={...W};return delete L.sessionId,R(L,W.sessionId)}let V=Z.get(W.sessionId);if(!V){if(typeof W.id==="number")P({id:W.id,sessionId:W.sessionId,error:{code:-32000,message:`Session ${W.sessionId} not found`}});return}let K={...W};delete K.sessionId,V.handle.onMessageFromTools(JSON.stringify(K));return}R(W,void 0)}),$.on("close",()=>{clearInterval(j);for(let[,F]of Z)try{F.handle.close()}catch{}Z.clear()})}async function mZ($={}){let J=$.port??9222,Q=$.host??"localhost",Z=await aZ();if(Z.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 X=new Map,Y=new WeakMap,G=new Map;for(let j of Z)G.set(j,[]),Y.set(j,new Set),j.wi.subscribe((C)=>{let{__selector:R,__argument:F}=C;if(!R||!F)return;if(R==="_rpc_reportConnectedApplicationList:"){let A=F.WIRApplicationDictionaryKey??{},D=Object.entries(A).map(([V,K])=>({appId:V,bundleId:K.WIRApplicationBundleIdentifierKey,name:K.WIRApplicationNameKey??K.WIRApplicationBundleIdentifierKey??V,isProxy:Boolean(K.WIRIsApplicationProxyKey)}));G.set(j,D);let W=Y.get(j);for(let V of D){if(V.isProxy||W.has(V.appId))continue;W.add(V.appId),j.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:V.appId})}}else if(R==="_rpc_applicationConnected:"){let A=F,D=G.get(j)??[];if(!D.find((W)=>W.appId===A.WIRApplicationIdentifierKey))D.push({appId:A.WIRApplicationIdentifierKey,bundleId:A.WIRApplicationBundleIdentifierKey,name:A.WIRApplicationNameKey??A.WIRApplicationBundleIdentifierKey,isProxy:Boolean(A.WIRIsApplicationProxyKey)}),G.set(j,D);if(!A.WIRIsApplicationProxyKey){let W=Y.get(j);if(!W.has(A.WIRApplicationIdentifierKey))W.add(A.WIRApplicationIdentifierKey),j.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:A.WIRApplicationIdentifierKey})}}else if(R==="_rpc_applicationDisconnected:"){let A=G.get(j)??[];G.set(j,A.filter((D)=>D.appId!==F.WIRApplicationIdentifierKey)),X.delete(`${j.id}:${F.WIRApplicationIdentifierKey}`)}else if(R==="_rpc_applicationSentListing:"){let A=F.WIRApplicationIdentifierKey,D=F.WIRListingKey??{},W=new Map;for(let[V,K]of Object.entries(D))W.set(V,{pageId:Number(K.WIRPageIdentifierKey??0),title:K.WIRTitleKey??"",url:K.WIRURLKey??"",type:K.WIRTypeKey??""});X.set(`${j.id}:${A}`,W)}}),j.wi.send("_rpc_reportIdentifier:",{}),j.wi.send("_rpc_getConnectedApplications:",{});let U=setInterval(()=>{for(let j of Z){let C=G.get(j)??[];for(let R of C){if(R.isProxy)continue;j.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:R.appId})}}},gZ),z=new Map;function P(){let j=[];for(let C of Z){let R=G.get(C)??[];for(let F of R){if(F.isProxy)continue;let A=X.get(`${C.id}:${F.appId}`);if(!A)continue;for(let D of A.values())j.push({targetId:`${C.id}:${F.appId}:${D.pageId}`,source:C,appId:F.appId,appName:F.name,bundleId:F.bundleId,pageId:D.pageId,title:D.title,url:D.url,type:D.type})}}return j}let O=crypto.randomUUID(),N=bJ({brand:"",version:(j)=>({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://${j}/devtools/browser/${O}`}),listTargets:(j)=>P().map((C)=>vJ({reqHost:j,id:C.targetId,description:`${C.source.label}${C.bundleId?` (${C.bundleId})`:""}`,title:C.title||C.appName,url:/^https?:/i.test(C.url)?C.url:"about:blank",type:RJ(C.type)}))}),_=new yJ.default({noServer:!0}),B=`/devtools/browser/${O}`;N.on("upgrade",(j,C,R)=>{let F=new URL(j.url??"/","http://placeholder");if(console.error(`# ws upgrade: ${F.pathname}`),F.pathname===B){_.handleUpgrade(j,C,R,(D)=>{nZ(D,{listEntries:()=>P().map((W)=>({targetId:W.targetId,type:RJ(W.type),title:W.title||W.appName,url:W.url})),createPageSession:(W,V)=>{let K=P().find((L)=>L.targetId===W);if(!K)return null;return M(K,V)}})});return}if(!F.pathname.startsWith("/devtools/page/")){console.error(`# ws upgrade rejected: unknown path ${F.pathname}`),C.destroy();return}let A=decodeURIComponent(F.pathname.slice(15));_.handleUpgrade(j,C,R,(D)=>{q(D,A)})});function M(j,C){let R=crypto.randomUUID(),A=new a$({readyState:1,send:(V)=>C(V)},j.source.wi,j.appId,j.pageId,R);fJ(A),z.set(R,A);let D=!!process.env.INSPECT_WEBKIT_DEBUG,W=j.source.wi.subscribe((V)=>{if(V.__selector!=="_rpc_applicationSentData:")return;let K=V.__argument;if(!K)return;if(K.WIRDestinationKey&&K.WIRDestinationKey!==R)return;if(K.WIRApplicationIdentifierKey!==j.appId)return;if(K.WIRPageIdentifierKey!==void 0&&Number(K.WIRPageIdentifierKey)!==j.pageId)return;let L=K.WIRMessageDataKey??K.WIRSocketDataKey;if(!L)return;let T=typeof L==="string"?L:new TextDecoder().decode(L);if(D)console.error(`[cdp] target>> ${T.slice(0,240)}`);A.onMessageFromTarget(T)});return j.source.wi.forwardSocketSetup(j.appId,j.pageId,R),console.error(`# devtools attached: ${j.source.label} :: ${j.appName} :: ${j.title||j.url}`),{onMessageFromTools(V){if(D)console.error(`[cdp] tools>> ${V.slice(0,300)}`);A.onMessageFromTools(V)},close(){W();try{A.wi.forwardDidClose(A.appId,A.pageId,A.senderKey)}catch{}z.delete(A.senderKey)}}}function q(j,C){let R=P().find((A)=>A.targetId===C);if(!R){console.error(`# ws closed: unknown target ${C} (known: ${P().map((A)=>A.targetId).join(", ")||"none"})`),j.close(1011,`unknown target ${C}`);return}let F=M(R,(A)=>{if(j.readyState===1)j.send(A)});j.on("message",(A,D)=>{let W=D?new TextDecoder().decode(A):A.toString();F.onMessageFromTools(W)}),j.on("close",()=>F.close())}return await hJ(N,Q,J),uJ({brand:"safari",host:Q,port:J}),{stop(){clearInterval(U),_.close(),N.close();for(let j of Z)try{j.wi.close(),j.lockdown?.close()}catch{}},getTargets(){return P()}}}async function aZ(){let[$,J]=await Promise.all([oZ(),tZ()]);return[...$,...J]}async function oZ(){let $=[];try{$=await EJ()}catch(Q){return console.error(`warn: usbmux: ${Q.message}`),[]}return(await Promise.all($.map(rZ))).filter((Q)=>Q!==null)}async function rZ($){try{let J=await BJ($.Properties.SerialNumber),Q=await _$.open($,J);await Q.startSession();let Z=await Q.startService("com.apple.webinspector"),{socket:X,stream:Y}=await Q.connectService(Z),G=new L$(X,Y);return await G.reportIdentifier(),{kind:"device",id:`device:${$.Properties.SerialNumber}`,label:`device:${$.Properties.SerialNumber.slice(0,8)}`,wi:G,lockdown:Q}}catch(J){return console.error(`warn: device ${$.Properties.SerialNumber}: ${J.message}`),null}}async function tZ(){let $=[];try{$=await qJ()}catch(Q){return console.error(`warn: simulator discovery: ${Q.message}`),[]}return(await Promise.all($.map(sZ))).filter((Q)=>Q!==null)}async function sZ($){try{let{socket:J,stream:Q}=await xJ($.socketPath),Z=new L$(J,Q);return await Z.reportIdentifier(),{kind:"simulator",id:`sim:${$.pid}`,label:`sim:${$.pid}`,wi:Z}}catch(J){return console.error(`warn: simulator ${$.socketPath}: ${J.message}`),null}}function RJ($){switch($){case"WIRTypeServiceWorker":return"service_worker";case"WIRTypeWorker":case"WIRTypeJavaScript":return"worker";default:return"page"}}class lJ{url;ws;handlers=new Set;openPromise;constructor($){this.url=$,this.ws=new PJ($),this.ws.binaryType="nodebuffer",this.openPromise=new Promise((J,Q)=>{this.ws.once("open",()=>J()),this.ws.once("error",(Z)=>Q(Z))}),this.ws.on("message",(J,Q)=>{let Z=Q?new TextDecoder().decode(J):J.toString();for(let X of this.handlers)X(Z)})}ready(){return this.openPromise}onFrame($){return this.handlers.add($),()=>this.handlers.delete($)}forwardSocketData($,J,Q,Z){if(this.ws.readyState!==PJ.OPEN)return;this.ws.send(new TextDecoder().decode(Z))}forwardDidClose($,J,Q){}close(){try{this.ws.close()}catch{}}}async function eZ($){let J=$.port??9223,Q=$.host??"localhost",{upstreams:Z}=$,X=bJ({brand:"bun",version:{Browser:"Bun/inspect-webkit","Protocol-Version":"1.3","User-Agent":"Bun (via inspect-webkit)","WebKit-Version":"605.1.15"},listTargets:(U)=>Z.map((z)=>vJ({reqHost:U,id:encodeURIComponent(z.url),description:z.label??"bun",title:z.label??z.url,url:z.url,type:"node"}))}),Y=new yJ.default({noServer:!0});X.on("upgrade",(U,z,P)=>{let O=new URL(U.url??"/","http://placeholder");if(!O.pathname.startsWith("/devtools/page/")){z.destroy();return}let N=decodeURIComponent(O.pathname.slice(15)),_=Z.find((B)=>B.url===N);if(!_){z.destroy();return}Y.handleUpgrade(U,z,P,(B)=>{G(B,_).catch((M)=>{console.error(`# bun attach failed: ${M.message}`);try{B.close(1011,M.message)}catch{}})})});async function G(U,z){let P=!!process.env.INSPECT_WEBKIT_DEBUG,O=new lJ(z.url);await O.ready();let N=crypto.randomUUID(),_=new a$(U,O,"bun",0,N);fJ(_);let B=O.onFrame((M)=>{if(P)console.error(`[bun] target>> ${M.slice(0,240)}`);_.onMessageFromTarget(M)});U.on("message",(M,q)=>{let j=q?new TextDecoder().decode(M):M.toString();if(P)console.error(`[bun] tools>> ${j.slice(0,300)}`);_.onMessageFromTools(j)}),U.on("close",()=>{B(),O.close()}),console.error(`# devtools attached: ${z.label??z.url}`)}return await hJ(X,Q,J),uJ({brand:"bun",host:Q,port:J}),{stop(){Y.close(),X.close()},getTargets(){return Z.slice()}}}async function pJ(){return EJ()}async function $0(){let[$,J]=await Promise.all([J0(),Q0()]);return[...$.flat(),...J.flat()]}async function J0(){let $=await pJ();return Promise.all($.map(Z0))}async function Q0(){let $=await qJ();return Promise.all($.map(Y0))}async function Z0($){let J=null;try{return J=await X0($),await cJ(J.client,{source:"device",udid:$.Properties.SerialNumber,deviceID:$.DeviceID})}catch(Q){return console.error(`warn: ${$.Properties.SerialNumber}: ${Q.message}`),[]}finally{J?.client.close(),J?.lockdown.close()}}async function Y0($){let J=null;try{let{socket:Q,stream:Z}=await xJ($.socketPath);return J=new L$(Q,Z),await J.reportIdentifier(),await cJ(J,{source:"simulator",udid:`sim:${$.pid}`})}catch(Q){return console.error(`warn: simulator (${$.socketPath}): ${Q.message}`),[]}finally{J?.close()}}async function X0($){let J=await BJ($.Properties.SerialNumber),Q=await _$.open($,J);await Q.startSession();let Z=await Q.startService("com.apple.webinspector"),{socket:X,stream:Y}=await Q.connectService(Z),G=new L$(X,Y);return await G.reportIdentifier(),{client:G,lockdown:Q}}async function cJ($,J){let Q=(await $.listApplications()).filter((Y)=>!Y.isProxy),Z=await Promise.all(Q.map((Y)=>$.getListing(Y.appId))),X=[];for(let Y=0;Y<Q.length;Y++){let G=Q[Y];for(let U of Z[Y])X.push({...J,appId:G.appId,appName:G.name??G.bundleId??G.appId,bundleId:G.bundleId,pageId:U.pageId,title:U.title,url:U.url,type:U.type})}return X}var BQ,TQ,NJ,qQ,xQ,yQ,wQ,r=($,J,Q)=>{var Z=$!=null&&typeof $==="object";if(Z){var X=J?yQ??=new WeakMap:wQ??=new WeakMap,Y=X.get($);if(Y)return Y}Q=$!=null?BQ(TQ($)):{};let G=J||!$||!$.__esModule?NJ(Q,"default",{value:$,enumerable:!0}):Q;for(let U of qQ($))if(!xQ.call(G,U))NJ(G,U,{get:SQ.bind($,U),enumerable:!0});if(Z)X.set($,G);return G},g=($,J)=>()=>(J||$((J={exports:{}}).exports,J),J.exports),i,t,P$,IQ,A$,F$,OJ,_J,fQ,c$,i$,kQ,CJ,vQ,bQ=`<?xml version="1.0" encoding="UTF-8"?>
11
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
12
+ <plist version="1.0">
13
+ `,hQ=`
14
+ </plist>
15
+ `,iQ=1,dQ=8,nQ="/var/run/usbmuxd",LJ=62078,m=(...$)=>{if(process.env.INSPECT_WEBKIT_DEBUG)console.error("[lockdown]",...$)},k0,v0,b0,h0,u0,l0,sQ,yJ,PJ,WZ,HZ,KZ,NZ,AZ,FZ,LZ,MZ=($,J)=>!!$&&!!J&&$.startLine===J.startLine&&$.endLine===J.endLine&&$.startColumn===J.startColumn&&$.endColumn===J.endColumn,BZ=($)=>$&&{name:$.name,value:$.value,text:$.text,implicit:$.implicit,parsedOk:$.parsedOk!==!1,important:!!$.priority,disabled:$.status==="disabled",range:$.range},$$=($)=>$&&{styleSheetId:$.styleId?.styleSheetId,cssText:$.cssText,range:$.range,shorthandEntries:$.shorthandEntries??[],cssProperties:Array.isArray($.cssProperties)?$.cssProperties.map(BZ):[]},TZ,qZ=($)=>$&&{text:$.text,selectors:Array.isArray($.selectors)?$.selectors.map((J)=>({text:J.text,range:J.range??$.range})):[]},o$=($)=>Array.isArray($)?$.map((J)=>({matchingSelectors:J.matchingSelectors,rule:p$(J.rule)})):[],xZ=($)=>Array.isArray($)?$.map((J)=>({pseudoType:J.pseudoId,matches:o$(J.matches)})):[],SZ=($)=>Array.isArray($)?$.map((J)=>({inlineStyle:$$(J.inlineStyle),matchedCSSRules:o$(J.matchedCSSRules)})):[],wZ,fZ=`
16
+ function __sd_simulate(p){
17
+ var el = document.elementFromPoint(p.x, p.y);
18
+ if (!el) return false;
19
+ var ev = new MouseEvent(p.type, {
20
+ screenX: p.x, screenY: p.y, clientX: p.x, clientY: p.y,
21
+ ctrlKey: (p.modifiers & 2) === 2,
22
+ altKey: (p.modifiers & 1) === 1,
23
+ shiftKey: (p.modifiers & 8) === 8,
24
+ metaKey: (p.modifiers & 4) === 4,
25
+ button: p.button === "left" ? 0 : p.button === "middle" ? 1 : p.button === "right" ? 2 : 0,
26
+ bubbles: true, cancelable: true,
27
+ });
28
+ el.dispatchEvent(ev);
29
+ return true;
30
+ }`,bZ=65536,lZ,pZ,iZ,gZ=1500;var dJ=VQ(()=>{BQ=Object.create,TQ=Object.getPrototypeOf,NJ=Object.defineProperty,qQ=Object.getOwnPropertyNames,xQ=Object.prototype.hasOwnProperty;i=EQ(import.meta.url),t=g(($,J)=>{var Q=["nodebuffer","arraybuffer","fragments"],Z=typeof Blob<"u";if(Z)Q.push("blob");J.exports={BINARY_TYPES:Q,CLOSE_TIMEOUT:30000,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Z,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}}),P$=g(($,J)=>{var{EMPTY_BUFFER:Q}=t(),Z=Buffer[Symbol.species];function X(P,O){if(P.length===0)return Q;if(P.length===1)return P[0];let N=Buffer.allocUnsafe(O),_=0;for(let B=0;B<P.length;B++){let M=P[B];N.set(M,_),_+=M.length}if(_<O)return new Z(N.buffer,N.byteOffset,_);return N}function Y(P,O,N,_,B){for(let M=0;M<B;M++)N[_+M]=P[M]^O[M&3]}function G(P,O){for(let N=0;N<P.length;N++)P[N]^=O[N&3]}function U(P){if(P.length===P.buffer.byteLength)return P.buffer;return P.buffer.slice(P.byteOffset,P.byteOffset+P.length)}function z(P){if(z.readOnly=!0,Buffer.isBuffer(P))return P;let O;if(P instanceof ArrayBuffer)O=new Z(P);else if(ArrayBuffer.isView(P))O=new Z(P.buffer,P.byteOffset,P.byteLength);else O=Buffer.from(P),z.readOnly=!1;return O}if(J.exports={concat:X,mask:Y,toArrayBuffer:U,toBuffer:z,unmask:G},!process.env.WS_NO_BUFFER_UTIL)try{let P=(()=>{throw Error("Cannot require module bufferutil")})();J.exports.mask=function(O,N,_,B,M){if(M<48)Y(O,N,_,B,M);else P.mask(O,N,_,B,M)},J.exports.unmask=function(O,N){if(O.length<32)G(O,N);else P.unmask(O,N)}}catch(P){}}),IQ=g(($,J)=>{var Q=Symbol("kDone"),Z=Symbol("kRun");class X{constructor(Y){this[Q]=()=>{this.pending--,this[Z]()},this.concurrency=Y||1/0,this.jobs=[],this.pending=0}add(Y){this.jobs.push(Y),this[Z]()}[Z](){if(this.pending===this.concurrency)return;if(this.jobs.length){let Y=this.jobs.shift();this.pending++,Y(this[Q])}}}J.exports=X}),A$=g(($,J)=>{var Q=i("zlib"),Z=P$(),X=IQ(),{kStatusCode:Y}=t(),G=Buffer[Symbol.species],U=Buffer.from([0,0,255,255]),z=Symbol("permessage-deflate"),P=Symbol("total-length"),O=Symbol("callback"),N=Symbol("buffers"),_=Symbol("error"),B;class M{constructor(R){if(this._options=R||{},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,!B){let F=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;B=new X(F)}}static get extensionName(){return"permessage-deflate"}offer(){let R={};if(this._options.serverNoContextTakeover)R.server_no_context_takeover=!0;if(this._options.clientNoContextTakeover)R.client_no_context_takeover=!0;if(this._options.serverMaxWindowBits)R.server_max_window_bits=this._options.serverMaxWindowBits;if(this._options.clientMaxWindowBits)R.client_max_window_bits=this._options.clientMaxWindowBits;else if(this._options.clientMaxWindowBits==null)R.client_max_window_bits=!0;return R}accept(R){return R=this.normalizeParams(R),this.params=this._isServer?this.acceptAsServer(R):this.acceptAsClient(R),this.params}cleanup(){if(this._inflate)this._inflate.close(),this._inflate=null;if(this._deflate){let R=this._deflate[O];if(this._deflate.close(),this._deflate=null,R)R(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(R){let F=this._options,A=R.find((D)=>{if(F.serverNoContextTakeover===!1&&D.server_no_context_takeover||D.server_max_window_bits&&(F.serverMaxWindowBits===!1||typeof F.serverMaxWindowBits==="number"&&F.serverMaxWindowBits>D.server_max_window_bits)||typeof F.clientMaxWindowBits==="number"&&!D.client_max_window_bits)return!1;return!0});if(!A)throw Error("None of the extension offers can be accepted");if(F.serverNoContextTakeover)A.server_no_context_takeover=!0;if(F.clientNoContextTakeover)A.client_no_context_takeover=!0;if(typeof F.serverMaxWindowBits==="number")A.server_max_window_bits=F.serverMaxWindowBits;if(typeof F.clientMaxWindowBits==="number")A.client_max_window_bits=F.clientMaxWindowBits;else if(A.client_max_window_bits===!0||F.clientMaxWindowBits===!1)delete A.client_max_window_bits;return A}acceptAsClient(R){let F=R[0];if(this._options.clientNoContextTakeover===!1&&F.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(!F.client_max_window_bits){if(typeof this._options.clientMaxWindowBits==="number")F.client_max_window_bits=this._options.clientMaxWindowBits}else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==="number"&&F.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"');return F}normalizeParams(R){return R.forEach((F)=>{Object.keys(F).forEach((A)=>{let D=F[A];if(D.length>1)throw Error(`Parameter "${A}" must have only a single value`);if(D=D[0],A==="client_max_window_bits"){if(D!==!0){let W=+D;if(!Number.isInteger(W)||W<8||W>15)throw TypeError(`Invalid value for parameter "${A}": ${D}`);D=W}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${A}": ${D}`)}else if(A==="server_max_window_bits"){let W=+D;if(!Number.isInteger(W)||W<8||W>15)throw TypeError(`Invalid value for parameter "${A}": ${D}`);D=W}else if(A==="client_no_context_takeover"||A==="server_no_context_takeover"){if(D!==!0)throw TypeError(`Invalid value for parameter "${A}": ${D}`)}else throw Error(`Unknown parameter "${A}"`);F[A]=D})}),R}decompress(R,F,A){B.add((D)=>{this._decompress(R,F,(W,V)=>{D(),A(W,V)})})}compress(R,F,A){B.add((D)=>{this._compress(R,F,(W,V)=>{D(),A(W,V)})})}_decompress(R,F,A){let D=this._isServer?"client":"server";if(!this._inflate){let W=`${D}_max_window_bits`,V=typeof this.params[W]!=="number"?Q.Z_DEFAULT_WINDOWBITS:this.params[W];this._inflate=Q.createInflateRaw({...this._options.zlibInflateOptions,windowBits:V}),this._inflate[z]=this,this._inflate[P]=0,this._inflate[N]=[],this._inflate.on("error",C),this._inflate.on("data",j)}if(this._inflate[O]=A,this._inflate.write(R),F)this._inflate.write(U);this._inflate.flush(()=>{let W=this._inflate[_];if(W){this._inflate.close(),this._inflate=null,A(W);return}let V=Z.concat(this._inflate[N],this._inflate[P]);if(this._inflate._readableState.endEmitted)this._inflate.close(),this._inflate=null;else if(this._inflate[P]=0,this._inflate[N]=[],F&&this.params[`${D}_no_context_takeover`])this._inflate.reset();A(null,V)})}_compress(R,F,A){let D=this._isServer?"server":"client";if(!this._deflate){let W=`${D}_max_window_bits`,V=typeof this.params[W]!=="number"?Q.Z_DEFAULT_WINDOWBITS:this.params[W];this._deflate=Q.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:V}),this._deflate[P]=0,this._deflate[N]=[],this._deflate.on("data",q)}this._deflate[O]=A,this._deflate.write(R),this._deflate.flush(Q.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let W=Z.concat(this._deflate[N],this._deflate[P]);if(F)W=new G(W.buffer,W.byteOffset,W.length-4);if(this._deflate[O]=null,this._deflate[P]=0,this._deflate[N]=[],F&&this.params[`${D}_no_context_takeover`])this._deflate.reset();A(null,W)})}}J.exports=M;function q(R){this[N].push(R),this[P]+=R.length}function j(R){if(this[P]+=R.length,this[z]._maxPayload<1||this[P]<=this[z]._maxPayload){this[N].push(R);return}this[_]=RangeError("Max payload size exceeded"),this[_].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[_][Y]=1009,this.removeListener("data",j),this.reset()}function C(R){if(this[z]._inflate=null,this[_]){this[O](this[_]);return}R[Y]=1007,this[O](R)}}),F$=g(($,J)=>{var{isUtf8:Q}=i("buffer"),{hasBlob:Z}=t(),X=[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 Y(z){return z>=1000&&z<=1014&&z!==1004&&z!==1005&&z!==1006||z>=3000&&z<=4999}function G(z){let P=z.length,O=0;while(O<P)if((z[O]&128)===0)O++;else if((z[O]&224)===192){if(O+1===P||(z[O+1]&192)!==128||(z[O]&254)===192)return!1;O+=2}else if((z[O]&240)===224){if(O+2>=P||(z[O+1]&192)!==128||(z[O+2]&192)!==128||z[O]===224&&(z[O+1]&224)===128||z[O]===237&&(z[O+1]&224)===160)return!1;O+=3}else if((z[O]&248)===240){if(O+3>=P||(z[O+1]&192)!==128||(z[O+2]&192)!==128||(z[O+3]&192)!==128||z[O]===240&&(z[O+1]&240)===128||z[O]===244&&z[O+1]>143||z[O]>244)return!1;O+=4}else return!1;return!0}function U(z){return Z&&typeof z==="object"&&typeof z.arrayBuffer==="function"&&typeof z.type==="string"&&typeof z.stream==="function"&&(z[Symbol.toStringTag]==="Blob"||z[Symbol.toStringTag]==="File")}if(J.exports={isBlob:U,isValidStatusCode:Y,isValidUTF8:G,tokenChars:X},Q)J.exports.isValidUTF8=function(z){return z.length<24?G(z):Q(z)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let z=(()=>{throw Error("Cannot require module utf-8-validate")})();J.exports.isValidUTF8=function(P){return P.length<32?G(P):z(P)}}catch(z){}}),OJ=g(($,J)=>{var{Writable:Q}=i("stream"),Z=A$(),{BINARY_TYPES:X,EMPTY_BUFFER:Y,kStatusCode:G,kWebSocket:U}=t(),{concat:z,toArrayBuffer:P,unmask:O}=P$(),{isValidStatusCode:N,isValidUTF8:_}=F$(),B=Buffer[Symbol.species],M=0,q=1,j=2,C=3,R=4,F=5,A=6;class D extends Q{constructor(W={}){super();this._allowSynchronousEvents=W.allowSynchronousEvents!==void 0?W.allowSynchronousEvents:!0,this._binaryType=W.binaryType||X[0],this._extensions=W.extensions||{},this._isServer=!!W.isServer,this._maxPayload=W.maxPayload|0,this._skipUTF8Validation=!!W.skipUTF8Validation,this[U]=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=M}_write(W,V,K){if(this._opcode===8&&this._state==M)return K();this._bufferedBytes+=W.length,this._buffers.push(W),this.startLoop(K)}consume(W){if(this._bufferedBytes-=W,W===this._buffers[0].length)return this._buffers.shift();if(W<this._buffers[0].length){let K=this._buffers[0];return this._buffers[0]=new B(K.buffer,K.byteOffset+W,K.length-W),new B(K.buffer,K.byteOffset,W)}let V=Buffer.allocUnsafe(W);do{let K=this._buffers[0],L=V.length-W;if(W>=K.length)V.set(this._buffers.shift(),L);else V.set(new Uint8Array(K.buffer,K.byteOffset,W),L),this._buffers[0]=new B(K.buffer,K.byteOffset+W,K.length-W);W-=K.length}while(W>0);return V}startLoop(W){this._loop=!0;do switch(this._state){case M:this.getInfo(W);break;case q:this.getPayloadLength16(W);break;case j:this.getPayloadLength64(W);break;case C:this.getMask();break;case R:this.getData(W);break;case F:case A:this._loop=!1;return}while(this._loop);if(!this._errored)W()}getInfo(W){if(this._bufferedBytes<2){this._loop=!1;return}let V=this.consume(2);if((V[0]&48)!==0){let L=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");W(L);return}let K=(V[0]&64)===64;if(K&&!this._extensions[Z.extensionName]){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");W(L);return}if(this._fin=(V[0]&128)===128,this._opcode=V[0]&15,this._payloadLength=V[1]&127,this._opcode===0){if(K){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");W(L);return}if(!this._fragmented){let L=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");W(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");W(L);return}this._compressed=K}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");W(L);return}if(K){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");W(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");W(L);return}}else{let L=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");W(L);return}if(!this._fin&&!this._fragmented)this._fragmented=this._opcode;if(this._masked=(V[1]&128)===128,this._isServer){if(!this._masked){let L=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");W(L);return}}else if(this._masked){let L=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");W(L);return}if(this._payloadLength===126)this._state=q;else if(this._payloadLength===127)this._state=j;else this.haveLength(W)}getPayloadLength16(W){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(W)}getPayloadLength64(W){if(this._bufferedBytes<8){this._loop=!1;return}let V=this.consume(8),K=V.readUInt32BE(0);if(K>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");W(L);return}this._payloadLength=K*Math.pow(2,32)+V.readUInt32BE(4),this.haveLength(W)}haveLength(W){if(this._payloadLength&&this._opcode<8){if(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0){let V=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");W(V);return}}if(this._masked)this._state=C;else this._state=R}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=R}getData(W){let V=Y;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}if(V=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0)O(V,this._mask)}if(this._opcode>7){this.controlMessage(V,W);return}if(this._compressed){this._state=F,this.decompress(V,W);return}if(V.length)this._messageLength=this._totalPayloadLength,this._fragments.push(V);this.dataMessage(W)}decompress(W,V){this._extensions[Z.extensionName].decompress(W,this._fin,(L,T)=>{if(L)return V(L);if(T.length){if(this._messageLength+=T.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let x=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");V(x);return}this._fragments.push(T)}if(this.dataMessage(V),this._state===M)this.startLoop(V)})}dataMessage(W){if(!this._fin){this._state=M;return}let V=this._messageLength,K=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let L;if(this._binaryType==="nodebuffer")L=z(K,V);else if(this._binaryType==="arraybuffer")L=P(z(K,V));else if(this._binaryType==="blob")L=new Blob(K);else L=K;if(this._allowSynchronousEvents)this.emit("message",L,!0),this._state=M;else this._state=A,setImmediate(()=>{this.emit("message",L,!0),this._state=M,this.startLoop(W)})}else{let L=z(K,V);if(!this._skipUTF8Validation&&!_(L)){let T=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");W(T);return}if(this._state===F||this._allowSynchronousEvents)this.emit("message",L,!1),this._state=M;else this._state=A,setImmediate(()=>{this.emit("message",L,!1),this._state=M,this.startLoop(W)})}}controlMessage(W,V){if(this._opcode===8){if(W.length===0)this._loop=!1,this.emit("conclude",1005,Y),this.end();else{let K=W.readUInt16BE(0);if(!N(K)){let T=this.createError(RangeError,`invalid status code ${K}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");V(T);return}let L=new B(W.buffer,W.byteOffset+2,W.length-2);if(!this._skipUTF8Validation&&!_(L)){let T=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");V(T);return}this._loop=!1,this.emit("conclude",K,L),this.end()}this._state=M;return}if(this._allowSynchronousEvents)this.emit(this._opcode===9?"ping":"pong",W),this._state=M;else this._state=A,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",W),this._state=M,this.startLoop(V)})}createError(W,V,K,L,T){this._loop=!1,this._errored=!0;let x=new W(K?`Invalid WebSocket frame: ${V}`:V);return Error.captureStackTrace(x,this.createError),x.code=T,x[G]=L,x}}J.exports=D}),_J=g(($,J)=>{var{Duplex:Q}=i("stream"),{randomFillSync:Z}=i("crypto"),X=A$(),{EMPTY_BUFFER:Y,kWebSocket:G,NOOP:U}=t(),{isBlob:z,isValidStatusCode:P}=F$(),{mask:O,toBuffer:N}=P$(),_=Symbol("kByteLength"),B=Buffer.alloc(4),M=8192,q,j=M,C=0,R=1,F=2;class A{constructor(V,K,L){if(this._extensions=K||{},L)this._generateMask=L,this._maskBuffer=Buffer.alloc(4);this._socket=V,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=C,this.onerror=U,this[G]=void 0}static frame(V,K){let L,T=!1,x=2,f=!1;if(K.mask){if(L=K.maskBuffer||B,K.generateMask)K.generateMask(L);else{if(j===M){if(q===void 0)q=Buffer.alloc(M);Z(q,0,M),j=0}L[0]=q[j++],L[1]=q[j++],L[2]=q[j++],L[3]=q[j++]}f=(L[0]|L[1]|L[2]|L[3])===0,x=6}let k;if(typeof V==="string")if((!K.mask||f)&&K[_]!==void 0)k=K[_];else V=Buffer.from(V),k=V.length;else k=V.length,T=K.mask&&K.readOnly&&!f;let p=k;if(k>=65536)x+=8,p=127;else if(k>125)x+=2,p=126;let v=Buffer.allocUnsafe(T?k+x:x);if(v[0]=K.fin?K.opcode|128:K.opcode,K.rsv1)v[0]|=64;if(v[1]=p,p===126)v.writeUInt16BE(k,2);else if(p===127)v[2]=v[3]=0,v.writeUIntBE(k,4,6);if(!K.mask)return[v,V];if(v[1]|=128,v[x-4]=L[0],v[x-3]=L[1],v[x-2]=L[2],v[x-1]=L[3],f)return[v,V];if(T)return O(V,L,v,x,k),[v];return O(V,L,V,0,k),[v,V]}close(V,K,L,T){let x;if(V===void 0)x=Y;else if(typeof V!=="number"||!P(V))throw TypeError("First argument must be a valid error code number");else if(K===void 0||!K.length)x=Buffer.allocUnsafe(2),x.writeUInt16BE(V,0);else{let k=Buffer.byteLength(K);if(k>123)throw RangeError("The message must not be greater than 123 bytes");if(x=Buffer.allocUnsafe(2+k),x.writeUInt16BE(V,0),typeof K==="string")x.write(K,2);else x.set(K,2)}let f={[_]:x.length,fin:!0,generateMask:this._generateMask,mask:L,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};if(this._state!==C)this.enqueue([this.dispatch,x,!1,f,T]);else this.sendFrame(A.frame(x,f),T)}ping(V,K,L){let T,x;if(typeof V==="string")T=Buffer.byteLength(V),x=!1;else if(z(V))T=V.size,x=!1;else V=N(V),T=V.length,x=N.readOnly;if(T>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[_]:T,fin:!0,generateMask:this._generateMask,mask:K,maskBuffer:this._maskBuffer,opcode:9,readOnly:x,rsv1:!1};if(z(V))if(this._state!==C)this.enqueue([this.getBlobData,V,!1,f,L]);else this.getBlobData(V,!1,f,L);else if(this._state!==C)this.enqueue([this.dispatch,V,!1,f,L]);else this.sendFrame(A.frame(V,f),L)}pong(V,K,L){let T,x;if(typeof V==="string")T=Buffer.byteLength(V),x=!1;else if(z(V))T=V.size,x=!1;else V=N(V),T=V.length,x=N.readOnly;if(T>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[_]:T,fin:!0,generateMask:this._generateMask,mask:K,maskBuffer:this._maskBuffer,opcode:10,readOnly:x,rsv1:!1};if(z(V))if(this._state!==C)this.enqueue([this.getBlobData,V,!1,f,L]);else this.getBlobData(V,!1,f,L);else if(this._state!==C)this.enqueue([this.dispatch,V,!1,f,L]);else this.sendFrame(A.frame(V,f),L)}send(V,K,L){let T=this._extensions[X.extensionName],x=K.binary?2:1,f=K.compress,k,p;if(typeof V==="string")k=Buffer.byteLength(V),p=!1;else if(z(V))k=V.size,p=!1;else V=N(V),k=V.length,p=N.readOnly;if(this._firstFragment){if(this._firstFragment=!1,f&&T&&T.params[T._isServer?"server_no_context_takeover":"client_no_context_takeover"])f=k>=T._threshold;this._compress=f}else f=!1,x=0;if(K.fin)this._firstFragment=!0;let v={[_]:k,fin:K.fin,generateMask:this._generateMask,mask:K.mask,maskBuffer:this._maskBuffer,opcode:x,readOnly:p,rsv1:f};if(z(V))if(this._state!==C)this.enqueue([this.getBlobData,V,this._compress,v,L]);else this.getBlobData(V,this._compress,v,L);else if(this._state!==C)this.enqueue([this.dispatch,V,this._compress,v,L]);else this.dispatch(V,this._compress,v,L)}getBlobData(V,K,L,T){this._bufferedBytes+=L[_],this._state=F,V.arrayBuffer().then((x)=>{if(this._socket.destroyed){let k=Error("The socket was closed while the blob was being read");process.nextTick(D,this,k,T);return}this._bufferedBytes-=L[_];let f=N(x);if(!K)this._state=C,this.sendFrame(A.frame(f,L),T),this.dequeue();else this.dispatch(f,K,L,T)}).catch((x)=>{process.nextTick(W,this,x,T)})}dispatch(V,K,L,T){if(!K){this.sendFrame(A.frame(V,L),T);return}let x=this._extensions[X.extensionName];this._bufferedBytes+=L[_],this._state=R,x.compress(V,L.fin,(f,k)=>{if(this._socket.destroyed){let p=Error("The socket was closed while data was being compressed");D(this,p,T);return}this._bufferedBytes-=L[_],this._state=C,L.readOnly=!1,this.sendFrame(A.frame(k,L),T),this.dequeue()})}dequeue(){while(this._state===C&&this._queue.length){let V=this._queue.shift();this._bufferedBytes-=V[3][_],Reflect.apply(V[0],this,V.slice(1))}}enqueue(V){this._bufferedBytes+=V[3][_],this._queue.push(V)}sendFrame(V,K){if(V.length===2)this._socket.cork(),this._socket.write(V[0]),this._socket.write(V[1],K),this._socket.uncork();else this._socket.write(V[0],K)}}J.exports=A;function D(V,K,L){if(typeof L==="function")L(K);for(let T=0;T<V._queue.length;T++){let x=V._queue[T],f=x[x.length-1];if(typeof f==="function")f(K)}}function W(V,K,L){D(V,K,L),V.onerror(K)}}),fQ=g(($,J)=>{var{kForOnEventAttribute:Q,kListener:Z}=t(),X=Symbol("kCode"),Y=Symbol("kData"),G=Symbol("kError"),U=Symbol("kMessage"),z=Symbol("kReason"),P=Symbol("kTarget"),O=Symbol("kType"),N=Symbol("kWasClean");class _{constructor(R){this[P]=null,this[O]=R}get target(){return this[P]}get type(){return this[O]}}Object.defineProperty(_.prototype,"target",{enumerable:!0}),Object.defineProperty(_.prototype,"type",{enumerable:!0});class B extends _{constructor(R,F={}){super(R);this[X]=F.code===void 0?0:F.code,this[z]=F.reason===void 0?"":F.reason,this[N]=F.wasClean===void 0?!1:F.wasClean}get code(){return this[X]}get reason(){return this[z]}get wasClean(){return this[N]}}Object.defineProperty(B.prototype,"code",{enumerable:!0}),Object.defineProperty(B.prototype,"reason",{enumerable:!0}),Object.defineProperty(B.prototype,"wasClean",{enumerable:!0});class M extends _{constructor(R,F={}){super(R);this[G]=F.error===void 0?null:F.error,this[U]=F.message===void 0?"":F.message}get error(){return this[G]}get message(){return this[U]}}Object.defineProperty(M.prototype,"error",{enumerable:!0}),Object.defineProperty(M.prototype,"message",{enumerable:!0});class q extends _{constructor(R,F={}){super(R);this[Y]=F.data===void 0?null:F.data}get data(){return this[Y]}}Object.defineProperty(q.prototype,"data",{enumerable:!0});var j={addEventListener(R,F,A={}){for(let W of this.listeners(R))if(!A[Q]&&W[Z]===F&&!W[Q])return;let D;if(R==="message")D=function(V,K){let L=new q("message",{data:K?V:V.toString()});L[P]=this,C(F,this,L)};else if(R==="close")D=function(V,K){let L=new B("close",{code:V,reason:K.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});L[P]=this,C(F,this,L)};else if(R==="error")D=function(V){let K=new M("error",{error:V,message:V.message});K[P]=this,C(F,this,K)};else if(R==="open")D=function(){let V=new _("open");V[P]=this,C(F,this,V)};else return;if(D[Q]=!!A[Q],D[Z]=F,A.once)this.once(R,D);else this.on(R,D)},removeEventListener(R,F){for(let A of this.listeners(R))if(A[Z]===F&&!A[Q]){this.removeListener(R,A);break}}};J.exports={CloseEvent:B,ErrorEvent:M,Event:_,EventTarget:j,MessageEvent:q};function C(R,F,A){if(typeof R==="object"&&R.handleEvent)R.handleEvent.call(R,A);else R.call(F,A)}}),c$=g(($,J)=>{var{tokenChars:Q}=F$();function Z(G,U,z){if(G[U]===void 0)G[U]=[z];else G[U].push(z)}function X(G){let U=Object.create(null),z=Object.create(null),P=!1,O=!1,N=!1,_,B,M=-1,q=-1,j=-1,C=0;for(;C<G.length;C++)if(q=G.charCodeAt(C),_===void 0)if(j===-1&&Q[q]===1){if(M===-1)M=C}else if(C!==0&&(q===32||q===9)){if(j===-1&&M!==-1)j=C}else if(q===59||q===44){if(M===-1)throw SyntaxError(`Unexpected character at index ${C}`);if(j===-1)j=C;let F=G.slice(M,j);if(q===44)Z(U,F,z),z=Object.create(null);else _=F;M=j=-1}else throw SyntaxError(`Unexpected character at index ${C}`);else if(B===void 0)if(j===-1&&Q[q]===1){if(M===-1)M=C}else if(q===32||q===9){if(j===-1&&M!==-1)j=C}else if(q===59||q===44){if(M===-1)throw SyntaxError(`Unexpected character at index ${C}`);if(j===-1)j=C;if(Z(z,G.slice(M,j),!0),q===44)Z(U,_,z),z=Object.create(null),_=void 0;M=j=-1}else if(q===61&&M!==-1&&j===-1)B=G.slice(M,C),M=j=-1;else throw SyntaxError(`Unexpected character at index ${C}`);else if(O){if(Q[q]!==1)throw SyntaxError(`Unexpected character at index ${C}`);if(M===-1)M=C;else if(!P)P=!0;O=!1}else if(N)if(Q[q]===1){if(M===-1)M=C}else if(q===34&&M!==-1)N=!1,j=C;else if(q===92)O=!0;else throw SyntaxError(`Unexpected character at index ${C}`);else if(q===34&&G.charCodeAt(C-1)===61)N=!0;else if(j===-1&&Q[q]===1){if(M===-1)M=C}else if(M!==-1&&(q===32||q===9)){if(j===-1)j=C}else if(q===59||q===44){if(M===-1)throw SyntaxError(`Unexpected character at index ${C}`);if(j===-1)j=C;let F=G.slice(M,j);if(P)F=F.replace(/\\/g,""),P=!1;if(Z(z,B,F),q===44)Z(U,_,z),z=Object.create(null),_=void 0;B=void 0,M=j=-1}else throw SyntaxError(`Unexpected character at index ${C}`);if(M===-1||N||q===32||q===9)throw SyntaxError("Unexpected end of input");if(j===-1)j=C;let R=G.slice(M,j);if(_===void 0)Z(U,R,z);else{if(B===void 0)Z(z,R,!0);else if(P)Z(z,B,R.replace(/\\/g,""));else Z(z,B,R);Z(U,_,z)}return U}function Y(G){return Object.keys(G).map((U)=>{let z=G[U];if(!Array.isArray(z))z=[z];return z.map((P)=>{return[U].concat(Object.keys(P).map((O)=>{let N=P[O];if(!Array.isArray(N))N=[N];return N.map((_)=>_===!0?O:`${O}=${_}`).join("; ")})).join("; ")}).join(", ")}).join(", ")}J.exports={format:Y,parse:X}}),i$=g(($,J)=>{var Q=i("events"),Z=i("https"),X=i("http"),Y=i("net"),G=i("tls"),{randomBytes:U,createHash:z}=i("crypto"),{Duplex:P,Readable:O}=i("stream"),{URL:N}=i("url"),_=A$(),B=OJ(),M=_J(),{isBlob:q}=F$(),{BINARY_TYPES:j,CLOSE_TIMEOUT:C,EMPTY_BUFFER:R,GUID:F,kForOnEventAttribute:A,kListener:D,kStatusCode:W,kWebSocket:V,NOOP:K}=t(),{EventTarget:{addEventListener:L,removeEventListener:T}}=fQ(),{format:x,parse:f}=c$(),{toBuffer:k}=P$(),p=Symbol("kAborted"),v=[8,13],l=["CONNECTING","OPEN","CLOSING","CLOSED"],a=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class S extends Q{constructor(H,E,w){super();if(this._binaryType=j[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=R,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=S.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,H!==null){if(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,E===void 0)E=[];else if(!Array.isArray(E))if(typeof E==="object"&&E!==null)w=E,E=[];else E=[E];o(this,H,E,w)}else this._autoPong=w.autoPong,this._closeTimeout=w.closeTimeout,this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(H){if(!j.includes(H))return;if(this._binaryType=H,this._receiver)this._receiver._binaryType=H}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(H,E,w){let b=new B({allowSynchronousEvents:w.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:w.maxPayload,skipUTF8Validation:w.skipUTF8Validation}),y=new M(H,this._extensions,w.generateMask);if(this._receiver=b,this._sender=y,this._socket=H,b[V]=this,y[V]=this,H[V]=this,b.on("conclude",oJ),b.on("drain",rJ),b.on("error",tJ),b.on("message",sJ),b.on("ping",eJ),b.on("pong",$Q),y.onerror=JQ,H.setTimeout)H.setTimeout(0);if(H.setNoDelay)H.setNoDelay();if(E.length>0)H.unshift(E);H.on("close",QJ),H.on("data",D$),H.on("end",ZJ),H.on("error",YJ),this._readyState=S.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=S.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}if(this._extensions[_.extensionName])this._extensions[_.extensionName].cleanup();this._receiver.removeAllListeners(),this._readyState=S.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(H,E){if(this.readyState===S.CLOSED)return;if(this.readyState===S.CONNECTING){n(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===S.CLOSING){if(this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted))this._socket.end();return}this._readyState=S.CLOSING,this._sender.close(H,E,!this._isServer,(w)=>{if(w)return;if(this._closeFrameSent=!0,this._closeFrameReceived||this._receiver._writableState.errorEmitted)this._socket.end()}),JJ(this)}pause(){if(this.readyState===S.CONNECTING||this.readyState===S.CLOSED)return;this._paused=!0,this._socket.pause()}ping(H,E,w){if(this.readyState===S.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof H==="function")w=H,H=E=void 0;else if(typeof E==="function")w=E,E=void 0;if(typeof H==="number")H=H.toString();if(this.readyState!==S.OPEN){T$(this,H,w);return}if(E===void 0)E=!this._isServer;this._sender.ping(H||R,E,w)}pong(H,E,w){if(this.readyState===S.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof H==="function")w=H,H=E=void 0;else if(typeof E==="function")w=E,E=void 0;if(typeof H==="number")H=H.toString();if(this.readyState!==S.OPEN){T$(this,H,w);return}if(E===void 0)E=!this._isServer;this._sender.pong(H||R,E,w)}resume(){if(this.readyState===S.CONNECTING||this.readyState===S.CLOSED)return;if(this._paused=!1,!this._receiver._writableState.needDrain)this._socket.resume()}send(H,E,w){if(this.readyState===S.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof E==="function")w=E,E={};if(typeof H==="number")H=H.toString();if(this.readyState!==S.OPEN){T$(this,H,w);return}let b={binary:typeof H!=="string",mask:!this._isServer,compress:!0,fin:!0,...E};if(!this._extensions[_.extensionName])b.compress=!1;this._sender.send(H||R,b,w)}terminate(){if(this.readyState===S.CLOSED)return;if(this.readyState===S.CONNECTING){n(this,this._req,"WebSocket was closed before the connection was established");return}if(this._socket)this._readyState=S.CLOSING,this._socket.destroy()}}Object.defineProperty(S,"CONNECTING",{enumerable:!0,value:l.indexOf("CONNECTING")}),Object.defineProperty(S.prototype,"CONNECTING",{enumerable:!0,value:l.indexOf("CONNECTING")}),Object.defineProperty(S,"OPEN",{enumerable:!0,value:l.indexOf("OPEN")}),Object.defineProperty(S.prototype,"OPEN",{enumerable:!0,value:l.indexOf("OPEN")}),Object.defineProperty(S,"CLOSING",{enumerable:!0,value:l.indexOf("CLOSING")}),Object.defineProperty(S.prototype,"CLOSING",{enumerable:!0,value:l.indexOf("CLOSING")}),Object.defineProperty(S,"CLOSED",{enumerable:!0,value:l.indexOf("CLOSED")}),Object.defineProperty(S.prototype,"CLOSED",{enumerable:!0,value:l.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((H)=>{Object.defineProperty(S.prototype,H,{enumerable:!0})}),["open","error","close","message"].forEach((H)=>{Object.defineProperty(S.prototype,`on${H}`,{enumerable:!0,get(){for(let E of this.listeners(H))if(E[A])return E[D];return null},set(E){for(let w of this.listeners(H))if(w[A]){this.removeListener(H,w);break}if(typeof E!=="function")return;this.addEventListener(H,E,{[A]:!0})}})}),S.prototype.addEventListener=L,S.prototype.removeEventListener=T,J.exports=S;function o(H,E,w,b){let y={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:C,protocolVersion:v[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...b,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(H._autoPong=y.autoPong,H._closeTimeout=y.closeTimeout,!v.includes(y.protocolVersion))throw RangeError(`Unsupported protocol version: ${y.protocolVersion} (supported versions: ${v.join(", ")})`);let u;if(E instanceof N)u=E;else try{u=new N(E)}catch{throw SyntaxError(`Invalid URL: ${E}`)}if(u.protocol==="http:")u.protocol="ws:";else if(u.protocol==="https:")u.protocol="wss:";H._url=u.href;let Q$=u.protocol==="wss:",Z$=u.protocol==="ws+unix:",U$;if(u.protocol!=="ws:"&&!Q$&&!Z$)U$=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`;else if(Z$&&!u.pathname)U$="The URL's pathname is empty";else if(u.hash)U$="The URL contains a fragment identifier";if(U$){let h=SyntaxError(U$);if(H._redirects===0)throw h;else{s(H,h);return}}let XJ=Q$?443:80,GJ=U(16).toString("base64"),VJ=Q$?Z.request:X.request,W$=new Set,H$;if(y.createConnection=y.createConnection||(Q$?B$:E$),y.defaultPort=y.defaultPort||XJ,y.port=u.port||XJ,y.host=u.hostname.startsWith("[")?u.hostname.slice(1,-1):u.hostname,y.headers={...y.headers,"Sec-WebSocket-Version":y.protocolVersion,"Sec-WebSocket-Key":GJ,Connection:"Upgrade",Upgrade:"websocket"},y.path=u.pathname+u.search,y.timeout=y.handshakeTimeout,y.perMessageDeflate)H$=new _({...y.perMessageDeflate,isServer:!1,maxPayload:y.maxPayload}),y.headers["Sec-WebSocket-Extensions"]=x({[_.extensionName]:H$.offer()});if(w.length){for(let h of w){if(typeof h!=="string"||!a.test(h)||W$.has(h))throw SyntaxError("An invalid or duplicated subprotocol was specified");W$.add(h)}y.headers["Sec-WebSocket-Protocol"]=w.join(",")}if(y.origin)if(y.protocolVersion<13)y.headers["Sec-WebSocket-Origin"]=y.origin;else y.headers.Origin=y.origin;if(u.username||u.password)y.auth=`${u.username}:${u.password}`;if(Z$){let h=y.path.split(":");y.socketPath=h[0],y.path=h[1]}let c;if(y.followRedirects){if(H._redirects===0){H._originalIpc=Z$,H._originalSecure=Q$,H._originalHostOrSocketPath=Z$?y.socketPath:u.host;let h=b&&b.headers;if(b={...b,headers:{}},h)for(let[d,Y$]of Object.entries(h))b.headers[d.toLowerCase()]=Y$}else if(H.listenerCount("redirect")===0){let h=Z$?H._originalIpc?y.socketPath===H._originalHostOrSocketPath:!1:H._originalIpc?!1:u.host===H._originalHostOrSocketPath;if(!h||H._originalSecure&&!Q$){if(delete y.headers.authorization,delete y.headers.cookie,!h)delete y.headers.host;y.auth=void 0}}if(y.auth&&!b.headers.authorization)b.headers.authorization="Basic "+Buffer.from(y.auth).toString("base64");if(c=H._req=VJ(y),H._redirects)H.emit("redirect",H.url,c)}else c=H._req=VJ(y);if(y.timeout)c.on("timeout",()=>{n(H,c,"Opening handshake has timed out")});if(c.on("error",(h)=>{if(c===null||c[p])return;c=H._req=null,s(H,h)}),c.on("response",(h)=>{let d=h.headers.location,Y$=h.statusCode;if(d&&y.followRedirects&&Y$>=300&&Y$<400){if(++H._redirects>y.maxRedirects){n(H,c,"Maximum redirects exceeded");return}c.abort();let K$;try{K$=new N(d,E)}catch(zJ){let X$=SyntaxError(`Invalid URL: ${d}`);s(H,X$);return}o(H,K$,w,b)}else if(!H.emit("unexpected-response",c,h))n(H,c,`Unexpected server response: ${h.statusCode}`)}),c.on("upgrade",(h,d,Y$)=>{if(H.emit("upgrade",h),H.readyState!==S.CONNECTING)return;c=H._req=null;let K$=h.headers.upgrade;if(K$===void 0||K$.toLowerCase()!=="websocket"){n(H,d,"Invalid Upgrade header");return}let zJ=z("sha1").update(GJ+F).digest("base64");if(h.headers["sec-websocket-accept"]!==zJ){n(H,d,"Invalid Sec-WebSocket-Accept header");return}let X$=h.headers["sec-websocket-protocol"],N$;if(X$!==void 0){if(!W$.size)N$="Server sent a subprotocol but none was requested";else if(!W$.has(X$))N$="Server sent an invalid subprotocol"}else if(W$.size)N$="Server sent no subprotocol";if(N$){n(H,d,N$);return}if(X$)H._protocol=X$;let UJ=h.headers["sec-websocket-extensions"];if(UJ!==void 0){if(!H$){n(H,d,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let q$;try{q$=f(UJ)}catch(x$){n(H,d,"Invalid Sec-WebSocket-Extensions header");return}let WJ=Object.keys(q$);if(WJ.length!==1||WJ[0]!==_.extensionName){n(H,d,"Server indicated an extension that was not requested");return}try{H$.accept(q$[_.extensionName])}catch(x$){n(H,d,"Invalid Sec-WebSocket-Extensions header");return}H._extensions[_.extensionName]=H$}H.setSocket(d,Y$,{allowSynchronousEvents:y.allowSynchronousEvents,generateMask:y.generateMask,maxPayload:y.maxPayload,skipUTF8Validation:y.skipUTF8Validation})}),y.finishRequest)y.finishRequest(c,H);else c.end()}function s(H,E){H._readyState=S.CLOSING,H._errorEmitted=!0,H.emit("error",E),H.emitClose()}function E$(H){return H.path=H.socketPath,Y.connect(H)}function B$(H){if(H.path=void 0,!H.servername&&H.servername!=="")H.servername=Y.isIP(H.host)?"":H.host;return G.connect(H)}function n(H,E,w){H._readyState=S.CLOSING;let b=Error(w);if(Error.captureStackTrace(b,n),E.setHeader){if(E[p]=!0,E.abort(),E.socket&&!E.socket.destroyed)E.socket.destroy();process.nextTick(s,H,b)}else E.destroy(b),E.once("error",H.emit.bind(H,"error")),E.once("close",H.emitClose.bind(H))}function T$(H,E,w){if(E){let b=q(E)?E.size:k(E).length;if(H._socket)H._sender._bufferedBytes+=b;else H._bufferedAmount+=b}if(w){let b=Error(`WebSocket is not open: readyState ${H.readyState} (${l[H.readyState]})`);process.nextTick(w,b)}}function oJ(H,E){let w=this[V];if(w._closeFrameReceived=!0,w._closeMessage=E,w._closeCode=H,w._socket[V]===void 0)return;if(w._socket.removeListener("data",D$),process.nextTick($J,w._socket),H===1005)w.close();else w.close(H,E)}function rJ(){let H=this[V];if(!H.isPaused)H._socket.resume()}function tJ(H){let E=this[V];if(E._socket[V]!==void 0)E._socket.removeListener("data",D$),process.nextTick($J,E._socket),E.close(H[W]);if(!E._errorEmitted)E._errorEmitted=!0,E.emit("error",H)}function e$(){this[V].emitClose()}function sJ(H,E){this[V].emit("message",H,E)}function eJ(H){let E=this[V];if(E._autoPong)E.pong(H,!this._isServer,K);E.emit("ping",H)}function $Q(H){this[V].emit("pong",H)}function $J(H){H.resume()}function JQ(H){let E=this[V];if(E.readyState===S.CLOSED)return;if(E.readyState===S.OPEN)E._readyState=S.CLOSING,JJ(E);if(this._socket.end(),!E._errorEmitted)E._errorEmitted=!0,E.emit("error",H)}function JJ(H){H._closeTimer=setTimeout(H._socket.destroy.bind(H._socket),H._closeTimeout)}function QJ(){let H=this[V];if(this.removeListener("close",QJ),this.removeListener("data",D$),this.removeListener("end",ZJ),H._readyState=S.CLOSING,!this._readableState.endEmitted&&!H._closeFrameReceived&&!H._receiver._writableState.errorEmitted&&this._readableState.length!==0){let E=this.read(this._readableState.length);H._receiver.write(E)}if(H._receiver.end(),this[V]=void 0,clearTimeout(H._closeTimer),H._receiver._writableState.finished||H._receiver._writableState.errorEmitted)H.emitClose();else H._receiver.on("error",e$),H._receiver.on("finish",e$)}function D$(H){if(!this[V]._receiver.write(H))this.pause()}function ZJ(){let H=this[V];H._readyState=S.CLOSING,H._receiver.end(),this.end()}function YJ(){let H=this[V];if(this.removeListener("error",YJ),this.on("error",K),H)H._readyState=S.CLOSING,this.destroy()}}),kQ=g(($,J)=>{var Q=i$(),{Duplex:Z}=i("stream");function X(z){z.emit("close")}function Y(){if(!this.destroyed&&this._writableState.finished)this.destroy()}function G(z){if(this.removeListener("error",G),this.destroy(),this.listenerCount("error")===0)this.emit("error",z)}function U(z,P){let O=!0,N=new Z({...P,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return z.on("message",function(B,M){let q=!M&&N._readableState.objectMode?B.toString():B;if(!N.push(q))z.pause()}),z.once("error",function(B){if(N.destroyed)return;O=!1,N.destroy(B)}),z.once("close",function(){if(N.destroyed)return;N.push(null)}),N._destroy=function(_,B){if(z.readyState===z.CLOSED){B(_),process.nextTick(X,N);return}let M=!1;if(z.once("error",function(j){M=!0,B(j)}),z.once("close",function(){if(!M)B(_);process.nextTick(X,N)}),O)z.terminate()},N._final=function(_){if(z.readyState===z.CONNECTING){z.once("open",function(){N._final(_)});return}if(z._socket===null)return;if(z._socket._writableState.finished){if(_(),N._readableState.endEmitted)N.destroy()}else z._socket.once("finish",function(){_()}),z.close()},N._read=function(){if(z.isPaused)z.resume()},N._write=function(_,B,M){if(z.readyState===z.CONNECTING){z.once("open",function(){N._write(_,B,M)});return}z.send(_,M)},N.on("end",Y),N.on("error",G),N}J.exports=U}),CJ=g(($,J)=>{var{tokenChars:Q}=F$();function Z(X){let Y=new Set,G=-1,U=-1,z=0;for(z;z<X.length;z++){let O=X.charCodeAt(z);if(U===-1&&Q[O]===1){if(G===-1)G=z}else if(z!==0&&(O===32||O===9)){if(U===-1&&G!==-1)U=z}else if(O===44){if(G===-1)throw SyntaxError(`Unexpected character at index ${z}`);if(U===-1)U=z;let N=X.slice(G,U);if(Y.has(N))throw SyntaxError(`The "${N}" subprotocol is duplicated`);Y.add(N),G=U=-1}else throw SyntaxError(`Unexpected character at index ${z}`)}if(G===-1||U!==-1)throw SyntaxError("Unexpected end of input");let P=X.slice(G,z);if(Y.has(P))throw SyntaxError(`The "${P}" subprotocol is duplicated`);return Y.add(P),Y}J.exports={parse:Z}}),vQ=g(($,J)=>{var Q=i("events"),Z=i("http"),{Duplex:X}=i("stream"),{createHash:Y}=i("crypto"),G=c$(),U=A$(),z=CJ(),P=i$(),{CLOSE_TIMEOUT:O,GUID:N,kWebSocket:_}=t(),B=/^[+/0-9A-Za-z]{22}==$/,M=0,q=1,j=2;class C extends Q{constructor(V,K){super();if(V={allowSynchronousEvents:!0,autoPong:!0,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:O,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:P,...V},V.port==null&&!V.server&&!V.noServer||V.port!=null&&(V.server||V.noServer)||V.server&&V.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(V.port!=null)this._server=Z.createServer((L,T)=>{let x=Z.STATUS_CODES[426];T.writeHead(426,{"Content-Length":x.length,"Content-Type":"text/plain"}),T.end(x)}),this._server.listen(V.port,V.host,V.backlog,K);else if(V.server)this._server=V.server;if(this._server){let L=this.emit.bind(this,"connection");this._removeListeners=R(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(T,x,f)=>{this.handleUpgrade(T,x,f,L)}})}if(V.perMessageDeflate===!0)V.perMessageDeflate={};if(V.clientTracking)this.clients=new Set,this._shouldEmitClose=!1;this.options=V,this._state=M}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');if(!this._server)return null;return this._server.address()}close(V){if(this._state===j){if(V)this.once("close",()=>{V(Error("The server is not running"))});process.nextTick(F,this);return}if(V)this.once("close",V);if(this._state===q)return;if(this._state=q,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(F,this);else this._shouldEmitClose=!0;else process.nextTick(F,this)}else{let K=this._server;this._removeListeners(),this._removeListeners=this._server=null,K.close(()=>{F(this)})}}shouldHandle(V){if(this.options.path){let K=V.url.indexOf("?");if((K!==-1?V.url.slice(0,K):V.url)!==this.options.path)return!1}return!0}handleUpgrade(V,K,L,T){K.on("error",A);let x=V.headers["sec-websocket-key"],f=V.headers.upgrade,k=+V.headers["sec-websocket-version"];if(V.method!=="GET"){W(this,V,K,405,"Invalid HTTP method");return}if(f===void 0||f.toLowerCase()!=="websocket"){W(this,V,K,400,"Invalid Upgrade header");return}if(x===void 0||!B.test(x)){W(this,V,K,400,"Missing or invalid Sec-WebSocket-Key header");return}if(k!==13&&k!==8){W(this,V,K,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(V)){D(K,400);return}let p=V.headers["sec-websocket-protocol"],v=new Set;if(p!==void 0)try{v=z.parse(p)}catch(S){W(this,V,K,400,"Invalid Sec-WebSocket-Protocol header");return}let l=V.headers["sec-websocket-extensions"],a={};if(this.options.perMessageDeflate&&l!==void 0){let S=new U({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let o=G.parse(l);if(o[U.extensionName])S.accept(o[U.extensionName]),a[U.extensionName]=S}catch(o){W(this,V,K,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let S={origin:V.headers[`${k===8?"sec-websocket-origin":"origin"}`],secure:!!(V.socket.authorized||V.socket.encrypted),req:V};if(this.options.verifyClient.length===2){this.options.verifyClient(S,(o,s,E$,B$)=>{if(!o)return D(K,s||401,E$,B$);this.completeUpgrade(a,x,v,V,K,L,T)});return}if(!this.options.verifyClient(S))return D(K,401)}this.completeUpgrade(a,x,v,V,K,L,T)}completeUpgrade(V,K,L,T,x,f,k){if(!x.readable||!x.writable)return x.destroy();if(x[_])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>M)return D(x,503);let v=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Y("sha1").update(K+N).digest("base64")}`],l=new this.options.WebSocket(null,void 0,this.options);if(L.size){let a=this.options.handleProtocols?this.options.handleProtocols(L,T):L.values().next().value;if(a)v.push(`Sec-WebSocket-Protocol: ${a}`),l._protocol=a}if(V[U.extensionName]){let a=V[U.extensionName].params,S=G.format({[U.extensionName]:[a]});v.push(`Sec-WebSocket-Extensions: ${S}`),l._extensions=V}if(this.emit("headers",v,T),x.write(v.concat(`\r
31
+ `).join(`\r
32
+ `)),x.removeListener("error",A),l.setSocket(x,f,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients)this.clients.add(l),l.on("close",()=>{if(this.clients.delete(l),this._shouldEmitClose&&!this.clients.size)process.nextTick(F,this)});k(l,T)}}J.exports=C;function R(V,K){for(let L of Object.keys(K))V.on(L,K[L]);return function(){for(let T of Object.keys(K))V.removeListener(T,K[T])}}function F(V){V._state=j,V.emit("close")}function A(){this.destroy()}function D(V,K,L,T){L=L||Z.STATUS_CODES[K],T={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(L),...T},V.once("finish",V.destroy),V.end(`HTTP/1.1 ${K} ${Z.STATUS_CODES[K]}\r
33
+ `+Object.keys(T).map((x)=>`${x}: ${T[x]}`).join(`\r
34
+ `)+`\r
35
+ \r
36
+ `+L)}function W(V,K,L,T,x,f){if(V.listenerCount("wsClientError")){let k=Error(x);Error.captureStackTrace(k,W),V.emit("wsClientError",k,L,K)}else D(L,T,x,f)}});k0=r(kQ(),1),v0=r(c$(),1),b0=r(A$(),1),h0=r(OJ(),1),u0=r(_J(),1),l0=r(CJ(),1),sQ=r(i$(),1),yJ=r(vQ(),1),PJ=sQ.default;WZ={"Network.setUserAgentOverride":"Page.overrideUserAgent","Network.setCacheDisabled":"Network.setResourceCachingDisabled"},HZ={"Network.requestWillBeSent":{walltime:"wallTime"}},KZ={hasUserGesture:!1,redirectHasExtraInfo:!1},NZ={hasExtraInfo:!1},AZ={encodedDataLength:0,shouldReportCorbBlocking:!1},FZ={initialPriority:"Medium",referrerPolicy:"origin"},LZ={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"};wZ={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:""};lZ=["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"],pZ={"Inspector.enable":{},"Inspector.disable":{},"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:[]}};iZ={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}});import{readdirSync as G0,readFileSync as V0,existsSync as z0,unlinkSync as nJ}from"fs";import{execSync as U0,spawn as gJ,exec as W0,execFile as H0}from"child_process";import{tmpdir as K0}from"os";import{join as s$}from"path";import{createServer as N0}from"net";import{execFile as zQ}from"child_process";import{promisify as UQ}from"util";var S$="AXe is not installed. Install it from https://github.com/cameroncooke/AXe.";var WQ=3500,y$=500,HJ=500,HQ=2000,KQ=15000,NQ=UQ(zQ);async function AQ($,J){let{stdout:Q}=await NQ($,J,{timeout:WQ,maxBuffer:8388608});return Q.toString()}function FQ($){return $[0]?.frame??{x:0,y:0,width:1,height:1}}function LQ($,J){return Math.abs($.x-J.x)<0.5&&Math.abs($.y-J.y)<0.5&&Math.abs($.width-J.width)<0.5&&Math.abs($.height-J.height)<0.5}function DQ($){let J=FQ($),Q=[],Z=(X,Y)=>{if(Q.length>=y$)return;let G=X.frame;if(!LQ(G,J))Q.push({id:X.AXUniqueId??Y,path:Y,label:X.AXLabel??"",value:X.AXValue??"",role:X.role_description,type:X.type,enabled:X.enabled!==!1,frame:G});for(let z=0;z<X.children.length&&Q.length<y$;z++)Z(X.children[z],`${Y}.${z}`)};for(let X=0;X<$.length&&Q.length<y$;X++)Z($[X],String(X));return{screen:{width:J.width,height:J.height},elements:Q}}async function PQ($){let J=await AQ("axe",["describe-ui","--udid",$]);return DQ(JSON.parse(J))}function RQ($){return $?.code==="ENOENT"}function OQ($){return $?.errors?.includes(S$)??!1}function _Q($){return $.elements.length>0&&$.screen.width>1&&$.screen.height>1}async function CQ($){let J=[];try{let Q=await PQ($);if(!_Q(Q))throw Error(`axe returned ${Q.elements.length} elements in ${Q.screen.width}x${Q.screen.height} AX space`);return{...Q,errors:J}}catch(Q){let Z=Q;J.push(RQ(Q)?S$:Z.stderr||Z.message||String(Q))}return{screen:{width:1,height:1},elements:[],errors:J}}function jQ($){return`data: ${JSON.stringify($)}
2
37
 
3
- `}function e({udid:J}){let $=new Set,Z=null,Q=null,z=N,K=!1,V=()=>{if($.size===0||Z)return;Z=setTimeout(Y,z)},Y=async()=>{if(Z=null,K||$.size===0){V();return}K=!0;try{let W=await t(J),X=s(W);if(X!==Q){for(let G of $)G.write(X);z=N}else z=Math.min(z*2,S);if(Q=X,a(W))z=p}finally{K=!1,V()}};return{addClient(W){if($.add(W),Q)W.write(Q);return Y(),()=>{if($.delete(W),$.size===0&&Z)clearTimeout(Z),Z=null}}}}function E(){let J=new Map;return{get($){let Z=J.get($);if(Z)return Z;let Q=e({udid:$});return J.set($,Q),Q}}}var I=T(K$(),"serve-sim"),W$=E(),X$=new Set(["host.exp.Exponent","dev.expo.Exponent"]),Y$=["Frameworks/React.framework","Frameworks/hermes.framework","Frameworks/Hermes.framework","Frameworks/ExpoModulesCore.framework","main.jsbundle"],H$=/(WidgetRenderer|ExtensionHost|\.extension(\.|$)|Service|PlaceholderApp|InCallService|CallUI|InCallUI|com\.apple\.Preferences\.Cellular|com\.apple\.purplebuddy|com\.apple\.chrono|com\.apple\.shuttle|com\.apple\.usernotificationsui)/i;function j$(J){return!H$.test(J)}function C$(J,$){if(X$.has($))return Promise.resolve(!0);return new Promise((Z)=>{G$("xcrun",["simctl","get_app_container",J,$,"app"],{timeout:2000},(Q,z)=>{if(Q)return Z(!1);let K=z.trim();if(!K)return Z(!1);for(let V of Y$)if(Q$(T(K,V)))return Z(!0);Z(!1)})})}var k={at:0,booted:null};function V$(){let J=Date.now();if(k.booted&&J-k.at<1500)return k.booted;try{let $=Z$("xcrun simctl list devices booted -j",{encoding:"utf-8",stdio:["ignore","pipe","pipe"],timeout:3000}),Z=JSON.parse($),Q=new Set;for(let z of Object.values(Z.devices))for(let K of z)if(K.state==="Booted")Q.add(K.udid);return k={at:J,booted:Q},Q}catch{return null}}function O(){let J;try{J=$$(I).filter((Q)=>Q.startsWith("server-")&&Q.endsWith(".json"))}catch{return[]}let $=V$(),Z=[];for(let Q of J){let z=T(I,Q);try{let K=JSON.parse(J$(z,"utf-8"));try{process.kill(K.pid,0)}catch{try{M(z)}catch{}continue}if($&&!$.has(K.device)){try{process.kill(K.pid,"SIGTERM")}catch{}try{M(z)}catch{}continue}Z.push(K)}catch{}}return Z}function F(J,$){if($)return J.find((Z)=>Z.device===$)??null;return J[0]??null}function P$(J){let $=J.indexOf("?");if($===-1)return null;return new URLSearchParams(J.slice($+1)).get("device")}function U(J,$,Z){return`${`${J}${$}`}?device=${encodeURIComponent(Z)}`}var R=null;function B$(){if(!R)R=Buffer.from("PCFkb2N0eXBlIGh0bWw+CjxodG1sPjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj4KPHRpdGxlPlNpbXVsYXRvciBQcmV2aWV3PC90aXRsZT4KPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFVQUVCQUFBQUVBSUFBNEJnQUFWZ0FBQUNBZ0FBQUJBQ0FBUEFvQUFJNEdBQUF3TUFBQUFRQWdBS0VQQUFES0VBQUFnSUFBQUFFQUlBQ2NPQUFBYXlBQUFBQUFBQUFCQUNBQS9wb0FBQWRaQUFDSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUFRb0FNQUJBQUFBQUVBQUFBUUFBQUFBT2JZeVZNQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUFvSkpSRUZVT0JHbFVzOXJFMEVVL21abWs5MU5paVd4MHRvcVZSRHhvQ0NtSUhnVVdpaWV2UFRrU2NHVENJSUhFUS8xRC9BaWluK0NKdzhxZUZERVMrMUZnZ0VWV3l5MDBDYllObW1iNXNkbXM3c3pmck90cGZjK2RuYmY3SHZ2ZTkvN1pvQWptamhjYndEMWJIZTNVRzA2N2tZdkVBR0RXMTB1T2x1ZWIzUWNoN1dKWS9YRE5RY0FkNVo2NTc1MW5PZk5VSlFTcmQxWUE0WlJUZFNFdnJhWlVvWUNwdXlZK1A3bU5XL0pBcVVBNXN1c2M4bC85R0ZGdUpNNk1QeHBZRmdvNUY1QzZqUFRScVRIMVEwL05UZmZUV05tSm5Fc3l0UGlyV0tyTGt2OVVHT2lZSEJqUkNLeDg2UkZUS0NmSWRqbkRZMjVob0FqWkduWXVYSjhIZGhJQVdvdDRTVmRPQ01zbUM0S1hQVU5hcDBFemI2QXNCeEp3WFVraGpnS3V1U2g0S2kyOExoREN0Q2pTSjFkNE1GRmdTZm5iUVV3VjR2d2FqbUJiMXNUd0ZFSzFSYjlEdU1xVFVsZktVRFE0Nnc5ZHJFZGFGYkFJVTlpY2xTZzZOdHNnNGdxanUwQXl3Mmd6WHpFTm5PZndmWTJ2YTVBMUdlRHlLVEtEeWlEVTVrRWl0MnRpRW9LVEExTHhLSEV5N0pCUWZ1b0hRYXc2b2NjcGRIUkZFeGd2YVh4ZlMyQ2w3RWtMU2hucHlBNnpNTHRhM2dwOS84YWtBSGxRa0lHOVRibmxScTFIWU9mVmY1WDdNcVI4bVJqcmRyV2tJSEE2QW1nekgySzArMTNRektPRjFZTnlqbnlaY2NmYXhxVkZRZDFKc2QyL2tGN2ZCcXJUWWxjRnZGQTBBZ3RZQW93UHYrbThhZjBzUEoxTVg5OS9oYzdFU05Lc2xEc3pnZVMreW9QM2ZCcUtsY2luM1FxTjBkLzExOFRZTy9NNkp5NXUzZ2g5c2RlUUdRdUcyTmNLNXk5QTVRai9UcEVVWTRNZlJWVnhnYzI3NzEvZkhiQk1qZ0FzQnVhT0gzNzQwa0Izek1KYnhITmRZRkJya0krYTNKZTBIczdPL1dYZ2YwRHR4bEh0SDg0aWhRSmZTYXpqUUFBQUFCSlJVNUVya0pnZ29sUVRrY05DaG9LQUFBQURVbElSRklBQUFBZ0FBQUFJQWdHQUFBQWMzcDY5QUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZBQUFBZ09nQUFIVXdBQURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBSGhsV0VsbVRVMEFLZ0FBQUFnQUJBRWFBQVVBQUFBQkFBQUFQZ0ViQUFVQUFBQUJBQUFBUmdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFUZ0FBQUFBQUFBQ1FBQUFBQVFBQUFKQUFBQUFCQUFPZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBQ0NnQXdBRUFBQUFBUUFBQUNBQUFBQUFmZ3ZhVWdBQUFBbHdTRmx6QUFBV0pRQUFGaVVCU1ZJazhBQUFBcHhwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNldGSmxjMjlzZFhScGIyNCtNVFEwUEM5MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0eE5EUThMM1JwWm1ZNldWSmxjMjlzZFhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGpJOEwzUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0eU5UWThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtNalUyUEM5bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNHhQQzlsZUdsbU9rTnZiRzl5VTNCaFkyVStDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhSaFBncnAvc2x4QUFBR2hrbEVRVlJZQ2UxV3pZOFVSUlIvVlYwOTNiUExmbVVYa0JESTdvVUVSU1ZySUFvbTNreU1GeEtQbmpRbXhJTlhUTlNMQ1RHR2kvNEZHaE1UalViQ3djQkJFMDFBQ0pKZEVrRUlBbUVGQVlGZGxtVm1kcVkvcXN2ZnIyYUc2VmtXcm5yd0pkWFZYZjNxdmQvN3JCTDVuLzVsRDZoSDZYZUgzNGtPN056LzdKKzE0TWtrTUJPdFhFVlpManJIaHJ3UVNUQUtMWkppWGs0eFk3MkZueTE4NXdxL2pFdXlMSjgzeXA1YlAvdjE2Wm05ZTdQVmRLMEs0T1ByQzd1T0xvOGN1RnhUTDlSRmF4ZEFxSVZDMXhiaE9yUEdPbDh0RkhQdURnV3BBZmRBcGJKRllZdzdVY21XOXQzWU5YNThKWWlIQU95ZnU3WHJjR1BpK3pNMVBXWmJWclJ5WW93U2E1MTBGVk1JTndhQjhrb0wvQ3RURzRDU1BPZTZFaFVGWXFSWXJOcDdyMTdmUFg2aXpBc245dWo0OFcrcXgycWpuL3kycE1lS0p2eE5qWEFwaDFzeENueHpjTDM3WHA1Ny9FNG9LeTMwV0t0WTgrbms1ei9GUFkwQ1lDVTZNanc5UFZjek8yemRDb3p6NURFQVIwQXNaUmZncjBlUGRkZU5UVWVXeGw0UERLSGh1eWZFMElabVI3cDJhaHJmRDBMUkIrQjJNdkpVM1dxbEVUenVnM0V5Q0k0M3BnSlpXMEdzb2F4TWREVnBCUzRQL2o1eTVvdUx1ZHhwQWJ6blF3aE5xS3dNYnNPVzFRRWtFa3dnNUZLQlpPNWh0bThjVURLOVJvbEdtaGY4U2VMa2hmS0JqODdFWDN6bnA0NlVURldWTERTZGhCMDNjREk2bVBCOG5VZWZCNUxNUlRrUUYwazc0UnJJNGlZc24yOWlEUW1KaFBiV2hqQ0pTbFRIQlc2RkN6UTBtVEFRQ3psRkM2T3JCVEd6cVlzZUNjQW15RHRhbWlvWlFORGYzNmJsdVhFbG13ZGhwNFZLcCtWR3M1Q2pONEVNTmFpN0FPaUZMZ2lzYWEwbFJQd3RLeC9ERllTTEdhVXAyWU9zOEd0ZGJQNGp4eVp1eU9DRkZ6Y3AyYmVWTzdyVUxwZ3RJNEdjdXRHU0t6V1J5TFQvdHozUUNRL1kwVGtrcXNCeXlGSWNUQ2FRZ2piZnlkcWYvdGtQQU5ZckQ4SUp3dTZKWWt2R2VkZmZiMXE1ZGs5SlhFRWY4TVo3cnZZR2NMQUpEY1RPTnlqS1V4MEJCQ09VWDZLSEFEZ3dPVEFWSFVZbVlqZkdqQzB6T29TYnA0WUQyWXhSRGZrTkpSZ1d2QWxLcFo0cHVZY21WRUY1SnVqTkJvM0kyME9aandVQUFheDM0eEJIV2daKzlucGZqNUJBaDdQOXZyWWxGcVZEcVJpRUJkYVJyMHhNVHFiTUs1TmF2anlYeTZHTERsN1JYbVpBZVNYcTgwREtFTUFEUGs2bzR4U1NVeUNtQjJrNXJTUTFtNW5VWUtHQjBCNkJpVWpBUkFBQnZEV0VaSHo3NlJCblFpYUhMcUFER0NQbWNRQmFLTGNjSUh6NUFFZ0NFQzBvWWd4cExFUEFwcmVFSEZoTTRQcE9FaEtFMTkxQlF3RGtSZW5BWTRIc1hxL2x5TytaV0NSMzNER2l3OXJmaXJNVkh1RHgyc3djV2k3aUNkZnpZS0psTmRUMjNXV3NoVlJib2c0S2YwUUJSQUcwRG51Y0NtVVFNVjJHVVRINlNwbjZRd0NFTklWaEFIaHBZVjVHSENqUUFvQkRnMWRJZ29WNklUZFJobkVGYnVsYTVMSDA1d09UVXBFRmZpOGdCMmtqbGNjQmFBRUFlbzNQVkFMZ1JhTU9hMkdMWklCcWVRT0JSYmRyVHY1YUxDU09BQWdhWXJpSDNiR1pXa2t6NnpGMW9SakVqaTI4VmtkcGpnQkEyWHk4OTNrQTVWY3d5d01vWi9Ob0FuVUQ3WlE1a0VCQmhud2d3SVdHa3IrWGxBd1BCakkrRk1yY2dwVmJPSDIyYlF4eFlBV3lXSWNndUI5UmtBMWpSazVmemFTQUM1bUFsUlZIWng4QVpWM0taQXRRaGdWQXBMaGJKYWhwRnFCR2ZjTTRDYkREd0pjREZXUTAwSjY4bE1rZmQranFRSzdNRjdKOW84akVtb3Evd0xCSXpsN0w1ZHgxSllNUitCR21XTEhaOTZnUFFOWklGM0ljRlJxSk4zT3BrRk9iUkVaeGZTZ0FpRVJ3cDY4bTh0MnZLZTk5MGtTWHltQnhCZVdtd0pQZzVEdDJvWkNoS0lkQ1ZFc2psM3JLRUJsVUZnV3d4TzI4RjlaNTlBR1F4dng1SmVza3dPRnhGeTcrOEdDS294U1hFNWhpa1ZIc2lHZ0JLSzBCOUFERVBkU0MyNXEzbG9IbkdSbXBRTmhQVVBwWUQzQ280UWRjWDBCbWpNUWFjcmZPbHdIQXBoNDF6aHljTVhsckZvZXBCMkVrUkNoaW5HWVJSZ3doVmFtYUt0eklob0phNzdaV3psRFlIVnpuL3dEdHNIMjJJSFRZc3pacXpZN09INXp0YVdSd1M3UTg5M002dm5YUFpSMnQyNFBhalhnRkFuNWYrN1FDeWV5SDd6cDQ1M0hNTlY2L3V2ODRrOWlNZUo0NHRuVVR5dWJSN1A1a2NPYXR6ejU0L1VLYm8vMmsvSWRvNnMxZlhpNUduL2tJaFRhTkM3NEtFU2hleTltU3k4UlRqd0o4dldObTF2T2J0YzhtU1dDeHp0MjY0V1RtQ1RuNzNsZnZQdjlEZVQvZlZ3WEFINk9UMjBlSFhqcXdVOFVidG9hVjZnVEtDeFZFMFQzU0FNYkVSQ3BJekZNUjMreE5KblFGY2ljMXJqay9ZRytmVjhmMm5mejJ4NW1sM3M3LzMvNURIdmdIYWtRU1dLMGpJVXdBQUFBQVNVVk9SSzVDWUlLSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQU1BQUFBREFJQmdBQUFGY0MrWWNBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUF3b0FNQUJBQUFBQUVBQUFBd0FBQUFBQW02MUswQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUMrdEpSRUZVYUFYdFdWMklIV2NaZnIvNVBidG5mMDIyS1UzU2xqYjlTUk1DcFdCU1c5QkFiU0V0MUp2Y0ZoUzhLSUpDUVJTdDRJVUI5Y0tmNG9XVW9ONUpJc1ZDSU1YRzJpYUlwaWxwU2tvYTA2aHBaZFBkVFRiWjdPNDVlMmJtekkvUDg4NlozZGt6czBrS3hSdnpuWjJaYjc2ZjkzdWY5L2Y3WmtWdWxWc1MrUCtXZ1BtMDhETVJJd2YzdWxPUFArY3NMSXpiMTJ6SExNNHZtcmtTSWRhWDMxRXAzb3MyZmNmTkdSck9yblhqYk1pYVMrVFFvZTdKbDEvdWxzamNWUFdtQUV4UC82bDV3SC8waVU5Q2IvZHNhTGEyWXVzMnNhMkJvQ3RPa29vRlVCTGp5bEJKV2NjelJzWFllUjNqSkVFYnIyN3Z3anl0NHpYMVBZbURJTzJJbFY2eVRIYld5YUkzbzdOLy8vUE1jMCsxYjRUaWhnQitkZW5xbmxQUjZJL2VYN0Flbm81RVdpR1lTa1JjVHlRTXJrL2VjZkwrbU9oUTFsck1iNEFXYUJzckIyMWpvR1BTVTE1My9zWEpYWjg3bk0rdXY2OUZVMGYvZE9yYTgyKzJSMzV4L0lyeGdrNHNvQzhHTXpqSjk0MkVJZVIzbmVJNE9mbVlLcmxPcWFObGZFZGNxS0tSdEw5MWNlZndyOWVhVHA1cXk4OC9tbnI2TDYyUlh4NmRFcThMNXNtTDFXTytkc0puM0ppRnNVUWQ4UUtyK2RLbW81ZjJyRVcrRnNEQkl3ZEhUeWZyZm54ODFyaUc5Z0lCWnJEWlQzT2xuM0o4TFcyc0hYV05HN2xqUDlueTB1R1JPaEMxQVA2MStRdFBubGx5dHdldFdBd1lVYy9zZnhMWFozalZya0VoTE1VU0czZDc1NzRkVDlVQjZMblo2cTdMMXZEdTZTVVJHd1JNamZreXdsaVk2VU0xakR5MUJlYm05UG9zVldIdEtQVXBOelhTUVhpaTh4bzZXVjlKS0NodmVEZWEvOURYSlJVQWU4SDN0Y2g5c0EwQUt2MitHVEU0M2psaHlkTjMyc0pmdWhZQXpDdDRXUk5rYWN6eHkwWmUrMDlNcUJVUUdTSlVJdDRENkVKZ1JyVlVLZ0MyN2QwMmNMWnJKbUxFYnF1UE94Skh4Sk05bXl4NWdER2VraWtSNjY4V3NyelJHQWFINWpwTFRrNkpUSGN5Y2NobXVUQzlHVE94WWNlT3hzenAwNnR5UXdXQWJOdmxHY2RxZVBRT1o3V0xLQUJ0TXJJRXFTQ0pxZ25oWGw1TzY0YkJ0b1RnZW1NY0lHQ1NhMkk5RHh5NXRLVnlBU0RmTmdPeS9URlBiZ1RBODI2emc0NDRJVTJJNmJKVXVuaE5RQ3pvV3RMS2pBSkllbU80SkNXNVV2QlN2Q3UrS2tpT05aYWxERE9sUkFHaUR0Yk43TldDRTl1bXp6bjIwSVorM1ZSOUlISjlrekJuTVh2Q3VZclNoVGx0SEJDWjhETVpSYk9IZHd1eGo3OE1SdDdHK0NXWWxLdkpndk95WlZ0bWYxNktKOTlVUndDUUFVQW1BZDlwM1dyaEsrdm04ekNhM1pibTBxSkpueFVUaXFMSU1DYlRnZFdKc1NhWi8rNTJTNzV4dndVMW0xSkM2MDNIbUVXRXBsY3ZoUExoUWlZK2paZ3I5a0tZOHI4TW9yZSs5b0VXQUhCNFFKNFQzR0JMeW40WmcvWXQ2L1A2QU9naEthV2dHZ0E5TUg5WFUrU0ZyYlkwS3dyczBjSUM0M0NheHpZNGNtSnFTUm8rUkFVcktFSWlOZERQUDJjU0lNYzUwRUFNdTFlaDZiNkptaW9oS0N1dXQyVHhxR2lBSFJtSVVKMGt5SXc2aWdXOEVyMWljdi9UaC9rc0JyRUVxWXQ5RE5IbUs2c0RvMXJtZytRSWtDYWtDblBSZ0xWNHFTbWhXaTRNeWVYNVJWOHRBQ1lPRFF1UVBqV3RhYjQzZzJ1VXBaa3pna1hSemh3eDMwbkZCV29MRXFVeGNHeXVnZFhMa3lFTE54dmo2QU1OZEd2WVZoL2dZcVh4Sk5MbjF4ekJVZ0hRaGczQmlaZWx3ZTBDSFVzWlp4VzBGSURlY2luU2J5bHZadWlyN1V6R0lOVjFycEVSN0ZnYjZHQlk3RzFNbFMwR3JnaUVPcURiUmdadVJTbk9CcGJ1Ym5WdFNxT3ZHUEswS2dQa0F5b0EyTXdFcGRHQVhHczlVd0Nrd2NWWG9nb0FLQkJJRWhJYWdlMC8vOGlRM0x1dUllTURDSTlvQSs5YXlqeFJ0cndvRFBBdWkxRW1NemhickljZi9mRmNMUFB3YUI4NWdWclNRcUVWOVY1VDhhZ0FJRWhLazR2RFFuVWxGNTRHYTFJSmE5aFhhbVFoai8xcVpxZ1BRZW9QalhKdUpsMHd4ZE1YaTVwUVhsVlR5Mjg1ZlI1aVJvQnlmRmprL29jOWVmSWVSMTQ2RWN2SkdaaVZabE5NeEJnUFROV2RueW9BcUNhZW9Bb256aldRUzR2Q0xqUkFnYWhRUUJ4L0t0RVVuWE90U1B5R0JZMVFER3d2VU9DbGtDS2JVS2VBMUpFaGFndDJTSi9aQkthL3M4dVRIeDRMNWV4c0lnMFhkUERIYURXRWFUTzR5cVVDZ0JxSUFEVU9RUnpxamFIbkJLSWs0MVE1UXl5QmNMazhaeG5WRG5taWxoYVpUV0Z3bWt6Sk1EdldLajBRWko1QTFPbEJtWG5rMlh0c09UTVp3RmNBem5iUVdsOXFBWlExb0NHdHh6eWpVMG9VWkI1M01rbVFCTUxtR0FoYUFSeVNBQXF2TGRaVklHVTB5bjB1Q0FMUUdvVkFoa1UyRDl0eUczYU9sMEdQOUhFRUZ3LzVxTDlVQU5DRUdBa014WWxMa3dzMWdhdXJBRWdpQjdDODN5Y0FiRHM0cG8xTlhnd2ZzT244MXkwRVE4bm4yaVJOMWJBQ1FEdWNlQnhSYkhvUk9RaGhsb3pTaFBwTEJVQUxJN2lWTGlTdlR6QkRFNG9BakptWlRtdmpscHNTR2NBRk1VVVl0d2lKUmVpd25WU2xtaSs0N0FsOTY5Tm9PSnV5eWdHd2hTYmxJekh3UUpYeGd3RG9Ncy9kRkFENmdNWmlTaEFFaW5CSzZlS2NyU2FVSWJQWldJVCt0YnhOQUIvc24yc2prV0d3bzJFUWkwUEVPWXVnMVN1cm8xSU9qc0tnMGptWSs2TWhQRHNRaGtteENOYUdFbXBMUlFNYWhYaUFLQUdnR1hFckhkS1pxV2Y4V1doTUVQNHkyRG9YWm1URkxrS3VJSkY1a0pwRERaQjVjcC9mOUVGR1dUSms2Nkt1N3lTS1loQlhzWHVXRENCbUZ5QU1HQSt0Z09iYXJGRkJCVURIOGJJTU1aeE1FM24reEdZTFJDaGhQWjlpWlRxeFJpaHd6NlNUd2FRSVlCNzdlWmNMZ2pKTkFiYUZmWkVsNjRZY0RZVUVlM1V4aGpCQVFCSGtwb2czQlVxOFk4T1dmRHdiSXlTTERBNWlKZENqckhSTTM2MEN3QVFoTE1Ud3B3QUtFQVFRUUFPTVFqUUJMa1F6b21uUkx5QlBaV294dE1UQlhBZVowRUk0V1Qvc3lOaWdrYitkRCtRQ21OcXl3Wk5kOS9weXRXWExwWGtnNWdJS0JCeUN4UUY4MEJxRWJiNzZiZ3NIUW9DR2FnMHVLRFJ6YXI2a1ZRQjBybDVNUnh6a01tb0FKd2h1ZVQzRVpmVUJTRTIzMmoycnBvQUpyQXRRdEt3WWpGUHBTZVlpSzd0eSs1Z0RqY1J5NEoydXpDNVp5S3dEOHU1RmtjbHJzWHp4UGx2dVd1L0p6SHdxN1pBT2oxMHZwRDB4Yk9USW1Vam1PcDZNREZCcjRBRW0xWEFsSG5FdVliWFZwUUlnbkh3N0NscHBFSElvUWcrbE8zT0Y1dUZBUXBRNHFCWDJtZzlCRzA1VjhJVzVWaXJETGlUWWRLU0RrSFQwZzY1OE9FTTdSRlJCT3o3d2FEaThkQzJWQThkRHVYZEM1SUhiSFprWXNtR2FxVnhaN01vYjcwY3kyN1prY01DVmJrQk5BeHdFbUlacHNIRHFPSUwwNmxJQk1IdnVYRENjSnJQd0lmMXd4Uno0eVpWVTlyOFZ5ak03T0J5eW9zZFNaTFJLNk4zR3k4ZFhZdm5aNFFVNVBZazlESTZlQ2NZMGZGY0djYVVBQ0RsQ2ZaeUVoQVNSOHR6N2J3ajAvRlFNczhIT05JZ29MM0dodVNHWUVXTVh6WmhMTUNjMjdHVDI4bHRuS3R1aENnQ003MXBSNTd6bE5ML0U1RVF1dVpsNzVVUWlyNTFxaTJmbFoyQVAzOFJEZkZMT1J6RCtjNHZzeXVpUXE3YlBEcGR4bGdVQXRHZzA2bFhSNVBIckdIelVBNGNaTm9MOFpSakRQS1A1aCtOUjU1YThhY0lQRDBHSCtleVZleDBBU1Jlbmo5bWo2Nyt1SVJOalNiaUJzQkxESnlMZFltS25DU21HRVdOUlhoeUVDUjlNTU9vUUZCY0dWcFVnL1RRdmFDd1ZqdU5GUjdWd0htQWg4eXNGd1FGengzMUVvMmo2MkVyN1NtMkZnNVUyYWIrei80Z2RkLzVoR2VRLzlZV2NHYmdVdEdIamNpQTlXeVZJS2ZKeUFJaE1rT2xpenMwK2kyeGZOOTUzWE5uWURNN092Zi9iSXlVV2w2czlIUysvYTZWOThlMzIyTlpuWnAzbUhWOUpFa1J6bWdBbGcwdlZpeWNsbmlCaEZlOHF1YjR4UERLeW5hZTY4cmh5blRUWG9wVmx0ank0TVl2dlNOLzc1dS8zZmZYRWFpN3p0MW9Oc091ai9ZKytZaGJPdnRqd3M5aEFDdityd2x4UU9QTzJPN1A0YnYvYzkzL3p3dWRmV1d0OU5kZTFPdEh1M2ZPMW8zdk51a2UrRjV2bVE0ejFtZ2Z3aEE5TGdIODM5YXk4bGtUbFB6U1lWeTU4cFgveFgwd1JBaVMzRUEzWSs5aWd5TWFSOWdkandYdjdmdmZ0eC9sRm1ubTd0dHdJQUNlWjhXMVBiQjdiK1lNdm0rRzdIeGQ3YUV0bTNQVytiemZDeU5qSXl0QmlQUmxFUk4zLzBHUVlrUGo1aEV3eUxQSXNrWC9VTW1uRHk1SzBtd1MrMjUxdG1QWS8zZkRDWHlmZjJQZjZzZGRmbjhUNmZiQlg0NmhmZWZXWThodHRhYkE1TVRIZ3JyL1B6NXh4QkhRWDUvcGVnQytQUkIzQzFKcytXVVdGWDdmWndUWjhGODBzcTV2RlMzTkpOSDgrUEhQbWNnZk4yRTJ0TFhIMDNTcTNKSEJMQWlVSi9CY1lHc1pyMjk1WnJRQUFBQUJKUlU1RXJrSmdnb2xRVGtjTkNob0tBQUFBRFVsSVJGSUFBQUNBQUFBQWdBZ0dBQUFBd3o1aHl3QUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQWdZMGhTVFFBQWVpWUFBSUNFQUFENkFBQUFnT2dBQUhVd0FBRHFZQUFBT3BnQUFCZHduTHBSUEFBQUFIaGxXRWxtVFUwQUtnQUFBQWdBQkFFYUFBVUFBQUFCQUFBQVBnRWJBQVVBQUFBQkFBQUFSZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVRnQUFBQUFBQUFDUUFBQUFBUUFBQUpBQUFBQUJBQU9nQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFJQ2dBd0FFQUFBQUFRQUFBSUFBQUFBQW1nTzgxZ0FBQUFsd1NGbHpBQUFXSlFBQUZpVUJTVklrOEFBQUFweHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9saFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajR4TkRROEwzUnBabVk2V1ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQakk4TDNScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdycC9zbHhBQUEwNWtsRVFWUjRBZTJkYVpBa3gzWGZzKytlYzYvWjJRT0xhNEVsUUFJbUtkQ0VMRktrUk5BMmd3ckxsTU1mek1PbUltelJKaDBNaDBnNS9FRmhpYklWVmppc2d3aUhlSVJOU3FBc0tpZ0xFbmpia0hpSUpnaVFPQWlBd3BKWVhBdnNpY1VlTTdPN2MvWDA0Zi92WldaMWRVLzNUTmRzTHdTU2t6TlZlYjE4NytWN0wxOW1WV1ZWTzdjWk5pV3dLWUZOQ1d4S1lGTUNteExZbE1DbUJEWWxzQ21CVFFsc1NtQlRBcHNTMkpUQXBnUTJKYkFwZ1I5OUNlUmVZbDE4cWZGenVjVFR1bHlJcytMOTJ4SjRwQnZqTk44STV5VWpvRFJqUTBqVDMzNTlCdjJMM3U5ZXpBeWhuNnRRUkRveDdsWnk0YWYydWZMUC9PcEhxN3R1dnJsYTNUbFJHUzFQbGk4MG02VjhvVnFvNXh1RlZqMlhiK1J5dVh6ZDVlcEY1eHIxdXVGYWdWVGQwd3VSWmF4Y3FYUmNqNWxRWGlyNStvV0ZCRVViWHJBUlgyeEd2S0xDWHVYMVpyRkZmYTdsV3ZWV3E1VnJ0SnFOU3FGUnFDODF4c2J5SzNQbnp0ZGFaeTRzdHc0K3RuVGt2LzdiSllIV2REUjBwRU0rWktJaHhEZ05NOVIwVk1oUWthYVFSZngwTEhhMi9JbnZmbmRQYzhldUEvbXg4UnR6b3lQWExkZGIxOVNhK1YzMWh0dldMT1NxdVVLdVhDeTYwbnpORlpvdWwyKzJYTDZKYkZ2K1VOcUdpc283WXFTVmxJVTBlUWdUMnhIU0RlV3JJMUtvS2hlbERtQW9pL0F4SGZNV2kzQWRtSWdqM1VibDFrWXNLV2tIWUxsOHE3bGx3alZtNTl4S3M5R3FpY0NTbUo1eHVlYXBWajczYkc1eDhlbld3c1hIQytkT1BYbjRuOTV5UW0yaXZSVm9yMFBvTGwrSUNobzJoWWdYeGRNSjl6K2ZlT0xHMHM3ZFA3ZGNxdno5UlZlOCtXSTl2MmNoN3dybk5ad3VhaXdzcU51TE9wYlJoRnFWcTg1SmFDYlVLTTBZZ3crcGtDZFkyaWU5dEZRUXFoSzRKQi9xWUdwc1RBckZBQlo5WTJEc0NEQ1IzcXJ5QUlkUlVFZEl3L29TblNXRmd2b3lPZW5jM0FVUGswTWlPdktvbHhqZ2htdmtjODJUdVdiOU1iZXkvSlhDMmJOZmV2WXQxeDVTRGVndnF5RkVSY0hHc0FJNDZaZko3Uk5QUHZucXd0NTk3NXR0bGYvSjJWWis2dmk4Yzg5ZmRPNnMzTzVjcmVVV05LUnFVb0xjcGgraDBreEJybmwwTE8vbVpodUpnSWZGWElKSDNJMVA1TDBCTE1qUEJFa01XeUI1U1dKeVM4R2RuMnU2cGcwRnp3SDBOS01aM1p5c3BLQnByVkRSb1RqZmJKN0pOMWYrb243cTZNZFAvSU1ERDZ1RjJZbGlrMm5TaHlFa2h0MWY4TUZzNDdmdnZudDYrcWRlLzRHWi9NaDdqOVh6Vzc5L3hybm41bHJ1N0ZMTExjcFhOcVJ3UmswTVVRR1VsVXM1TnpidURTRFdEejN1WXdERHB0TTJnRWFIQWF5bWd6SGs1Qmx5cmxET3ViSzhVNkhSbk0zWGx6NjIvRGYzM0g3cTNXOTVRVzJHN2cyR2FRRGdnc0g2SGM4OTkvcjY3ajIvZDdSZXV2WGg1NTE3L0Z6TG5WNXF1bHJ3bVdiOXF5VmdKUmhBNmNmU0FOSUNrUkhJY29yVm5LdU00eEZXN3MrZE92bkJJN2RkL1MxQkRkVUlvbXRKVTk5SU9pcS8rWWZQUC8vTytlbDluLzN1aGRLdFgzckt1WHRQTnR6eGhZWldRRnJKQ1hOZWtNTzB1bzB3KzlKdkl3L1piTGpseFlaYm1OSGxRck4wYTNQWHZzL3V1K2Y1ZDRwM0poS01ZQ2hpSElZQndJaG1MdGU2NDlUcFg1cWJuUDdrZldmeVUzOTF1T1VPemRiZGt0dzlSSWJDcmZEOFdBVzV3N3F1TzVjMGRkWnErU20zYmZxVCsrNDkvUjdKWUdoR2NLa0dnRjZ4eHNZbmp4NTkrK3pranR2dk81MnJmdk40MDUzUXFHZUszMVM4aEhDSm9kbVFON2pRZE10THVhcmJ1dVAyZlY4LytnNmg1SHJwa2ozQnBSZ0F1cVY5ODZNSEQ3MSthV3J2N1ErZXpZMTgrMlRUbmRGOHZ6bnFKWmtoaG1aTGE2aDVIVXU1RVRlOTkvWXJ2M2pvcDRYK2tqM0JSZzBBNVpzQi9QS0hQN3lyY1BVMXR4K2N6MC9kZjdMbHppeEwrWnZEZm9pcWI2UENDSmJuVzFwUGFUcllkODN0TzMvakk5T2hkc01TMzZnQlFCZjM0Mjc2NTcvNGdaTzU4aTMzSDJ1NTUrWDI0OGlQRnZKU2plR2Q4Rkxscng5ZnVzSHNhbG9UTkN2bFd5ci84QjBmOUwzWStGVEE0aTFyZ0RmMDNQcXRyMzN6TmZQVkxlL2hVdThaelZFMU9hUkxIZjFjQnVaMUVIUGI5WElGOEhOd1pRb2RPblU1UWlGRkExckRDSTE2MHhVdUZGeDFiTXQ3ZG4vNi85MzUvTHZlK0pEdzBvWE1GRFppQVBTQjBaK2ZldVVyMy91RWJ2SThmcmJsbGxkYXJpZ1c5RERra2tJMGdKeU1DZUZkcnRCTjUzSVpBTWJNZ3d6NmNxbXlhY3RDMDREV1dhV1IvTmJTZ1ZlL1YrWHYwOEY2QUlsbGt0cEdwZ0N6dE4rNDY2NGI1NHZqLy9nSHVqOTFTb3VUOUlqQzBpLzFpS1B6VXZHczFYN1lQUGVpZGJsbzFPVzJWblJidlZVY2U5c1YvLzBMTndiRlo3YmpyQjRBQW96KzF2UXRQL25XazduODl1ZG14WWl1OVhVSE02UHRDYjVIUUdDTUdrS01mVzY0Witnd1ZtQWJPcGtsTnlBN2NkUmJYMEsvQm15NkRwanVFU3pxZHZwb2ZudnU3N3ptclFJK3FNT21ac1VEVThwcUFEQ1YzNzU5ZTZVMU92bm1FM3FvYzBiMzloRW0vbWNZSVk0WUVGcDZHRWg3NFJEUFpnU2l3OGk5bkFhZ3hYdmlFU09kZ1RYVWkvZFlwcWRMalZwQlQwNjN2TmxOVFgzRW5UbXpyQ3J1RHd3Y3NrNEJ4dis3Zi9NM3Ixak9WMTV4OGp5UGNNT2RQb1E0aE1OR0k5TGhrR2JZQk9BM0JQZzRSOW5RRHVnTUUxOHZYRUV1TWdMNHRqNHBwcCt4cnh1Vkc0T2tvYjBNclVMNXBoM3YveTlYQksxSEd3dlp0YU1zSGdERTVtS21iNzdsd0tJcjdEeWpPYWhCWjlhbXNXNHR1aVlRYXpPTlBUWGowYWtXdTc2d3k2TkZlTnBzT0FnSitEbVl3dUxUeUEzajY5TVFMOU13T3ZLVWlwT3JKQ29JSWh3MUZtTmZzZjVaR0YxRGV5aWFsY0xPeXY2Zk9LQVdUNE54L1padGlDd0dRQ3REUHJwcjF3Mm5XN25pZWJsL2U4YWRpV1NiZUV6bG9vSWxFK1F5cVFYRmJ1MEptTllqNFo0aHlJNjZWSElWNkNxMlVnVzBxMVp5eG4rdFVPaVVXaGZTcm13SG5SUktYOTVWZ01JcjZzdWtudXp4S1B5Q0ZtOEZGVVl3UEp6UGlKY096SU5sbWxoWFBsOHNiSisrUVMzK3J3NkVCcXExMkZhMUQxa05BT1Q1OHVUay9ndTJneWU0c29odGd6R2NhaEM2cXJELzVNNkN1M1U2NzdielBMeFlzRjVZVDFMZFNTVUhwb2pBYVJjRmJ3bERwSkpZbWNJMkxCcTRkN1N4cEkyTUp5KzAzUDI2VmY2OW1icks5T3hmbzU4Nm13SjB5cmU1UzNHeVRsSUl6TE9NVCs0WEpBdDBVQTRjc2hnQVl1SW8xMTM1U3JaeExjbWFtOUdWRFV5eUI2Q0VCQ052bWk2Nlg3ZytwOUdpcldIQzMySTVvN3FleXVoWDNvVWVoaTBraVpCUEkwMm5RM1VrMnFzcWdzUTRRWjBrdW1pb3ZGRjJibXBYem0wZktiaUNIUFVEWjdXN1ZRWnZ1NElFamhoYldFTFdvQ200cFcxMWNzaFhxYWw4alcwMkhSaExGZ013cE5Oalk5VjZvN0JyUWV2TnBvZ1h4WE4zdndlbFRuYzVtSWV2MGhhd04xeVJjeFBhRnJVd0t5dEx5UUw4MGM1U3hZT1M2WUNMdkRMblIxeklQYVpqM05Fb1F5YmlwMGxjVjRDekZHaG9GNXA3MVZUQlBUVlhkN05hUUxObnNIc2RrTVlCbmpXREJLTzd3NUpQY2RxTmoxZmRSWWFtcVdTZ3JrQiswR0I4M2Z5V242azJjb1V0Yk9CRWNReFMyY0dHRHBUS0hUOVd3MWVONXR5MkNlZm10YkFzcTR3QVhtQ1k1a2d6VGNReXlyTWMzVHlDRTlmSkVmSEcrRkpvcEhGQUkvSXVkcDBjbTZ0S2J1TXk4bDJhNzFoQXMraWxJellOd0Uvb1l6ZS8vZkxXSENWSUp5T3Zlek1rTXRuUG9CNGdJczN0dmY2V2Fpdm5xalYxQk8zYkxVNGxOeG9RREVJWWsvTnFpa29UZDZZeUZwZldPUkJUa0FxVzdTcExWYTlPQ20vc3dPckszaVhEcElFbmlJZGQvb25rS0hmT3NCWlYwRzhXd3F3SnFNOGFiS29zdW1ycDJyOWJYWFNmby9uQTNSM1VBQktlSnZidXJlU0toWktNd09XNStiOEJoaE5rSk5RZUl5cHBaU3lkbStLanRkc0lWVjFDSWlSOGxKUjJvT3VYU2RiZGE0a21oWkpMckt5aEh3MnVCS0lCMkFoWFI0c3FMQlh6cmlSRGlMdUQ1UWN5cU01ekIwMmgwVDdLZkhsa3g1NkticzFrQ3BrTm9McDl2RndxdTFKWmJteDhWSlN6eXlsaE1EWkZLRVVKQXNYak1uazZaNk5mTVdYbUptbWxOQ2VMU0dZSS9sSXphTCtmRVNTSUw1RkdDai9LeGJBcFlyNk5VMDlaV2h1WDIwTjV0aHNZZ05BdTFWeUY2NGV5WG5BWkhja1Y2OXRIcEpVa2dDYnBVVkxhbGNoaUFJYXcxYXFXNWhkeitWa3QxTTdOTVBtc1M2T0xaR2NXbDRlQzZ4TkZZZEs4cUh6aUFVaExldDRZSXAwWWQrSVpMRWZiSGxMdVFObVJHUXh0QjFTYlJoelowUU8wcEd6NlI2Z3RhUkY0YmtXR3I0cy9BUlJ3RWVLTjZTQkxBTHl5Vk5KMk1WZFlybzFsMGFlUnlkb2dWeWdWQ3kyOThJUmllTXc1akdBM2s0UUlSYWM5Z0JtQ1RoaEkyd3RzVUVFREN6Ymczd2dabzhGSmpSWFp3azV4WGdxbWxBVXZDMmY2U2Qvc2hBZFFHWXJIVUpnT3Fjb1NtQ3AxSGFpWGpYSlo5V21YMzFsb3lXSUw2SjNiODhZb0hkdG9RQkJnTWVFb0RVNEV4QlJnK0JYVE9STVdhUXdoSWRaT21iUjdsQ2R6Y3F3elptblhXZFBHcEJTTG14UVYzN1FORVZHMTR5NEpTT3VHWFNQYTVuMEJZdUNrVWJCTkFVSVhMejJKRVFCWXJIKzBheU1mS0dVNHVDZUhPL0ZoWUJTWkxVYTdsQXZTZzUvWU9oU3lOcStSSSt0dklrK2ZhRW5ER0FQdWtYZjFkSGxzZWNxNDF4QTlBSGxUanNXQm5oQmpGaEYvd29VS1lobmdNVzMxcGlSU2xLYU1LdUszMHE0MmdLOFIwalJRTmhxT1U0QVpnc3FpQVdEUUtNMHJUZ2taSGUyajlraG5DU1lYa1pNTlJCUUROODlzQUxwVWlXL3ArazRNU01vNnBST3lRUUM4S01KZFJKU0xrdGxSeER1Q1M3cThwRU8rVGh0TlZOZVNHL0I1aUtsUy96RWdWQzZmd0d2RHJCMUZFRTgwNUF3T2FFdWtFRmt5WlF6dDF1dWtVamdFNlVkL1VENTVTT0htaVhYZ0FZeC9tcEdtQTByVGppTGxFa05RY3FCZ2hzUzk1VmJ6OGh1QTAzdmI2b1E5dzlCYjhHbGQ5R1NXRGxsQTBlcmhzb2I1Tmwzejc5TWJzOXYwTUthRVZGVHh5aTA1dDFmczE2b3RWeFpXREFOTE1BUEJMU01keWhGUlNMTUhjVjR2bU00cWdTeTVsUFFLME5ra2JvQkczdmlneklJdjc4eWxxOXJ0MnFsUTN5T0tlRXpEY0NnNkpobFZvRjhiN2ZDbXRLMEJoTU9QZmhWQVFQMVR5Zzc2UjE4eUJYQklKNFhzTTNyMkZucEp3V3RkWExLQ2gvRitJUW9QSldMNUpmWDZYOTFRY1A5aWY5NWRPNVp6dWkzdWR4SUZCTURueGhHR3g3b1dicHFZUWVsMDlHTFRmZk5relQycmQ4M0xyS28xNUZoWm14R0FzMXZ4U1I0czdXQkcxODV1SU9XVmoxYk5DTlFCU05tQnJKUzJTMXpEckV3d2JCYUJYQ0hRZjRadzFtRnN4Z1RPWnRackNQOE1ocWFaQW9KbmdCS3ZGZFJGQXdTdXBPNTkrTmFpKzhWcnNuYXZQd1Z1cG5FajVlVjYvZnJxaWFxNzg2a2w5K2pabXF2bzhXNWUwNkZORFF4QkJUc25pbWVjaVRWZlphTXgzUlh6TStrQ3c3REdTWGdBOTZhcmxPaVkwcVVaSDRlOFlHd1JLQkY0RDZBQ2dkUFdycWdDbnF3ZWdPY3hoa1JSMXBCNURiQlNhK1NxY0NpaU1CMWsySk11Z3VSZlh3Qnh2L1NLdkh2M0VKWGZUWEJVaXY3NWE2dnU4RnpOemVvckV5VjVGek1DN0Mwb0pKRVMrUzRFeU5Dc3VxdmNpbnVVeGFKT1BNSml1THNVYjRiZ2pjQ21BQnBCa0FNWmlrZVM1bEU3RWFwMC9aQVkwL3FncXlBeUd3QVlqSGVkYkpwZWhUSlZJQmhHLzNiTitlL2EzN1hwSWdVMnJPUTJ2VmIrcXFteSsvSXppMjVFNzlnWHVNMnFZWjZYWkUzbEVxNlhMejFJTXI1RDZoV2xGcEpFMzRKWW9UaG9MQjBGZzZNb2VlUUxPUjNSQU1JaXl2aERqdGdwWkZlUlZ0bDZnVXRsTTRMMUFIdlViOGdBN01iTk9rUlpLTkN4dWhaOVYybkJkN1hlYzM4eHdyN3hnbWpxRlNwNW5hSVl5T3ZPU2g1ZjcvL0ZnaCtKcTNrUnh5WjlyNEpPUmFqeE9pRkNvR1FDc1IxQ3BPc21IWjZ1M1FrTUl6NXFIT1ZCejV3VmNvdEdaWmpXUDcyb0hrQVA2K3ptREJ3anNOanhiamJqK2dEcjNLYk5FTlV3RjNmRERUcy9KaS9BWTlibEZlMllGWGVGNkFFa1hlOEZFRFhCY3BieUphRzhJNHF3QnJiR0tlQXlZUVQzRC81b0JOREdDUFNIL0ZBMGgya2RFaGlxWmYzNnVwOU1hZEl6R0E3VmdEeGp5TzRCZEsyTzRrMzVpdnN4RzYyYTYzZ3U5YXpER1puYkNEZ0x2eFg4ckJZb3VtT3RhUUFQd0lFUzJrcjMwby9jSTBFZjRycUZrbGdiNi9ySG9YM0VyNGFvVWxsL05XSzBQVDVkUTltdDM3YnlsVmQ5cERjNHpSUTNOT2JZUU1oc0FCZ1pLMWtJMmgyaEhrU05uOGhRekt6UnN3aWFSclVHZUJwc1ZSclBVK05hUzRwdlNlczhZbUpuSVdzQkpPM3grdEdabGhvR1RaNEltSkNsY1AwQWFrRjU1dzF1bE84TE1UNUxrdFZSMXdtaEErOUhrby9pQVBIMEk1OEFEUkJvWkF3UEFOc0ZrdGtBYUcvQ0VrSGlmblRwSU5mVkVkWUFyZGVkSE5DK0Y0NWVaYkVsYUhxZ3NtcG9zczNic01vQXNGVWVzT2g3ZmFZVWxPQXBwakVFYW9wOEtuVU9WYlRxR1lTbWpTa29ueEwrZFREekVjY0REOUFoRStHUEhpQnRCT3VSN2VBbDRPZ29HekN6WVFPZ0V6Q3UvdlFNQ042a0tSaGc5YjkrR0FTb0g4R0FIVnIrWTFSS1NLSzZtYXkxZ0Y4SWV1VjdaWGlPUU9hSm1sSlNYSGJtMXlFcUxCNDN1S0lIOEdWeDhXZFhBL0FvbnNCdHNnTmNCM21VVHhaSzBSQ1VIQ2lBSzhYNlFHMGlVR1lEWUFlQUxmQ2tZUmlIZHE5Z29nMk1wY1ZIVWN5SGFrT0N3Y1R5WHZoaW1ZMldBTmdMSHB4OC9kT1FLYWFEWEFYWVl4STFTTnFrRTE3YnZpOGdTSWVRajhWSk0yQTZNcjZSR1lMS3UwYytkL3VpQVVJb1VScUlBM0xRcGJJZTRTRG5EVFh5aURNYkFDdE5MZ1BOYWtXNGh3d01Nd28xdVFvbXh1bSt3RE13aE1oLzBJTndVdElPUHFlUnBhSXdsU2VFSTMxZ3JGNkpGVnRwcVVCckFZeVYrd0FZUUU1YThMaEE1T2thRDViMkJiNCtuUmJzR2lIU2p5UGRLNTViMGQ0STh0STBpcmVMSUdKeGFaZlJFSW9IOGd6RG5pamlYSU5zVW1YOFJqd1lmc2FRMlFCWUJISnBoN0tZYXZzeEMwL2V5cFZDYTdRTEIya0UzeGEraDQzMTFnNmdkTEJDNFRIRTZZclZQTEFHaUs0L3B3OHNtZkoxS3JBb2xDYTRmVnpSblVMaXNvNlNwSzZyUjl1V3hqWkhGZGwyN1dURVFnNjZDanlWcE44c2hMblk0S21tUDd6bllmcFprWWJySzdvY2xYUllHTElocENDTDRNNGt0OFMxb1VieUl4WWk4V1E5aVBpTlNzWlRhSnV4bFlGbk5nRHpBQkJVNTlHSlpOVXpVSTZSR0l4aW1oQlFPblhFRkFKREhiRVBpR3gxQUE4MStJR2tQaEEzV21vU3NtNUJUd2Naa1ZWdHh0ODVWbkM3dFBkdWwyNFFUU3U5UTY5b2JkRXhxcnVUVldtN0xFTmdYNTRwWFFpSTQzemRZUURDRDkyRVgzVUFRK0NDQTJQUWJRZWJlbmhaWmw2UHRQVmRjRGVqNDdSZTRlWTRxKzhSejRrdmRsUFg2Z1h0NVplUjZ1QktoUVVxQW1HYzJFMHJ1aDg3UTNxOUFHTnF2NUdRMlFEd0FIRUtzRUhaaHlvOGVZbUZlSFcyWFczQW9VR1NKdDhPRktNUWk5dkZxK1JVbGpKZnF4Y0xiOWhadGVPS0xTVzNiU1R2UnFSd3ZXbG1nWUZuaDNMRTRMUTRwTTBZU1ZQUkk1aGhDQmZvRUdEYVlIRHhOZzNBbWY3WjRLTHRmKzY4WHFSNVFkOUhQbkpleHFEMGpQWlV0bVE1ZWwzUVZZVEVOdlBRUHgwMDlBYnYrMHpKbWtFNDF0TEZXbTB6R3dESW9yQk1jbjJ3TTVkRlFVWVE1QmxsYWlOSm1TamtHRWZZN2hpNUFNTTFOdnNRd0U5QVlBbE81YmVQRnR6NzM3RERUZXBac3cwc0FUQkM1eVQwU05Oa0hCcFpXdTFpREU1Q3hPbHpnNTJUTmhHWm1NUVkrREw0TnIzck9LVVhYMTYrTytjdWlwZlg3cW5vS0xpN24xNXhqN3pRc084blYyU2hmcTNpNmVIdHpCQWl2bjVzUURnaDNnK29kM2xtQTZpbkZvRVE3Y2ViOFVPOWpyUnk4VlN4TENyRVdBT3VBNXRoc0Nwb1dDNGswcDZnRFdXZzl1YnQwcElFT2wvWE40dllkNjl0RXZaNFdQV0IyWFNiam5RNjQ5RUZ5djE2bVFDWmQ0bzUra2V3ZmlwR1p1WTVsY1pnMmJxNWI2dHpWMnd2dWpkZVYzVGZmcTdoN3Z6K2ludjBkRVA4Nnh2QmJPMkRwSkhWU2ZpNnB5UFZKc0hvSVZpSVpBeVpEUUQ4akNoYkNCTDNJV2k4cXhLNE9EOEJHK0U3MHFIUW91UVVDaU4rSWN5eFZJN1NEYmlNVG9BaGpWdXR6Uys1TXY2K1dKSzMwcFp6elZsYWdrVk1YWEdiZUNmRmRDNmRwbm1hcWtmWFZwQ3ZpL2xWc1ZDMTVBRnErckFEdjNreXFwMzh0OTFZY0RmdExyalBQcmJpN255OHBvOXU2QU5RdHJGRkFFTEFYek1pNnVLZXJNbTRtOFVlY0wyS01odUFkb1RwdlhxOUZDS1hOcW5QazZ3V1Jac01VMFZSZS8xRzljYWFqWFpWc1g2Z1RUTDZFVWlhK1NUVHhteWp4c29CYkpkSG1hU2JVOHNlUTFiaUdBTmVoYW1BbzNjSUZVa1VBZHQweEdHcUtlWGsyMlVHQ1RPZVVWRlVuVEVuMWFrWUJmS2ZoSkRXejZHNHV0NkZyQ25QRlBITzE1YmNYcjA5K3FtRFRUZXZLd1Y3YTBoekNEak1mTk00RW1TNmdwRStSa2UxUFM3OVdraXFmcTFrWmdQQW5hMW9KYnVpZDFEcmJOL3RFK0FWblRVRW95c3hDK1F4Q2pwRE91WWpyQWZTT2RWUlN3cldDcnZLRFVlb0lvcWhycFdYN1pIVU9ScUFmWjdGbEJLaEFobjRTQ21UV2lQWFZkWnU1V3RqdnMyU244QmFva0ZaTkFLcnR6S2xBakFSME5nTG9TUkRxT2tYUlhpNSt3MHYwemQvNUwwKzh0Q3liWkExVDJCRzRBMEIrRTRPL0JxRGR5bzNFakliQUQvcFVwVDc0bWRXbHZpbGpUNVVZWkpyM1VWdDlWMWVSdVU4bHZFRzRPdW85MGU3UjlRQWxNaXFuZkJTOC9VNjIyQUx1ZEFxeVhFZklJL3lkZU1IRHUxWmdDM1Z2WklTSk9EcGJKemc4SWxldllzTmV0V0pYWnVpZkIzMjFqWUV5d1I1V2FtUndHQUlTQ2pQMUNCRnZucWZjLy9vYk03ZDhjaVMzdm5UOXdTMExyQjlqaGlTb2ZGdHJLRk9yYWFNUmtWMXRjOGFNaHNBSG9BMUFQMjBKMng5S1VyWTBwTDlDUmF4Y1VRUFFHekNqM0hiQ3F3aXlNWFRNUnJXY3k5UXhFZzdjSGJLd25DdWlFR2I4OFVrUnRqa2tYQlVUQUpQNnhoQ1licklxbFlWeEFhSzAzV2h2YUsyYWxHV2g3R25nOENqUUhoWDJuc2RvUFZuV3ZVMUJYbFd6YXp1dHV2TDdwR1RkZmZ3ODNWWGxYWU5SOGM4RUdnS0c4WGN2K0RkOEt3aHN3RkFnSG1jUTd6M0RKRzFxT0FJQnpoSFZINnNOelJkdUtnelBCR1oyaUZQd0NqcTlnQUptQURzbzArQzVJc2JkREN2TkpkamhrRFI2Z0RXWGlFUTdGV1ZFRFJ1T2lEOHFQZEZxTldNejVSUFdac1dFMVRvcGVkTlhzcjRsQkZ3YitDdEJ5cnU0S2tWM1RDU0g1T1c5WUZZWFNZbWhEMEJuYU1CYk9CT3NNa25RVFJJZ3FrRzVVZmw5V3BEdDZ5YlNjSVhwQldmYm0rM1JhMEIyRHJkTk1WMEdTWEcrVFdXQVEwaDhoZ0VOMlpJK3lsQWVHUUEzQlRXVFdBSlZrS01ia1V3Z3dianN4ZHcwRU43eEhjQ1JWTFVHMTN4MG9adHArRFh1RFl2QUkrNkRGUUpMOGdjMEpkRURtd3J1SU5uR3JxcmlTblJIN1V3WTZLbFo0SUhUZlNkQlhyV2tMMUptQUxTQ3V4RkZOYUFpZE1FN0hKdys5UkdjaWhJQkV6ZUlQeloycXZFdXFnVGNLRUpnRDZ2Y2h5UmVVWXJ4YnY0L1FDMkNVUkxmLzRZZ2V3VUFvUGhDN0JyUmNiT1dnQmRkUjE0RXdXSi81Z1dnTEZnN2NTVkxOYjNoek9WSGlFUHJIaW5nV3ZFc2hhRnI5WmR6Yi9STk5DU2hnMFM0VVZnWDJJNXBnQmtrVFZrTmdEY2pIa0FVVE5lK2xBME5qbHhCTTVRSW0zcHF5bFVlVWEveHdOZ093QVRkR2FGakhDdlRtdnRCUWhlYWQrbUEzQUJvNWlITk9aZXpXMEtoRVVoUkV3WmJScURwRHhYL3B6dUw3VG9pVVhkaUFUb3kvMm9wUjllK1I3ZStpR1VZRzNqVjUwQmFocnduYlZuQzlmdDBLYy9wUHdHNnhxYkI0VE1ybW5idEJrQUtGSk9JM1BJYkFEY2JXSVJDT2NvYjgxZ1dnNndpbWlHQjRCL1d0ck5KTVdtTlFwTWFsSVdSU0ZMa1JVbm9xWStqQjRxd0FVd1NlV1pacmovRGcwZXNsQmxVd05JMFNBRkVaZEhITW9vdDBvU0E0WmU4Q2pTTnpjdWxZNVRqK2ZhVTdGcEwxQ0prME0wRkM1WnZhejBWVEY5aEdPclhxSGpnVkxST2lXYXVrY0FyS2Z1QjVCTkFRTnluUWJMYkFDc0FiaHVSWG53MHk5UVpZcXhoSWNpMldzZEVCVklBMlFISEIwRVAwcU5Cb0ZRQ0I1R1FsS2wxY0dQQ28yVVRoaUFEWGpjSnVWQ1pxT1gyS1BvYzE2N3RyT1JjZGxabE1yQlA2RlQrUlJpbERJRitrYk9ZcDFVUlJ0YjdZZTIzQ21zNklubDFrcmVuZExyYnkzMk9RSkRweFVDbU1VOFE4aXNUT0hJM0FiaHhrVmdvamhqcDhmSmV0Z3VSL2tjTUc1Vm9aN0lsN1E3RlkwcmdiVVdmZ3laZTVlMHpFRFVNaG9HTWZodFU3RFM4SXJBZ0xlUE5FU0pxVzZ3NERrejByMGFtRldsSzlvRUxLV1RMd2w0aENqMnRkTUFBUFExOFhJUFUyVmZDNzhrT3E0RklIYzNyYkVKRUZpUEdlcllnNVlMdXR3bGx5MWtOZ0RRRDdJR0FNNE1CTDdoVjBkVUVLeWIrdy9sUkhRSTlmcng0V0ZSWHZKOFhCQjJKU0FvVTdodlpDMVpNMEVqNHVmRkVKNGI2SFZaM1E3MlUwcmNuV3NOa2xOYmlNWmdVcjUrSXBKUFkwampzSEp6QXhIUzQ3UWVxcWpEQUFRYzRURUEvNTZnbm1Hb1BRYkFKV0hiZFpKV2UyazlPQUlqdXdIZEcwT1pEU0JlQnBvMWR2Yk45ekNjcWNLbzQwR2VvM3NSU0tFWmlCSmVtREtFSUJBLzNtbEY4TFZnWVEzQWF0OEhsWU5ER1F5QVl2WUUyb0NTOHYyWGg0UWJqMkdGdEFxNHlOTndvREF3b0xDMWVVMlMwQWprNHZ3ZmpjQ1RWeHZ4UTkrOXQ5SXRkR21ZQVkraURaWU9nbHBsYk1sSFltU3A1OGlzekkyMGFjZ0M3TXVVV09FYU1qRSs2VEF3NFNCaUFkbXU4d0J4TVVrNXdORUFiR1FyWS9Vb2kxNEdDZVI0RTVvR0tvczBFQmFMVEQ0MFllL2VLWVA3dDB0Q2hHdk52YWNoYVlGQ3RSa2s5QWFqMURDblVBUmFIU1UrQTYrZEJxQzIvdC9IU2pPMUlRUDZZNlBkTEZ0cDh2RkFqb0loeTZuSC9TRnExZzNaalVZR3dCeExSK0k4M1lzS1BNT1lEVExGTmhjcnRpbU1Lc3JBRTlLazFCOS9xREIyRHJkdkFqTEFBS3plQW11dHFjWVl5Q2tOZmw0TXNTc0FGZlBxTkI4MEFwOEp5WU1hUEdVV0JHTkJlWklVeDloWCtEUDRMeVZZbjRYQTQwbjd0MkF3TW1aN3BkMzRWUjgxc1FQTDExT1FvekVWNDhBSXZISzhhQjZBS1lDbmU4a2NIaGhKUjRtY0FyT1JlWlREWVFJMkk1SWJVdys5UUR3R3hHTHVHcmpZdXhoalZmUlVzZTJqQTVPbGZWdHdtd2VBU2NFMVJWaXN5cVhxVUJxOHZoM3dJRjA3cENHRXVrZndwZEdEUlFCcmwycHNVRG9SMnhFS0xMSkc0a3Z3eU1rdkFqRnd2VktuNGNtVWVUSDhFR2NiZ2FjVTI5UHVSVE1BMnhTS0ltQTJjdUQ1U2M2eDd5akRhOWRiTzgyU0tVRGFRdkYyZ014d2haRWd4SFRJVHdHcWtuVHdJQ3g4ZUliT1BmNjhSajJ4TFJRaEk1R1pnYW1lTjROeFQ5NEFCSXNCbUY4VnoxZ0V3clkyUGxZeUJLK0ltSU9sMkpkWVJwendIQXZURmh6TGlLMnhUcUZ2UkJIVWlneFc5ZW9Ib0dZRTZyVDNXTG9UcU1JVmpmNFpQWFZsM1NPdzVLRGZQT1VFRDIyUjEwWkM1aW1Bd2NWOUFDelRkNnczV2Fvand4R096bmNzQWdVVTU4TkVNZ0pHRUlqRWxFN3ZRRVFQdzd3Znk4MmxxeHh2Uk1EZ1dCeXlNeGNEQUs2dVBDK0lldUY2WWRuWmhBNXloU1JTdTVpeEN1VkNIVFd4SDBreUZIYlhoYVloRWgrcGdrNXZJZVNCRCtPUHJQcUN3WkpuQy92c2ZNTU1vS0I5Wk1ZS3lIUmd6eVpqWlUwOHF1U0tJV3ZJM0lScmE5dmdJUWFpTmZjaWF2b0t6TUl3eWVpaTZRaHQyMGNBQ0tJeVlTaU5BdGtLUmN4bGpvMTRDUVZjaGs4aTRaTEpEQ0dGMzE0T3RSRXY1WXVJL2VZUVFQcVBzS1QxNzBOSTRIZ0owRy9YSmxBcTg1U05iMkJKS0RZVms3UjY0aGg4VzZzS2RUd0Q4TUhqNHVFUHdmb3M1b3hOOVVuZi90VzJkZWNlTzdPaVBSWE84UkhZNVBFNkRkUThZb3JqZytLc0liTUI1SEw2VUtnWVpOUkJ1RitneXVwOVA0MWhNd0RhcVE3WkdSNEp4T1JvQXZJcVlBV1BJSUJuN2tabW9PRnpxZ2piVHduQlV3aVFPcERHS2FDbVcyZ3R5bFhHOXdIc0oxb1lWUndlVkltZzd1N1ljQ1dtWUVaSGtTRlRSSTNSRTQvdzdkTWhOcmhVbW53U29FeWR0VEE4c2NxVXIycEdQenl5RUJ6UlZuWmVWbm5zUk0xZ29XdC9hbzRoZ0NYMmhSZ3p5cXpNamJScGFIZUZ1WCtNd1BkRmFEcERaTXpxQXd3UitmUVU0QTFBaGFyd1lQNU1lK1p2T3VWN1NZbkFWSVpDZVprQ0k4QlYybVZTSUdnR0lCUmNCa2IveUZVQTE5TmVzSW9qY3dLSmdvZUlVVkNCcCtRck1VTGU1cUVlRGpGNmFIZzNya3JTL0dGcDFnZGFXNkZpSDVSTGhYU090T2lwVDdZNFZWUGpSelJLdXYzTGJ3eWR1OUJ3UDNoK3haVzFyNXdiWW1DM29LYko4eEFWQ0lYSkttY0xuUUF6WUpUZGFMUWxTUGNCVExkNDJYNkJLZ095aEluRmoxRGw2VWhVUGpEeGlMaW9SeWlTaFhrQ3ZBQUNRQmUyQUJRR0huK2E4QlhieUJhZWh0WUlLSWhkUytnRVFuWWZRQVJNZ0ZZbVBCQUthUk0rR2ZKVzdEMUdWYThNamZOQ2lkNDBZWmMyWHgxWjFKcytGeGVidHMydHFRNndUakY5Qzc5L3ZDdmlWa2JjRGgyNW1JbkdScHdjdnI4VGVyZGhtNzRBL21WdENUdXZoMENqZWhnVS82eGo4Q284OUFOMFpDVVAzVHBraFpZdFpEYUF1bFpaZXVQS0hsZWh1SDdCR09NVUR5VnRoS0pWQmQ2TEk1OG9IeUg2S3V1UVpHSXg2ejV6L1lxTm5uck5Rczl1aFFhalFCQUl3UzhDOVlVUWVRQXpBQTFoM1JTMmUrU01Fc05wZUNWTzFkbWZDVi93YW0rdVY0cmZNVmwwZS9UaFNyNXJlTzVpM1MxSUNSTXlodDA3Q25xQlF3OW16aGZjV2Yza0Mvc2Q2UU9OazM0bzB6blBlOXlDVWdJdVF6QStsRmFNcDRFMzBpT2lQejJaZCtjdk50dzNubHdPM3owVXAvQ3A5Z1lIdllDR21LYVNRVXZ2SHdicGhzb0Jvc3dHa05OZWE2TVA1Y2hGRDBJb3hRc0hhSm1uSXZMSlpTQjVzV3RYQVNZOTBLbFF3V1NoazFlUU5RK2VBQmd2TU9DUUozbmZ5dU9EQm04SE0wV1lWQlN6a1BRZUlBaFNlUzlNbjRjU1c3QzM2TjNCSzdVTFo3czIxeDA4dXVUKzh1Q2lPM3l1WVFiRlY4Y083Q3k1dDl3MDRnN3MwZXRtNHlWMzVIVGV6Y2hOODk2Qjc0ZG5LdmFEYm5XR2RBRzlGR1Y0Q1FlL0lUQzFwZWgyYW92M0gzMXJ3WjI5eU9objZ6MS93Y3d4Z2hSUzB0U1lBWmhFVTVVREpMTWFRSzZoSFpkYXJEQXdiZTdwUllOdUpxWklKdlNiTWtZcGJSUGxteEY0a0k2T0FhZUNPSEpSTmtRUnFrMEZJYmJPQTZzRXl1ZW82NU81K25xNkZsVXFsREhrNVM2WXk2T2d1ZGVPZ1VDUEJlS0loTHhIVzYrdTNaSFRieFkxM0NlL2ZkRjkrOWxsNGNwcmk3YW1BTUd5UmV2aFl3MzMvWk1YM1J1dUs3bTMvY1NvdS9uS2dqc3NJemloWHdCYldKWlFSQnorOE1aZStjb290Tk5RYkFmNHNVNnFSVm56L283SmtydE9QRHp3OUpMN3hoTkx1Z29JeWxkZjZDZXRPZkF3NUFtZWdwVTNtendGeXhpeUdvQkdZcjJoaFV2VDNCYW5IaUVwRlhjSUQ5Y0tveWlkQTdiYkM2b2dJT3RKMHJKRCtSZ0J5b2NjaG1EWHdJcTVFV0kzUXlRTmd3bjRXUXZZSXBGRzBKZllPTXdBUUtJcEFwNHF1dFRhcnJlR3I5cVpkM3YwR2J0SG5xdTV6OXcvNzA3UHQ3UUhyeHkyWS90Mm5pSFJsNUsvL25UVFBYVm13YjNqdFNQdTVWY1U5QjVpeVQxN3FtbUx0cHAwWUYxSitoT05RWFFUZFpIeUJzaFVoS0ozYlMyNEczZm4zYkhUZGZjbjl5OXFmMS9KakMrbmkzdTJoZHNESXNGYUsvRWVBeW5lYnRabUVkMHQ0aUk5Vzhoc0FGV05oUzBUcnFIWDdiUm5iZTJIa0ZoK2VhVm9iNjBnRDBabm5BSzhCNGdHc1pwcEZLcmVlZzlBVW1uekFrcWpReGE4MkpKdENoRXNYZ0hjMEZnSkJzRG94LzJiRWFvT0E4QVFHTlVUZW5tVVViOS9TdkI2YmZ2T2g1cnVPMGRVVzVwd3U2ZTgwZHJpVW5neGxpU29VN0Myb1BYV0hRODY5OU5uVys2MkEzcXo1K3E4ZStaTTNwMDgxM1FYRnYyMEFDOSs5Q2V0MjNuaDVPUFdFL0krKzlqOE9aMXp4ODgyM1I4Slo2RTY0YVprblBRcHI2bkpYaFZVR2paU25CaFM4bHYxMHVuRW1Hdk0xZlZDNUdxUU52RWVxY3dHTURzN3UrSm1tbzJGSlMySUZ2b2JIR0pDaVV0YWtaM2ZwaEhaOHU4dGVRK2d2S1NEOHBDbXJhWlhNZWZiVTJ3ZFIvQUlRQWVDeFF0d2NFbG84N3ZTZmhFb281TjExcE54ai92VVRsdEpzNklGRm91NW5Wdnk3a3J4cEduY1Bmak1rdnVMaHpUcTlVdm9yUHlaS3BaMStCRW5neEJCT3dKL0tKUyt3WDlEbmZtc0RPZUJwNXo3aFZkWE5DV1UzVjR0NEk3TjV0Mlo4eGdDM3dPZ244RFRFZkVxcGFQNEVWM203WmdvdUd2azhuZG94WC92b1VYM3B3OHU2aTRtbTBIenJpWWVDdlpTcTNnUVBIMmcvK2pYb3NBUG1lMGpSVGQvc1ZWZm1iSGZES1JHWEE0V3NoaUFJVjJhT2JuY3FqZHI1c0pOLy8xb0lTWnhvbzZmWDlDSEcyV2I2cE1wandvRWlTSkRyNHhiV3JRNzU2Y044b0RSYmRxWU1VaVFwZ2psaWUwVE1LRytvR3ZtbTY2YWtDRDlPa0EvY0dMWDFhUGFWclZWaTZ2dE9pRDgrUEVsZDk5ekJmZlk4YnFyNlkwYTNEQ2JMdm1EbG0wb2tTZXhxd1hvV0NsOFdNYjRWZ3ZickhGeXR1aysrdGVMN3FZOU5mZm1sNWZkeTNacExwL1NBbkV4NytiMFRZQkZmZExlREYrZFlhN254ekg1YVZ4KzRlZllHVTA3OXl5Nmg0K3VtS3N2cXQ2clcveEw0Mlk0aXJrdkVrTTdoVHlBbGd5YWpaVUxGMDVrZmpjb2l3RVkvZnFwN3k3cmQrcVdVQXlFK3dWVGtDcHh2eWNrb0JmbVdtNUsxbzRWZS9ldlJKQ2xhVmluS09SdW5QUWR4Uk44T3VCUm5nc2ZWdlFhTkJLdWM4K2QwdnlwZDZTdTJWcDFaYTNjY1o4WVhrM1RJNWR1MzNtODdoNDl1dXlPempUZDVNUzQ1bm90dExTWEtzL05GZ0dhUUVWTU4xV2tDS09ZT3Z1ODl3amV3RTFadG1VcnA3dDJUWGZ3eEtLOHk1SjcxYjZpdTM1WDBVM3J4N0RLOGdwNERBSmVneW5pMGFmMTFzK1JtdnVCM3Y3aHhsVkZmRURmNW5zV3NDbGpOS3JXWEh3Rk9WQkdFWk13TTdFVzVrc3p6enlZTmdCUEVNQTFRbVlEbUh2NjNxVTlqY1ljaktEa3ZrRjE4Q3FEZHFmMW84bDNINnk3ZjMxYlNVTFhyNDJkbzYzdmlhR3dFM2t2MUY0NDR3Q0FMdW13dnZNME5FK082NWRIZVhMMk8xK1ljOTg3V25QYnRpekp6UlpOcUEydDV2bWwwd1hWczA3Z0lRc2p2aXFyNFlaTzNaUXZRMER4T3BqeitiTmd2UFhrU0lYQXc3Tk1GNXhoNzk1UnJRTU9uNjVKbWN0dVFudTZkMjRiZHd2ekYwUmJENnIwNnJmZVhyY0hWdERodHdOSGRiUEozRHhLTnlQMGhwaHdrY2pIS3oxeVE3R2EyR2R1dElOdzd2Z0QzeFRtYkdGUUE0Q1dGOFhDd25LdXVYSTZyNWFpM2Q4SUJHME5kRUxnZjNqUGlrWkYzcjN5V3UzUGtjVmYxTXVsOGJjbkFtWmhDMEx2MlFkUEhnakp6U0NGMXR3N1B6bXJBZTkrNzB2bjNhTzZWTXRYeXZvZVQwRS8xZTZWeWJ6TDVSNGV3b1JxQ0h3Wkk3aWd6WVB4NVV2ckUxQ2VYT0FrRUNRWE82VWtzSHdJS3JhQk1hYWpBb1lnMThQY3Z5d2U1cVNXbVFzcWt3RUFqZUpIOWYza2FIQVdpejhiOWFvajd6blZPYzBIeGVtODBnV05zS3JXTWtWWGYrSDAvTHdlRzFsSVE0V2kzdEdnQmhCYmcxanovL0pSZUVTWW5ZODNJNWppaEFWOUdsWEE1M1JwOWNIUExMcjN2Nm5zM25pamJxUm9FY1pUMjdRWFNaclFYQm1UUTRJU2F1MUEybGJIaWwrWXJidmYvZnk4KzlQdnpMdWlsRi9rMnQxR05RcVJhelZtUTJ0Rk9IY3VFekVLNWlUdmJzSHZZUkE2dkZnK05HdjNCeDVvSnkra1UyaGh2TnFpVkhqdHp4YW5ZZEVuS2ZQNWwyYjZKMzNVME9DQUQveVpJVVM2TUpBRUEvWk1KV1ZLQ0lZSFJoaEF2clYwVENXOEc5TFJNZzNlSzcwUkEyZzF6NTk3TmpjMUxYd1lnQmRCTjNLRXFOcFFyTkVuTjMxR28rRFg3bHAwMTA0dHVldW44MjZiRm1SY3cxcVF4aU0wcTk5eXVheFgwT1VtVWlGTmlVVTFpNnNUK3ZIS3g0NnZDSGRUcTN4K2lWTUtsMlg0YTJjaFoyVHhoNUJEaUdrTUEvWnRWRklYR1RDNHNPcnVLQXNJUXVSSFp4c0FPdkJGOERSa0lLTEJPZ2lEYk11akRXTmNKYnpCaVVLQ0V2NEMzMG1aYjJ0Z0ttTlJ5UWV3YWhkbUQ2dU1aVG1RUGFCcHNUcGtNUUNRV3Y5V3poNTVzclQ5WlEzZGU5Ymo5dGpsMWNqVHhzRUtHeGZjbENBT24ybTZKL1MrR3dzaUhpMmFGeEYyNDFxR1VDcVYzUGhFeWMzTWRCcEFKd1hFTFVHYmF5KzRNVjBLMlNxZWVWVEd4bHhxcjFKSmdBWVo1QWdPa294ZGowR3BZTVFKU0VoMHVGOGFyZ29BNmdodURQNHBpWDRCLzQyM3dkRjRYcXlIQ1JaZ2FSSGhJejFmVHBVNDdHeGlMZUtKS3RZUGxWeXpjZkhja1NkRGVYK0Z4SWFwT0lzQjBNeVExNDdkOTFSbC84K2VMaFRLdTJzMjYvVG0wdHk0R3BtZ0JlTG5PRndXSDJyMGN5U3JZeHY3aGtJcERFQ1dNajZpS1dKSkUyVlhTSVJqNWNyWnZ5aG82TVE1bERtZkFrYWYwVTRhSlFtek5vUnJBbFpNeCtKZ0UwTUtkaklxZzU3YS9ZMHRSRDBnWld4M2U0QUVLa1dxazQ5VVJRUU9NVFY0bGtsNTBYS3VmdnI0RS9mcGJnVFN5TVo0VmdNd2pvNy8xVzgvZjhQcmZ2bnhRckdzbTVmcVZoZ0JnYmNrTW5FbmZUQlZtSklZRjF5LzhiS0dGdWhpR2NYVHpNZDgxY3QvMFhNOTloQ3dtdW5rSTUxSiswS1ZkYnJVaEJWUHlrUmxSZ0NLV0VhOHdXQTRZdHRBTEJwWmpHTjF6eGoycWVoZ3RDZWt3WENacXdzTVYyd3UvK0N2UC8zZlRnYklRVm9uU05lVGNBS29CSWc1WktUemk2MExwNzVSM0xIbFo3RkNMcTM2aHNDT1diWjFENlhveG9pdHZGVkp2WG90MVJzS0RJRzdkaXpRQ2dOdGN2UEtwN0VmOGVBS3F2QW9EUzlGb2RUeXBDMHZtR2dFSG5ENDU0Zy9UYjhubFRTL1BRRlNoWUtkckdvZEpRTlltVC8xallzWHVhNHlSd2FXZ1RIWm1pT0ZkcjBraUcyaGNlSFE1NzZhYnpSbVdISGJIU3ZWb0x6dUE4WFR5QVN1aEJlR2xLc1N2RWY4MDR5ZCtsT2REQ3RkMGovdE1YajRnQzJoNDJrYkQxMjgyWDBaR09zcTcrWi9HUGxoMDRCM0J0NU83VmtZTHpabWpqend4YStvSjRTNENQUzVBYzVaRFNBU2NTZS85QjhPTlJmUC9KK0tyci90STBaaUtycTVkTXlsVVRwUDJpekN5cjBScEEwQkZXSXU4UnhVbWhoS2Q1NjIxcDZGWE1EZFRhOFhENUdQYnRnZmlyd3Nlb3QyRGUzVGhWaGgrZXlYUC8vN0h6Z1VwSXF0WndwWkRRQVJRNFRyelpVTGozM3VVOW9nTXNmREMxYlM2NDRXTlVycHZ5T3RxblpsT3QydkFlVUthMVd2eHcrTjE0TzUxUHFoMDVEMHVhUytRazhzZDFRYmM4Y2UvTklkRWdQNjBOT1daQXBRY3JDUTFRREFpc3doMWpqeGhYL3pTSFB1eUIrYkY5RENiVzF0aEpacmFVd2doRGdLZlc2TjgxcTRma1RyOEl3N0ovVVllNDhTRjQ3OXIvLzlPLy95RWFXaVRvZ3poWTBhQUhPTldkM3ByL3pLeDNPMStlOVZkUysreU1KT0xBempvQmZEd0xNV0RzUm1VODJRZU81RmE1ZzB3TFZOanhCZmRwV2VLQmJtdi9lMU8zN2w0eEpUMUFXZVdSRFp3a1lNQUFvUXNtbGc1bnQzblZ3ODlNVmZMK1hyNXlyNm5BazNZRGJEOENYQVZNUVgwQTljS2ZlL3RYN3V4S05mL1BWSHYvN25YUHFaSGhSblZqNWNibFJiRU1QaXVBM1VmUGJPdDkrM2VPeWVENVhMamVVS24ybmZOQUtKWlhnQllVOXEwWGZneXJ5N2ZrOXo2ZnpoZXo3MEovLzU3ZmVxT05HQjBpK3FBZEE3Q0xJVzRCRms0L0FuMy9Ubnl5Y2YrbENsMGx5dWlsbnU1MitHUzVOQTFDajdGbDkrVGQ3ZHNMZTV2SGo4dXgvNkh4OTgwNTNJWElmSlhuRUV6VXh3R0ZxQ09FZGg1cUZQSE55eS83WmpsZTFYL0wxOHFUaWlyYU5hWldmbmpSOTlMdXNlOTVKZWk3NmNvYUpkUXJESFBnSzdlWGdaaUhGenFxb2JOc3Q2cVdSUVVaakVkT0xxYXMrMm9udkYvcHk3WmtvYnZwNzcxcTkrL04rOS9qTmlFN2VQOHMwREs4NHVaRFVpRE5NQTBGWis1dUU3RG8xT0hYaTR1dk82RzR2VnltNW1tZlJESWFPNnp1bkgxUUNpZ2JBdGJLdEcvYlY3dGIxdHYzUFRvL09QSEhuZ3ovNzlwLzdqMis2VzZGQStkLzB1V2Ztb1lSZ0dBQjRza01PTVlPNzdkNTJvblQ3MHRkRjlyMm1XeHladktGVUxlcm1KNVVaNDhyV092ZjZvRzRCMVB5MERYWXB3NjdzaXI3ZE5pcjk2Rnk0LzU2N2FYajlmbkgvbUQ3NzZzZmQvNkt1Zi9xM3ZTNEJSK2NTWjcvcXB6YXJBVmRDd0FyZ3dLSjR2NlA2Z0hhVXJmdTUzWHpWeDh6OTdWNjQ2L1pabXZyU05id3cxeEQ2dm1QTVJaS1lJTzlTQXl5aHVjL0tKMURFSllsWWJQUzVYWUxSTmFGZHVRMXVKRi9qcy9RWWxrZFpqbWxlUFRtWXZ1OSt5cGVET2E1ZXc3UWhTQlE4clViajJpTmk3Q2FQYUlUeWhwM3BiSjdWWlZQZjJ4MHYxYzduRlUzLzU5TDEvOXNlZi85Z0hIaFZlRk01K1A5dythUVphUDlLcUdqeHNzTnQ5Q1lDUG9ZNFI4Q3lYdmVDa0s5TnYvazh2bTd6aDUyOHJUbDc5dWx4cDdJWm1yaklsU0Y3ZmwyRFVtM0NRNXFQSC9DSUp2NnpWM2MyaDlCcTBRc1QrUkF4eVVXSkZLUndZQXAyd3g4dkVNWitPQWFDT0k1U1RpZWtrbGlSUThxUVVPNjl0NXhnREd6Z3hjRzFjc2w5ZVlUT0hkcU0zS3JtbE0vbkd3cUhsMlNQZmV1YkJMMzd0N2ovNHRTZUVIcVhIeFI0dW54R0JDSVlsQnV1RDhBMDFtRnlFc2RzUThBNlVqZTI4OVgyN1I2NTgvZjdTanV1dkswenN1aXBmSEwyaTVUQ0kwcVMwVU5FQ3NEUTJrUy9PenVCUndvTjlQVGptT1lBOEJQZ3ZQV0FBVWd5ZWlHM2hLSW90WnNraEtpZ3M1akVPMGhZcmpZR1FqdVZLMnErRGFmMnFUVHhpVXA4bjEzY09Xc1ZpcXprKzZocUxDL3BOajJaVFB5ZlpXczQzVjg3bjNQS1pYSFBoK09Mc3FTTnpKNTk2K3RTVDl6NTl6MTBmUFNVMCtoRVpVenFLeHdBWThTZytqdnFoS1Y4NGh5Uk1NSzBPeUlRRHhYUEkxczBiRUV0OEZ0SjFsZEc5cjZsV2QreXY1TWVueXFPVE8wcTFsVktwVlJ6UjFuNkpucGZmc1FFZWd4SDQrYzFMRENNYWhValpuOFFrUnFCc3ZJS05lUW9qb3pGTnN3Uk9hVzFHc1I4bktHb25xTDc0clgwdWN2aThTTnRZYkpSMG5URi80ZXpLeFhObmF1ZFBIMTQ2K2RTRHk5cElnM0xqUWc0MlVDeEtSdGxSNlpkTjhhSmg0WktGR0JHdEVVT0RBNlhISThxVE9KWkZ1RFJQNmJSQWYyZ0N5a3p6bmg2MXBPT0J3cVBTaVRHRVdFWWM0WlM4UENITjVPV2gwTVlhYVJHbkR3d2c1b0dPZWRLRTJNN25mdmpPM2NxUGlxVW5NUjBWSFdQcTB1M0lYNWJ3dHlYY2JycnBmRHBOcDd2emwwVVFseEZwdHlMVCtYUWFGcnJ6bDVFdGovcWxLdHlYS2wrWHFwQVhYY0dYeXZCbSswMEpiRXBnVXdLYkV0aVV3S1lFTmlXd0tZRk5DV3hLWUZNQ214TFlsTUNtQkg1MEpQRC9BYVVjdVE1N1EyS0lBQUFBQUVsRlRrU3VRbUNDaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBRUFDQVlBQUFCY2NxaG1BQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFlR1ZZU1daTlRRQXFBQUFBQ0FBRUFSb0FCUUFBQUFFQUFBQStBUnNBQlFBQUFBRUFBQUJHQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQk9BQUFBQUFBQUFKQUFBQUFCQUFBQWtBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUJBS0FEQUFRQUFBQUJBQUFCQUFBQUFBQzFaNkxvQUFBQUNYQklXWE1BQUJZbEFBQVdKUUZKVWlUd0FBQUJuV2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2w2d0hoc0FBRUFBU1VSQlZIZ0I3TDE3dEc5TFZ0ZTNmdnQ5bnZmOTZOdjMzbjdjaGdhYTdzWldCSU5nVkh3Z3daWVlEUWl0S01NWGYraUl3YUFSa1dIVWtXaFFFOGVBa0JBRDBhQXlJc0pBVVFNa21nd0lBU0tTRmtUZ2RqZmR0Mi9mUjkvWGVaLzl6UGZ6blRWcjFWcjd0OC9aZTUvOSs1MTltbC90dlZiTm1uUFdyRGxuVmMycXRYN3J0MzVkdDBnTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhjRGM4TUxrYmpkNGpiUzU4YzQ5MDFCSFUzRHNDNzY4STFsK3Bnenp0WmtBa2ZKUU9QMDZkbzhoZjhCN1BBOGVaNE8wWU9FNzk0Mmw2U21yOVNocklCOWs2eG8vTGJWZmRpdGJ5TGVDNzY0R0RKdkkwL0RRYzJoK0V2N3VXblhEckt5Y3M3elNJWTVMU2VkTW1hNHRMT0hOMFB3Z2UweWhuYXVza2JwSFB6d01IVGRScCtNUmxqcFlId2EwRjhORFBMVzlMdjJmaFQ2WEJPODJXeEpHM01CM1dsaE1HVHlkblIrODJjT0xneVpUMU1oL2pzN3pJVDhZRDR6N0ljdVp0SzlrbjVPTUR2cXpUNWkwOGpRZGNwdVROOGoyWnA1UHVTZVVicFZzN0VoNTNlb3VuODVqY09jR1hCSysrKzkzdjN2aThyLzdxY3crKzVkTXVuSC8wa1lzWDdyL3ZRbmRtNCtMeSt0bnp5MHZMNTFmWFY4NnVyNjJjMmR5YmJHeHVkZXRMeTh1cjNXUnBWWFZYOWlaN0t4SzYzSFZMUzhxWDl2WjJrVG5aNjVZbTNkN2VaSmRzZDg4NlpPT2l4eWdVQWtWSSsyZ2lwSkxRQjdDWWs5KzVpRm0yTEJXUzN6a25wUjBkeTlMMHpKbXUyMUxoeXJWU3I2bS9ONlZ1eXJvVnpUeXFTeHVHZGNwNnU4THJmejllT0dTNmpwajNsaVp5MzU3NGxBc1FYbzViMmhYUDd1N2U3dTVrMHUzSXBkdVN0TDIzMjIxMXV6dGI5OTNYM1Z5ZTdOMTQvZFh0NjV1YjI5ZjJkbmV1VEc1ZXU3SjM4OGFsM1V0dlhONTU1ZVZMTnovMGk1ZDMvc1hmdmZyR0J6OTRRMDF1RlZYb0UvcksvYVVjRmZNUVdHRndwTXpIc0luMzJpa254YjJtTi9xMnVpZE1QdTJnMHpSZ25OYS83bHYrMGtPZjl1dC95NU5uSG4vaW1kV3o1NTlaV2xsN1c3ZXkrcVFHM0dPN1M4c1BhT3hkRUh4R2xWWTdYU1F4YlRsV05kV1o3ZGQxM05Ud1FTaURHaUFIT2JEeFFpZGNXTUI0b0dlWmZCK1BrQzE5R2crVHBmSUl5TGFuNGJQTmxnZVlBSEQrZkFTQVM1ZDd2UWFUdExTVE9OcE1PSFByMGVpUStKcGo0a2pPbUdiZGtxZnc3OE1KZjJCUzM5ei9RTmowK3F2cWFQVTBiZG94UkpXOWJtdXYyN3V1L1BKa2IrYzFSWklYSjl0YnorMXViWDU0OStxVlovZGVmZjdaNnovK1E4KzkrdGUvOFJWeDN5enR5RU1PQ2tnNjZDaXNwaWQ4VCtWTWxuc3R0VG9ubk5HYmNoNTBQY2ZaYi82KzczdjZ6ZTk5MzN2WEgzencxKzR0cmIxUGsvd2QyOTNTbzN0cjNjcTJ1RGMxMmpZMWFHN3FZRVhrMkJadWgwTmR6N0VyZUhXajY5YldGUUFVQWE2emhpZ0pIYjB2bm5hVVFQTWdCRkJLV3NJZ3dOV3lBUE1VNUQ1YWc2ODBBY0NITHNOYjZpd3JzRjI0SUZzVnlCd0FVbzdvMkVSSzNuSFpiUlk1aHMzYytFSmxKam5KZFFXM01pb3NlcmFSY2dabElZdVltbHZvbEZNR2dOZGVpMzZEeFFOQko4dlFDTkhPd1ZONm9xazlLU05tSW1WMk43dnR5ZDd1UzVOdTl4ZjN0bS8rOU43cnIvN0UxaS8rcTU5NTRZLzlybytxaHZaSERnVGNMMHMxTVNGaGdRUDFVbVh3cHo3aGtuc2x0Ym9tbkJNL2Myelplc2M3SGp6M0o3NzNYL3lxQjU5Nnl4ZnZyWjM1amR0TEs1Kzlzeks1YjFPMXJtNnFSM1ZjMThDL29RbnZ5YS91Wk1KdmthdjdPQWFUWDBJcHJ5c0FiR2piZkZWRDRocmJaclFRTHowdWNwOEtEbnlic3N3Z0wxVXJHVnJTS3pKeGhkRFNCM0JEYi9ISXlRbVZNcUZ6ckdnNDMzY3hBc0FibC9xMnN6NzFTRmxPdUpWWGFRWEFCeFVIWEFwa0EzeWhKUzV6b1FkMVhBYW5ZK3d2YUNUd0hHMEFvQy9CWmZMRXI0VkNLeFVaT0V4dmdzS1NmRExod0pDdHZUZDBoZkZ2OW01ZS96LzJYdmpsSDM3dWEvNzluKzVlZmZXS0tHd0NxWjNtWmo0d1EvUjdJclYrT3MwS3QzcVdycXZYYkd6VmNQNzJuL3oyYjMvaWZWLyt1OSsvZk9HKzM3ZlpMWC91MXRwaytaSTJkSmUxV2pQeHIydGx2OUVjVFA2YktwTXphSnhMa2xkLzVUdGF4a1QyYWtZQU9IT1dZOUpkdnJLbkFDQUdORkVtVXA5VTFyK1BIcmtmZ3VlNEtaM1J5OUFHdHk4VXNja1Z4UUZaaFJVTjQvc2ZXUElPNEkzWHNmTGdsSFVuTWpoZ25SMzlwdGVSTm9VUU9neEx2Vzk2dm1BUHZxSGViUXN0SldVbS9RSFpzcUtSOE5wcjZqTnQyU1psMXNNSEdIVURxR1dLUWVCT2pabE1FN3hFUUZpTG9MQjNjMjluYVcvbkovZXV2dkhkbC8vNVAveisxNzc1ajM1YzNPd0lxRVgzMDB6bXJXb3RMSmJUbDRyNXAwK3hScVBVa1R3UEFuZXUrcHQvNXU5OHo5cysrei80Ylg5Zzc4ejUzNys1dXZUMDY1cjByMnFGdnF4SmYxV3IvRldONyt2S0NRQ1pFd2h1YXFDdzZtOHFaOVhuTHBPMys4cmRjenBsRDdLbFBYZCtxVHQzYnFtN2NtVzN1M1pWZHdsU3MwYlpld0tVTFN1ckV3V0E1VzVUVjhlWGJoTUE3Z1V6c1dWNWVkSzkvdHFPQTBEMkEvM1g2eThvL3BVVHppQXFCMWR6b3dwT2c0emRnWTVsWGZwNWg3QzUrOUhkYTFmKzU1cy8vcjkvNTB0LzRzcy9JZ25zQ0VnRWdEWUk1TkRKM0V5bjdXUWZuRGFsR24xU1AvS2M4T1NzK2x0Zi9aZi84c08vOVk5KzNkY3VuYi80eDIrc0xUM3hzalpvcjJqaXY4RjFyWTdMT3E1d2FQSmYwd3lQSFlBbXZXYTViaVBYRzFwTmV3YXowUmJQQ3Zzck5RQzBmaml0OEVFQjRORDZFZ1dVSWhEb013Y0NBcE5mYUlJQU93UUhBdTBLQ0FiYUxqNC91WHpwMjY1OTcvL3dIUy8vdGYvc2s4SVFDRElJdElGQTZMcU9BSitxTkcyc254WUZVemNtUEFmbDNPNVB2dVBESDMzLzJUZTk2UnR2cksyODYwVk4vSmMxOFYvWGl2K2FqamQwQUYvYTNOTU9ZRS9iZmsxNExlSDBTcVlVbnVYYjVZc0FjRHNQM1YzNkhRZUFzZm9FQVA0MDh6TVlPQkFRREhRczEwQ3cvYk43TDN6aUwzM3NpNS8rdmlLQ29jVTFWUWFCZHRpZHV0MEFFK3UwSlJ5WUIvcmx3VFhYOXAvNW51OTU4bis1Zk8wN1ZwNTQ2dSs5c0x2eXJwOS91ZXQrNmZXdSs3Q0N3TFA2T091WGRFUHJGeS90ZGgrNXZOTzlxQ1gvc3ZiNFc1cjhlRDZGa2kvU3dnTzM5QUNYZ1hySVlIZG5wOXZtMEkyaGJTMG1mTVRJc2FYN1Nwc2FiN3VUbFhkTjN2VFUzM3ZMVDEvN2prZi8yMy8wWnNrVTFmY0hXS3h5N09hUXkveVdUYytUZU5vVVNuM0kwM21aYjMvYnYvdWxMNzN2clcvOXI2K3NMTC85T1UzNlQ2b1RQcW5yZmVlQ1g3dTUyMTJtazdoZ1YwcGhMdHpoYWJFRHVFTUh6cmo2aWU4QUR0QjNvdVYvU2NleVJxVjNCSnJtUEZPeGNrN2piWFBuUXpzZis4alhQL2NsNy9qSHFwNlhCTzF1SUhjQW1SL1F5dnpRVEs3VGtuSyt0cE9mS0RwNVdENytyaGRmK2M4dnZQMlp2Ly9penZMYmYwR3Iva2UwNHJQcWYwaFIrTmxMZTkzSGRLZnZOZDNHWjZ1UGdCUjJXb3hiNlBHcDRRRTlpTmp0Yk85MFcrd0lOTFYzMkJIb1BoTzdnWjNKOHR1WDMvck0zMy82UjEvNWM3S1d1Y1V3Wk9lYXU0RWNscG1MZEhmVGFRa0E2UkJ5ZE9MQWNkMVgvc2svZWZHL2VmM0tmOWM5OHVCZitPV3IzZHF6V3ZtVk93Qjg2UEtldC9xdjZMTTh0dmtwaEhxTHRQREE3RHlneXdNRmdtMEhBdTA0U3lEWTBnTmkyNXZkR21QMUxUOTE1ZHZQZitEcjlhaVZyejR6QUdSUVFMVlRNVnhSN0c2bmRNUjQ4dS85c2IveE54NzdMWC82ejM3WHpmTm4zdjloUGVMNW5DYit4M1d6aitOalYvZTZWL1JaSGgvalVUR0Z6TktZdGJWSng3R3BtNHRiK3ZpczNEaWVaWk16azcya2o4dzJ6aXo1QWFlYk4wN05qdlRZOW1MTGttN1kzWkF0WEs3TksrbkxDcVU5alVDMVM5dDhlV0hwNHRxN3o3enZON3h2OHZEalAzTGovL3BCN1ZXOXFJM1Ztc2V3SGJjNUtOL3RBSkFPSUNjNm9nOHIvOTZmL3ZidmZPTFgvYUUvOU4zWE50YS82RmxOL284cnVqTHhueU1BNkRQNFM4eDhwUlRnd294UGl3QXdZd2ZmZ2ZpN0ZRQ3NzbVk5ejVDMFM5R2VMZ3VXejYrOGZlUFRQK2Z6Tjk3eW1UOTA5VWUrVnhjSlU0UEFIVmg5NTFWUFF3REl5ViszL2F6OHYrNFBmdTEzWDlsWSsveG45UWxydStwLzR0cXVQOWFiNThSUE55OENRSHJpOU9WM05RQVVkM2oxMXhPUy9Ia1RvaUN3ZEg3NXlkVzNmc2JuVFI1NjdKOXBKNkE5N09rS0FuY3pBRENIeDVOLzhudSs3dXN1L3JaditIUGZkZTNzK2hjK3ErOW01Y3IvVVczNVg3d1JIK25kamNsUEh5OENBRjQ0bmVrMEJBQTg0MHNDaDRBK0NFd1VCRGJlOFo3M2JMLzYyai9aK3JtZjFCTXFIdmRtcDBwVEJqZlh4S3A3TjFMTzRRd0FCS0tsQng1NFlPWEwvb3YvNm0vY1BMZnhtejZrbGYvNWNyMy9VVDE3LzVJKzArZmp2YXg0TjVSZXRMbnd3R0U4NEdjSDlISDBydTRGY0lOd216c0FGelorMDhOZi8xZi9ldmZnZzF6aU11L2FBN0YzWldqZmpRQ1FocllPSUFEcy9QVVAvdngvMmoxdy9pcytvbXYrVCtoei9lZDEzYy9OdnBkMXM0OW45TE1pM2xxa2hRZE9zd2QyTmZ1M2VRS1ZUd2gwYkNrSTdEMXc3aXVmK3Q1LysvWFNXNWpUOGZIZ3ZBTkF6bUh5REFCRXhPMi8rYTkrNW5lc1B2Ym9OM3hNVC9KOVFoUC9FNzdacDBkOEY1TmY3bG1rZTlFRDdBVDRacUtEZ0o0WDJORzRYbnIwMFc5NDB6LzZtUytWUFR3eDZKMnZjdVpDT3pkVW5FK2Fad0JvRFV5RGZRL2lqLy9OYjMzTHc1LzVybTk1YWF0YlkrSy9JRWV4L1g5Ums1K3Y1bWJGK2JoazBjckNBeWZuZ1YwZUhOSjY3OHNCM1JSVVBGaGJlL3U3dnVYaGIvN3ZueTZ0NUVLWWMrTGtHaitFcEhrR2dGU0grY3pCNU9lWWZONVhmZFZmdkw2Ky9KYm50ZnEvcU1sUEFIangrcTYvcHJ1WS9QTFFJdDI3SHRCSEF6dmVDWlFnb0V2YjNUUExiem43MjcveUw4cW9uQWM1K1hPNFp6NXp1K2NWQU5JZ2NnN2FaZkp2LzgxLy9jSDNUKzYvK0h1ZTA2dWNYdFp6L1JFQTlIMTdMZjFaU1h5bklxWHlldFBucDBUS2p2aFVNQ2I3NWxUYVFoQm9kZ0k3ZkJoNDhmenZmZFAzLyt6N0JiV1hBbk0zdzQvYnpzbHBhVnhPL3NtWC9aRS84c2hENzNqbk43NjgxVTFlMXFyUDhkSjF2YmxSWCtyaDFicW5LZms1RDNRcWVxRWZCdDJUU2JyYnY4V2UwK2JyWS9tMHNjVjlkU3doczZ1MHAxZEs3V2pFOE5YaUhRMGN2VXQ2c3ZyMHAvMzVCNy9pNi83UFYvLyt0MnI1ODZKWXJLZ2ZEVktlYVpwSEFHam5DWk0vQThET2wvM1p2L0MxVzJkWDMvbkNTL0d0dnBlMFBYcFpuL1VyQnB5NnlVVlA4QjRJbmova0V3bHRWazZkamxMcFVLbTFCWHV3NVY1T0RERHNJT2REZGwxcW44cStXZEV1WUdsbjJZK1E3MmlzTDExWWZlZlpQL3pudmxZQjRMK1V5c3hGdWlaTkFaNTU4azI0R2JkQ3YrVEI1TWZRcFQvNHpYL2w2VS83cmIvOWI3MXdZM0tlWi95NTZmZWNQdko3UTkvb2d5a3JuSnBjM2JHdTd3R3M2MVZhL2k2QXZnOXdLdlU4ak85a3k2cWVteit6c2VTYlV6dy9mMnI4ZkJqOVJ6ejB3MW5ad3VwNlU2dUh2c1ovS3UycHUwZGVOaUtINC9PVk0rYytjMlhqM1BkZi8vRWYxaDB3SnlaK0hyRE1OT0c3ZVNYYXlodC9PMS93dFYvNyt6YzNsaDU3V1pQL1ZTMUJyeWdpTXZteEdNYlRlSER0bjhkcDFPOG9PdUZuMzh1UVRVZXBkeHA1MDVhOE4zTWFkVVFuOVBTbkFucWdUWnVCYmxmamZrOXo0TXo3ditZUGlNU3pBY3lQWklXZGxIbVVUdmc4NjBzQTk0MTBUcVBJdXkvL1UzL3F6YXYzUC9TQjUvWDFDRjdoOVpvYzhhcFdvVjN0cldldDBISDl4M1ZsYThReXdlQzR3dTUyUFd3cCttTVR0dHpyS1FlYWJUbkY5cUFhNDV5Zk45cVYwbHdLTE4vMzBBY3VmczJmL2g4dmZlZGZlMEZrdW9RanJjaGNxSk5QODVwdjlFOGF0dlBGZi9qcmZ1Zk9tZVVuWHRHMVArL3VlMVZPdUtUVm4ydTMwNXJvaFEyZEZMeDlENkI5b1B1MDZudzd2YkNGQTF2dTVjVGd3ZzUyQUl3aGJxdWY1clRFdlFETmZnNzlLSW0rTmJqOHhJWGYrOGQvcHdMQXQwbHY1a25HTTFrMDJ6VExBSUFScERUR0FlQnRiM3ZiMlhPUFAva1ZiUGt2eVhoZTRmM2FUVjdQSGRmVVVlWDBuZlBPY3ZaSXJxQ25UOVBiYTRRdFRCWnM0YmpYUHdWZ2dMVzIzQXYydEx1QVhVV3M1WWVlK01yenp6enpkNjQ4KzZ4bWhvUEFYRzRHTWlsbm1YTHlrOVBXN2dmKzFyZCt6dTc2K250ZjFiVS9yKzUrUXdIZ3FyN2IzektlVmhoSFdUZU50dE9xNDJIMXFyYWtUZmR3ZmkvYTRoOC8xUlRuaGlYM0Fqck5pYk4vNnRzK1J4QVQzNHVsOHJZN1ZUejVOTXNkUUdxTEVXblE3cHMvKzNOKzg3Witjdk9LVm45K3VJTlhkL084OUR3VVNZV09rL3NlQUJPL1RQNTcvUjZBOVMvMmZFcmNBeWkyc1ByZkcvWndJMUJ2SGRhUFNPOXh6WEsyVzFuNzlIZDlzYUFmMWNITlFHNEtNbmRtbW1ZMTcxTHhqR0FPQU9mT25UdXpkdUgrTDJMNzcxL3MwUTdnaWw2dHhYVmJWcGlwdFhjZ1hPTXFYdjBrZ0dCd0wraDhrTG5ZZ3IreEkyMDVpUGRld0xlMk1KZkc5d0J5RUdJTHRwK1dwQjg4angwQS9hQUJ0WHord1MvU1R6YWYxVTlQYVdtY3oyWEFyQUlBUGs2L1o5Nzl4OS8wVFUvdHJhNS8xbVU5OFVjQTRGZDcrTkVPQnVGcFQ1NHNVcEw5R2VybVRxRFgreDR3SXBWbHdIRlVXKzRoM2RPR1VkN2FNdkdBWXRqMUtTM012S2ZjUFVnajN6Y3ZmUm1nS2IrMHN2NVpELy9SYjM3Nms5L3k5YjhrclhMZXBDSGtKNjcrTEFNQW5rWHB1djEvMTIvNExlL1pYWnRjdUtwSEh2aDEzcXM2K000MERLY3hwZWZSRGM5NzBnc2dYOUlnTTcwd2didG5rblJsbTh4MitkN1pNdC9hdTJsTDJyTkhoK2gvblBaNEFtZVVwckNOT0daVVJFWHZBdlJwQUJ2K3M1TUxhNS83eGU4UjlBczZtQmFwTFBsTTFKeGxBRURwUERCbTcrTGpiLzQxbXZQeEE1M2FBVnpYVzFQb3Axa3FvZVpPSlBHcUo0eHhyNVN1WURkQXQ5eXFkMmJTYTNkb0VUbzU2QXBnc1dUczNhc0ozN2VKUHNsK1NkL2JWdUU5R0ROd3U5VFd2RHV3QXdDL3RDeWw5NlRvOGtOditseHA4ci9xOEZCVDNwb0luR1lKdlBNMGk3bVhDcFBuZ1RHcksrZlB2NWZmN2RQWC9CMEUrSFhlMDVEUW90VmtBRE5Eb0N2ajRQTm1CaGlxcDNFQzc2bmszWXFVcm5wWDRKNHl3OHFpT3YyUS9ZTlJwY3VxZmVNQUIzOWFuejhqRGlid1FIM2ZSbWwyWjc5RFVBT0tjY1Y5Z0tVekY5Z0JuTkdSOXdIYVlYYmlQVFdMQUlDM1dsODZBSC94Qno3d1lMZXkvdlpyK3NqamhsWi9EZ0tBTmdFRFppcmZyY1ExV2F0NHE0Znh1TDhjYkRXZE1oZWhnb1dVMlVINHBNODlsMEs3UElUQ3dQTng2alE4bEV2YXZ1STYycDJuMlUvZlFFdXJEQ2RDT2Zpa01RRXpKWjYzK3M0cjZUTUFCU3kxclA3d3B3RXJhODljK0xLdmVmRHlEM3puaTlJQlJkcWpWL2FFRkp4VkFFQzlnZUx2L2ExZjh1VDJaUG5oNjRwcitpRWZCNERUOUxZZjN1R2EzWjdYODJrQVl3dGQ2U2Q5RjZnN3E1QzJvbDkrNDdmaGZLa0pJOXU0ZXlUWkRobHluejVzMG9jdzNVUmZjcnFYRTlwZmtDMFRIVmZWSjllMHNPUVB4dmhudmQwL0RFZzlmU2Q3V1pFS3ltYm5yS0lMd1pNU0Y2WFpuZWtMZ3BkamdCYkZwWlhsaDgvK2UxL3lwQUlBandXalRxcUVFc0FucXRwSkI0QlcyVlRZU2ovMnpEdmZwcDlMWExucGxUOVcvNG4yUFNldEFJMmVWR0xpNndubDdyd215enN2VHJvbnowKzY4MUo0YVcxSlBjRXdHaVU2YzRSeWNTcnlBTjVwOVVlNHNaTkg1T0dRS1VUWEdWVjB4ekQ1ei9JN2xpVWQwWWFtV29KSHprZHFEZXRQSVJvMXdsTmtBbTgvdHVxZDVldDZ2dVNqK2dHWjUvVTdFbHl1RVFqd2VGd09SR1hPNEd0UDFuNENDQjVxelRMUmtvTUFnTWFhM2hPd3N2clVwNzlOcFovUWtVcGtMdFRKcGxuTlB4VE9BLy91bm52bzRiZnhJZ1FtMUpaNllYTjhZWGF5ZGgxUld2UzhvN0JxbHI2d0FlKytmNm43TEMyVlRQd3ptaWZuOVZLQWRlWDhJaXdHdWdNUGFBMTU4SkNpaFlCbmRSNjBwVUtXNzdROWRNOWQwVHpzUU4vVTNlM2R4aFo0NFdPaWIybUJ1YjQ1NmE3cGVNZjVwZTRGZmNuc3AxN1o3bDdTZXliV05OdERyaGdGc09lakRrTVJQSWQzQjJaQ29nSGxzMHUwRVBjQnRBZFZrOTZGUFBEUTIwcUxWcWZBWmoxcFRVNDZBT0MxR2xBRm96VEg4c3FaODIvbDVoOFRQNFBBYWJqKzU4b2RwUWRKQ0xiNlgvREljdmMyRGFJSGRFdm1NeC9xdXZ2UCtsTE5BNGJkQWNlK3VrWFFRZmhCTzNNbzRQempwdE5pQS9vZnhnNzA1V0JDWDFjZ2VFRWZONis5T3VrZVdsdnRmbFN2bmZyd2xkMU9QNG1vRlBzM3JyK0JYVS80N05QczFMZ3NQRXpMeUR4K1d0Yk05K1NYSXVSTGErZmVLbWs1K1ZHZ1ZRSVlsVThrblhRQVNFVlQ2Y3hYbGxmWG45aFVwM0J0UmhEZ3l6KzdzaU1ybklnMXh4Q1NDckxDSmN3ZDJjOS9lTGw3KzRXbDd1MzNkOTE3SHRIV1VrU05uMjVMOXpENDhvWnZPcFZ1b05NT2xaTC9VTXlIWTJyOTExN0RVcHZtV3ZyaEpCNkNxN0czQVE5UjhkWXNyYTVqVzI1ZFUxUXE2NkRlbm5ablN6cmVwTDQ3cDZEOXk4OTMzUmMrb2tzRC9ZNzNDM3JaN0xJNm01SEhoR2VTOHlLUnZLbUxQVDZLTW96UldhY2xLMTBhMXR6UXczSnZWbWxOQjUrYUYwMEV6U0NkZEFCb1ZVUnhLLy80NDQrZjBaWE5JNXN5aDV0cC9GcktMdGYvOHUxTXJXdTFPU1NNZnF6NnoyanlQNmtmZDM3Zm8vcStndXBlMGRPTHUzcHIwWkowMTlpeTNsTjFsMDJ6SHpLSE5LYXdWVDByY0p2NnA5Q0cxTmdtSEdBSGZpZDRxNHY4bWZxMlJ2ZXFwdEZqMnIxOTRxV3UrOXlIVjdvZmZHN1QyLzVsSmo1OG12dzdpdUJjSExBN1FMVEZ6N1VUbXgyQWxGOWFYbjJrZStLSmplNzU1N1hVVkpVT3NGb2NkNUJtR1FCUXkvNzh6Qy80Z25ON1M4djNiMnIxZEFEUUpPUFhWS3V6NzhDQUU2bGFCanplNXFiUVordTZuK3Q5Vm41KzB2V1N2cms0MFMrNzZLMVQzVXE1d0duSFIvYU1jUTJoQVU5RXphTUtTYjFxUFNGYVhPcTNENWVFVW5GVXJPTG1CYlQ2dWMyUkhlQmFIWUVaWjN6a3ZLVkZoL3MxWjNVWjk0aTJjYzhvdVAvOEczbzlaOXdWZERCbkV1eHFWN0N0bFppMk1zQVBuQ1g4ekJJS3M0MVUrL3kwdUNMQS9lYy82d3ZQWFhuK0gvQ2pZcTM1d0sycEt0NVptbFVBUU5FOHVzYys2NzNuTmQzUGMvT3ZEd0RpT0ZGVGp1WUkrMXhWTkU2c2hqMHI1T01iays1KzNSbC9RcXYva3J6RCt3cjIxQTM2K1hrSEIvZlRxS2swQTlwcFN2dlVFV0xLazdCOU40aStyODRwTUdpZlR0aUJYajVOVnpBL3JtVzNlVTNIdXZyeXFtYjIyODR2ZC85T0FZQUp4ME5BclA1OHBzT2s1NTRBWDB6bmNvL0VaU0h4bnVJdG1vTDFqcFBIbGRyajBsSjZuVjkveDdzdlhQbmhmOEN6QUtTWk5UK0xBREJXZHUrUk56MTVZVyt5dEpHVDM3bU1WVGZjdFpSSzBza1o4ZEhyTVFXQUZSRWZQcStCSSswMnRmWG5iY0FzR0RuQk14OHJmeEIrekhkWHk3TDN3T0hFQUx5cnloMis4VnVaWVNucUw3YjBYRWl2cWw5NVpvUDdBZzhvdUNzR2RGYzArSmp3VEg2K044RHFEejlqZ2U5SklKL0ZRYy9uT00zU0w5YURCckxSbGFXTmxVZTVBSFZDZ3p3SzZ1U3lXUVNBMUs0cWZlN2hSeTdvMm14VnIwYVBhelRsK1dXVVpMN2JPY3B5YStnOEgvRnBzS3dxMXlkSDhUVk5FYm0ycElQSWFnNmN5WVFzRkw2K2VOY2c3R3BUNnQvaURvSkhKaDNFTmpmOFBsdGFCUnNpSUNSeWdya0R2QkFUK2xXUi9LeG1PaStoSWFycmJEcjM0ZmhVYWtVMXVTbElvbDUwT01Ec2t4ZVFzR2wxNytLakJJQTBZMmFObjJRQUNLK0ZxZ21UNzIyY1AzZUJKMzU0N0pRZ3dMYXJmUVJ6WnRiZFFuQXFpSXZ4TXJkYkdRd2JHaFIrd2srOXp5VUwxMlFNbk9UTFRvcCtFajVUZzJqQXBONjFQSFdwOWg1U2s2eDNTUGE1c0tWT1UyMkJtQVRsN095WTFDUmdRT1kxK1lZQ0FKLy9yNWtuVm44bXZ0N1k3KzAvbndnNGFKVDZ5QkJxdGtrRGE0TENOS1RHbDgrZHpSMUEyeTRhbmFncUp4a0FXa1dCcS92V3psODhoMjA0blpXVVFKQ2RNcTQwanpJZXpJTkp6OEhYZTdYb2U4Vmd1NC8yNkFrams5NTlVMkJoKzhzQkZ6amRPdEdlVXdVU2NVSzU5RVh0ZzlKSk5WdmxWT0NnRnU4QWYweGJCdlpUU0IyVkp3aWErd084TTREeHlLUm42MjlZT1o5TThkSGZscUpGKzlndzlUaG1sVHpHSkp5Y2hwWTJMcDZqR0tYWk5UM0xBQ0RkUTNHOTZPQWNsbmoxMTZRaTE1T2FweUpsdExjeTBvbjd3S3dVVEhoL1VhYm82UTRTVE5HZFZPQTZzc0JQczJpQUhCU21jUjhmWjMyYUlkcUFZNkhUU0xmVmJNQXdLSXpGMzNtNXRXV2FzcVdGQVlrQ2FwVzhncFlWTkhEWmQ0ekJmdUwzTndTWG1maUlLZlh5aHFCUU0wMXIwaWUvRTRDZTNlbzZBWUNVWm1ZZTJCTTZuM1FBbUtya3h0bTFzMnU2RzdQR1k3UWJmQ1F6NlM3cWpzeFU1aE15N0RCaUdBem9nTU41SUlUeWlrWUZPVGdmT3JGcllWZVFaUThpNkVZRVhrVXdrUld3S2ZYNG1VSk5pd0x0MzMxT3h0S0Qwb2hTaWlQc1FaVlBHRDlzZkw4dFF6c3FuV29VU3U2K0ZFd3grKzNNaGg3dDNsbnlUc0M4bXZScytibmhSOVhvNi9oSTBHSXNYSVFacGlVMXluMm5GYzNJZGQyQTNyNndxa2VZRGt4cDRZRU1oeVdjZEFBb2JnKzNTZ203YnUzTTJzYUtBc0M2amcwRmdETXk3Wnp1dE0zQnJ3ZjZJUld0REVLQVcyRWtGSmdCbzhEc2daTjVTK3RoYXZhSkVpdElwQUJxTWRFenlzT25jWGFibkFhT1Bwd21ycmFQbGR1azgwdGpXNnhUYlQ0MUtUczJGZUhuTUY4QmZNa3BCRHM2Q1BUTCt2cHlkMEc1UHhrQUxab3Yrd1FqZ0IzQTBHY2dacHZRaFFEQXdkcS9kV0ZOTTZXYWhQWXpTU2NkQUZCeW43SmJ1NU9OaVY0RWVvMTNBZXFobWl0WDlycXIraTJBZll3ek1YRy9VUFc5QndrNUFCL0RKTHpEMHo3U3JQSUlZUEo3UWdzMnZoREhjRkRqbkZ0SW1waC9RclBvaURyd2o2Z0VFaktJaGJRakNqZ3g5c2FXSXJNZk4weCtkbTVORUlDb0ttUUZkQUJQRzhEZHVMN1RYZEp6M2F2dTZxZ0xONWQrcnNkSnlTK3JUNXpLQlczYVNaOTRNR2xWSDFud05YTjlqNm5idnI1RUFKaDVPdWtBTU5WSE96dEw2emYwUU0xMWdvQStYTCtpSHdHOXBKY0NUR1dldWNsOUE3UWZnN3dFSTQyU25RZU1OVk91SHI0RUVJWkIxRzc3V3hpaUI1bFBCUTZNWlJXMDRWbWR4djYwVlFOOTFQS1lxVlZtcEdSZm5BYTFGVThlSHF1NXp4WXh3SU5tQitZaXVBOExYM2JIcHQ1R2MxVnZwZVhiZ1o3MWtnREl6M1d0SUUzL1liRVdnZ3FmdkkydHhGVnRBVmEwL1dRSHNLM0F0SHR6d3VNbk0wOG5IUURHQ3N0OWVpeGJEemYzUXdpTVArbHd4NDByekx2c3FDOTkwSSt2SzZOd3J0NU04SG93RUpveWVycE1UZU4xQWxmS0xzejVGQnEwamU3SHRGUjNUb3NBdm5XVk1mZk15dnZWYUREMGsyWW12dGE2clVtcW5KbWFCbVV1N1FnQTBVL0ZOSlVoYzZWSFloT1ExLzdnR0FPYWcwNkpMOFhaWnlpbVJEYVpMS09HUVhDelNyTU9BT2c5bVN3dHIvQXhTMDZnV1JseldMbkZ6NTdvd0F3dGZ3OEFCWnRFS1hjQm9FMHVkbkJaUUVYWEtMaktBK0JrYWhiNi9BQjB6M0JFS0EzYVYyMUlvTm5ZOGV4anJBanoxRklDUTRVcnp4Q2R6SGVXRDFVdXN2WWpFK05jZWhESVNXUXRqVDV6RUlCWTlHMmZRQVhGSjBGTWRnSUFNSGYrbVJqNVJDQ3hoVlNxUitHa3p4TGU5czFraWR1QjFSUmFTN05PdE9WWkJvQkc0UWtmcjhZRVFuMFZjRzdEY0tKR0hWWVlPbTJqalA1WkNlaDhyLzZCc3I3akFOQUdNYi9Jd2J4Um9WLzlEWVVhSXMwOFpSdjdIT3FOODZENS9aZ0JXWVZHZDVkRzlHeHJoRDZ4WXNvZjJCTElRTFhuTW9hRXl0OEN5R3JrSE5sL0tSWTl3Yk1nc1MwbGtMUDlkNzlDOHdEUUEwR0MrWmpRdHduYXlzTFBKS0VVN2Vnb3VyUnpFeXFKUERtTnVOTlQyOGlkeW1ycnA4TGdlTFNPZHg3VUNaWE9iaXZNRTY0clFtblVYcFYrdnROdmhYdGRjd0RCbWpiMHNHb0t5YVNLSnh2N1BIam9VVU1sbjBYbVRiQUVvMHVSYisvN1ZGR0hiem5xN2VQSCtKckM1aWkyK01wd1RDRGE5am5GdWhCNG93VEc5bDlOYU5tUFZSTWYyQU45dTBLZ3N2dGF1YS9sbGNNZmRjSmRCSDM5bDQvK1loR3dNT0g0eGlvM0FuMnJvSmM4RXloMVFobkRtak16YVdna2RGWUJJSnR4ejJseThQWHJHSXpPNHlrc0U1Tnp6cmtIVERPbzR6dmh4ZmxGMXh4QURDSVNaVmRwNkdHWEpvUjVnaENnejJGempxaVE0dlB3ZERSUGpMbjNyZW8wWFVjVUxmVTFlbWlvQWFYUXVNVVh6RDVDSzZXRjI3ckhod2ZOVWJBdE1jbVJhcFRGSnhTNXo2Z2pnSXdqQTNqMkc5V1k5QnpRK0s2QWR3R0NTZHdEWUx0SzBVRkRlZlkvOUZrbGRodHRCMmdwSVFDTXNDZmYrcXdEQUJyckU0NGxmZ2F0TjdBNCsrVE5DWStONWJaelFZNDFPVlhJYTNtMmVwREFlNklyOStBUmczNi84UllUUHlxeEp1NExBdGxXTmtZYlUxUFBRSTg3VlNBUjQzdy9RNHRCRjVkOTZ1WDNVZ2JjUFhvTXFTcTFiODg5clkyeHNJUEtyZlRnMlk4SkxRSlB5QXNvK2FibDRPaEQ5eWM1b25WcUp6d3dsdzk4QXNBWTRDTkZnb0JuWDZrenIzc0FxR2NsVVZTM3psMmU4V2tlQVFDSDg2aDkzeEdDNTMwUEFKL2kzVjMxWnNBTWFtL2U3WFFHUWlnSVlGUjlGSmpIUm5PQVZUdVFvb0xMQlhiR2lmck9zcVVvcHd3ejVBa2tiR05pcmRvVDhrWlhWSzBNS1dtVWwzckpwbUl2Q2RZa2pLb2xaVUFlRlBaWHVHUE1yZVJMYTVIRGRnSHF2d3JMb3VoRExFT0d5c2xiY2dkeHFrSG1LSWtiZ2VzcTArLytDQkM4eW5FL0lMNGx1Q1JoU0c0WEVOaG1rV3hUMGMrNlJqeWFSVk1EbVhNSkFHclJZOC8yNldTbkpuS2d6cDBYb28yYzVLekxPVFNRYlRVYzhYTTBtQjZ6VlNpVitDOUg3Z0JZRWVxTm91UVJvNi83WFNVcTZPektrYnZnOW9HY1RCQVVhZ3h4aGRhVEJMa1FCTUJVMDRTZU1lVHNPL2Yxeks5aXJtVDdXRnRFMFVQY3h0Wml5ek5IT0hveSt6TmNram94TWJFcFhXRWZTYmUyUEFnQVJXL1RFYUlqNnNSczh5Y0I0SVVrWTdIZ2owQXc4MVNhb0NuYnRjY1BoUlgxWnRqNFhBS0FKb3AzQUhqVmRzcXg0ZHlUczZ6NHp3S0JjOGpZb2FVWndrRzBIOXd4b1pqSU1PZ2tJSDZzTVZZR3ZnekVTMElJQUZrM0puM0lxVEJWczM2MjFjOVdpeTRjaFJvOTJ4YzhKUHNpVUl4TTQwd2RMUDlhbWNLRVdxY3NpMzE1QU1WS2hvcVdHNmNCUnhSc2lNRjk0b1VkNDNvQkIxTjZubHRCUS92SG5ObVhLSjhCQVo2RS9RbUEvSk5TMm54d0NTQTE4ZHRTMmRHeCtyTVRaZUw3eFNDTVM4SDU4Ujh3bG5GWlFJcXp3Uk0vc2NCNENCWEowbk9XelZYOTV4UUE5T0dLUElrejAwaWNmeElXdGpKaVVzVExIa3RUcFUyMi9ucStXaWUyODB4YzVwUHJlcUpxK2hZRnQvVDVFTytLNE9VUWZvVzV5cHVGSHg3ellVYkM1S1hzTmxWMkt2Z282R3gwMEFxSFVibkNNQUFHdjFOWERIT0dza1Z1eTFObEF5UWRlQkFzUUlTdHZRcEFTRTVONElnMEhSdTB0RDE1VHk2Zm9zZllCckZVbEd4TlA5Zy9Vc1Q1Rkh6ZEFUVEtldXd4RG55VnJacWE0R2hRZDNsQ0lTOERRWm4vdmx4b3hKd29XQU02aXZod1NLQU5tM2FpalRYQzVoUUFpb2N4VEFsalozTVBJQnF3L3d6R2hPYzNDQi9RRjVIZTkrQlM5eG4zVGJxbnp1bGQ4WHJROHB5ZXRlTHVLeDVPTHordWwvOXRDSzhmQWVxMjlWcnBYYjFNY2tVakx3WmZXV1dLYkJ0VFRtWCtxUlNoT3pScE9aSXhQb1BlMU1pOHF0L2xlazJ2SFhwUnI2citwSTR0YlRsNFkwME03aGprMXFzb1p4MGt1TWNWUWhGTktWUkxKZ2hEbmg2elg4TURNZnNKaUhHNkJTbFpEcDIzbWtaWXBXcGd3elphaXo3SWRzRUhiWHBlQXdBVlNpVjZDSkRYY1h2MVYrZUJ5M2hBSGQrVkw3THI1RlI1Vm9tK3BSMXNjWnFnMmV6VFBBSUFwcFdCS1lOYUkrL1F2dFpEckU1RTlwcFU1Z2RJSDlNRS9xcG5WcnJmOVpZbHZSQnkwcDNSN2QzOGZJWDZLU056QmtZZUUzMGRRMTlqcWp6SVRyNGhGc3IrbEx6N0tYVXN1aTE5TDZwN1VUOWg5YS8xNHhVZmZHVkxyMDNYdStzSkJQeVZrVkZoMVloQWdQUndKclI5Q1NPY0N2ODBubVNaa25zQ1ZobGhkMU9jVXVQa1VMWXNHOU9zcVBZSjV3ZDF3QkJ4UzBTMGIrekp3dG1UdlBOREZPekZYZmFFTDBHRjg1aFJnMHkrM1A2VDg2Q1F4MG5qV2tUTUt0VWdReU54TkMzUHF0VjQ0bkYyMGh2SmRFQzFUWUNmdW12b1J3V1JSYUlEYzdYSUNNb0RIRGUwaC8vU3A1YTZiL3ljbGU3VDlidCtlSk5veHdFOGw4OVkxTTZ0VXZwRHIwZm8zbkp1cVh2NjNIcjNub2RYdXgvOHlQWHVlYjIxY3MzYmt4amVqZ00yVUdYMnBJSnRGVUlNMHhLV2pSSW9PU2tuem9nNnBSaWU5VG5BS1R3dDZsQk1iWVZid0ZQMEYzZGU2MU94NVVqWXVkUndQTkJvQ0k4RjgyQUhnQUR4NWRoalRESU9HRU80bW5zK1hCYjRHUUdWK2FRQWw4TkRHN01jTTNTcGc1VGFtV2VheHc1Z01QRXA2UDlFZnZLRVRrR2E1MFdBaXR5NlpsZjQvaU9mdnR6OStmZXRlTVhuYTFYNUJRL1lUa3RDLzdBaE5HTEE4YU1rSC9pTXM5MzMvTUwxN3BkZTMrcFdOVExaQmRTRE9xb1VnNzNrakI3ajhXejQxOEVoQ3lXUElFQWhlQUtLYzZ2SHRJRllnMnhiNmNUaGJBVy9GSTFrVWs3c0J1dVdIUmhrZXdhM3RLSG1xc3RLVGhEUXY0K2srZWFmY0V3QTAzU2lIYitXdXdRQjQ0V0xSY1pOenV4VWZ5UW5GWjFaUzBQQjh3a0E3WWZ2eGNDTXdrTjFEbGZLVHFUckRFdW1PMGtqOTZaVy92L3dyY3ZkTi8zcWxVNjc5MDR2VjhtaGREamhkNUdMTFNmdXVhakgwLzZqVHp2VC9lMS9zOU85b0pmYTgxWFJuUFI5THVOWStjdHV3Sk9EeXFUZVFWRXVad0tsMHdGME55NkdaQ3ZjK3pIN0dYcldPNEVHZXNWS1RsUFd1OUFDTnJhYW1kVUlDTzIzQXZHVlYzV3h0MEVOR0FsZTZjbDE0RVlIaFZMSDl3QUUrMUtqdEVTZG1TVzFOWEE4QTNvT2FaWUJBSk9jN1BDbUV5RGtVVmlPbEZtd2hKSjdpMGR0bGZuSTdxMjZ6di96djJxNVd4ZVJHM25tUFpMMHU4dU12Z1NDKy9YbXlpOTkrOW51YjMvd2t0NU92S3V2VTdEU1JTRGcvbkFFQW9BYzlBelBzbTU2cE9wVWpRK2dGazJmYnVlUVZFcEQ1TlNLaDJDWldnL2tnWG8xRVdzdzhXbXMybTNRUW9JSDBBeVdPNzRFb0MybzROa1ZlcDZCVUNJSTVQWWZPZ0VCSVNaWEpjMTY0cWRxS28zcG1IRnpWZjlaQm9EYWlGZm5VaUlZWU9DeWtNY3hrdW9rY3JiTTVEaVBuSS81L3ZBN1Y3b25kWmQvUTRqanlKZVl1NTdRbStNZCtsbnlkejI4MXYzVUoyN3FsMjAwK2ZVQk5rR0FtMVFFZ0FnRUZFb1F3QXNpVU5jSnB5UmdaRU5MMGlpUEtxVmlyVDlpVW5FL2FUOW1mNjJETUtGeDFUdlpVcVFJcGxIR1ZrcUd3UWZnMVQrNHhCSVZxTU5FcmdzUUNKVTlzV2xEc044R1ZYd0duLzFLSGZIR1Y4UmpoeEM4VkpwTjhrZVN0Ri9FQzV4TG1rc0FzQ1ZZVkt6QzBUZzNqVDJLcGRVeEJmRDJUUUpaL1o4K08rbCt4OVBDQ0Y2RGNBOG5kZ0VFenM5OWZGMEI0SVoyQVhxK1FUYnJXeFVPQWt6K1BaOFl0Sm9TeFpuOTNmRXd2dm9ZZjNtWnVaVmp4RVRubE5SRGljbThVQTVtU01aRDVrVlFHdEhVc3Y2ZW1hRjNhMThFQWdVRTZrbUVjOVZObXpHM3ZRZUEyS0RwTndCRXc3L2sramVlU1U5VHVEWEhLano1Z1Z6S0ZlckVFOWJaOVdyZjNZUlNjMGh6Q1FBWWhqMXBvTzA2cG9IWmdjakFhVVI0T21sYlBmMXJIbG5TeDM2VFRyLys5Q21STU9QTjUxZTZCL1VXMjVldTd2aVZVUkVFWWxCNjFXUHlpOCtEcHNBeEdYREJ5QkgyT1JNRzJ2N2svaG5YcVd5cUhQL0NIQ0NnOGg0VGtIeEw3azlWVUQveHcxNElpVXR0bkNNRG9PUWVIK2l0SXhQamhTSStLNXVGbVBqQzhkUW5lSTh0WUNvMWRTbk9KS21Ob25ib05wTkc5Z3VkU3dDZzJYYnllN0R1MStWUUdBLzYwaUh1U0FtT1FMRFh2VWZ2OCtQbXpkeU1PcFRHeDJmQ3JqTXk1dEd6eTkxemw3YTh3dkVsTWU2Vk04aVpDdjdDQ2lPSHlZK1R5K3dPSDBjWjhpQVYvdzF3bzBKbE1WQkxNNThMMXJWdEU3c2EzWUl1aG9MUGN1d0N5bTVBL0ZtbnZRUm94SGpoZ0FlWDVXU0g3cDJCQ05CeWQ4QXJ4MGlTN253V0p6ZUJXVFFWemMyaW1YMHk1ekpYNnAxWW1zZElaVGozdU83RVB6SDUrMTBBMyt0K1NoK2hrYnlGTTNSdm4vQVBGajJvTnhWekNiQ3M1ZDgvSkNrbjhtVlJ2bVB0RlV5d0I4NDRDR0IrRXhRb2txYjVmZCtZVXoxd0xlOCtIa3ViemFtMjIraWZBYzYwb2x6eWtWZTQxTUVuakpNTUFza0EzcmJvVk9LbEw2L0FNWGI0NGdvdkFzRzMrSjlkMTh5VDJrcjkzUmFLenlITkpRQlVPK1JJK3NaSFJSNGVZRWpTRis1ZjVYUk95TnZ6aXgwZTRBTi9NWHlxQkFCWjQzUmU3Ni9lMWlqZVljTFhQeDVqSlJCb2hkUmc4VUNXN1pIM0s2RUY0Q1NuR0dXRGdWWW9aT2JxVHcwbHdKVFNNTzdqdVRQRUFmcTV3OHRPUUhCYzY3TWVpei9MSlUvYk1tL3ZBVER4d1hNd3FabGp2dGNpMkE4Q1laaG1mUVlGbXZYRFFLcVE5ZTdNdm9OckQ0SVNhaHpNZXFLVXVRUUFqTUdabVFDSnlqajFPTWtkcUlyeGhSekprU3c2a01kOFA1VlMrb2NuQW5mM0JZQ1kvSHg3a1FuQnd6QU0zREpOWWtlQU0xSklPdVlXZnFkZnBnNjlJQlFKRVlSTDRZUXoyYUMybU5wT3JlN29uV2owQVM0NDZsQTJPZmxLUUdDY01mWTRYRis1NnltcnM2eklZa0hoSGtBK2xKTTMvK0FyMWFnMWsrUkZpMFpLc2kxWm1HRStsd0JnQitMRTlLSnlERHlPa1hRMjlSQkY1OUpwZkhQUDEvN2VFZ2p4S1pTd0U5dFkvZGtGOEc2MTlvOGZsTWlQd096VE12RERRNkloZ0dSblp5RlFmUStNOGFJWFZHVDc2V0FzTWtXZFFON0xMSkF5dDZFVE52cjUvV0xINEFHbzByYkhCcWR5Wnc5V3hnaUgwVVdlc2dnSTBIWGtkVC9yQnpzRGdnQndmdzlBaFJtbjJrOVdUbzJSenlITkpRRGs1VXdHQUl6RjBlN0xZeGlKYjl5cHlpMFRiekh3S1RmeWdJL2JSaVBtN29NeWhBQ1Fsd0RldGtvcjRwM3ZDWGdISUZ1THNaa3o2bk5Ia0k0WitNaXo0bGJtTmF0OTQ5Z0VUOXEzZy80cU04TDZsd2I5eUMrVFd5bFhjL0tLeDk2Yy9FVVk0d09RSXplSTZZTnFmakVFM3BUTG1HVlZobFJVRVRURFJGc29PZWMwbHdDUXYzcUtiV0VqQXpNbTdHSHRUZC9RU1JsUUhLMlJDRkVPVEo3RHlreStvOVJqUU13em9SdjI4aDREdjh1QXhqVlN1RkhsU3lEdFUvM0RHSW9HSHF3K3c2U2t5dm1jZkNDQ0oyRVArQ3lVdlBlRm9QZzNwYlc3NXhsVlBvRml0b051cE5UZmVIQUNrc2QwVU1MbnhJMWNZNnNnMkRWNE1qZEtVNThiaWlGT2RBRU9xaUw0L2ZYS29lVWk0KzA1alJrN2JOL29remdSdUdnMGo1T1FlUWdaY3drQTZPRU9UZU9VcDNNUG9hTlpzbXJ5eDUxYUJCZU1janAyMWltYk8ybzd4OVpORFRMUjJ4MEFocUlIT3dCR1B3OEU4WlliVHc0YUVuOU1BR0FkeFVrVkIrb1dpZlp1bThSekNLN2JpbWtaUEdmSHZWajBiM1hIeFBxSkFMcXFvbGRQRVV3clFzSGhGcnNHT2JDNmJ1UlV4WWQ1clE5LzNnTUFWNnI0WVNLeFZjMlFjZElKbVRZRndkbndTVGN5UmQ1Y0FrRGFnNEdaeW5qTjRxRnlkNTQ0NlNqTDFNbWRrWEl6UDVTMGtKR3NSNnlhMVE2VnUzTUxwL1U5VksxZ1FpLzh4dDFzRGh1dTZGbi91QWNnUENRU0U4T1R4YU9wWGdBRXNlQ2lNT1VNZlpRcXhrQXQxZlpHN0hkVXhJNXFTVVNET3VscVVCdlpsV09DZW5HNUVQWmJsb2lJOUtHVHhXY0xLbVMvMUU4RWhHQmg4ajJBd3B3TGM2TlpsUVB1cEZKZW50ZzhDVTFkVDByK1FYTG1FZ0NpQjBJRmp6RlpkeWZQQVNBcEEwaktvemR4bXN2UmxNdDA4cEhUU1hyL0dBcU1tOGRXdHY4OFQrR0VUQnNiOXNiekFCcit3bnZlUUFNdWVWUXE1K3FnREE0SHJPUkZpY2hLSWNTNjZTcXpKMVhVa1lDUmY5STBUM2dMd3BDUW1QYjB1Um92cTMvYTNlZWlhZlppWGI3eUc4VmRGNUpFNXNSbmkyL1hDbWxZT1RzQWRnZndsK1pEaVJtZDBkdTZJUi9sNXBUbUVnQndMdU91VHRZN05NNHJvV1RFUFlBaWJJNU91MFAxajE1ZHR2R2VBOThFWkpUSW9aakx3U0JsbFpySUdRelV2RHVlZVF5bW5PeGl5RlJIbXhBSWFsSVVDM0pFZzYxSDlWQlQvV2pnUU1RQmVzcEFUMEowTnF5Y2lhK1dQT0dGbi9CdEd2eGdaMlJPQUloVTR4NTFRQlVDTURUOG1OdC9aSUpqM0JJUTVwSlNIK1VGbkV1emN3a0E5U1lnbHJYSEVVMTBJQ2wxTW5wWGVWTTY2aUJISmo1emkxUmhVRDZpYmdleGU4eENsSDZvbUcxTVVmY2dFYTdqbTRCVXhnbkNNTTRacER3SE1IZ1lpSFk4Q1RSQnNqSFY4RVNKb1krQVhwRW8xYlAzQTY0WEd2WWlnSFJJTmxCUTQxd3JIeEhvWlVmRktxMEIwZ2JybjVPYjFsVTU3d3Rrc0t1VHYrb1htbkllQkFEcUNzZDJ2d1pRVkZDWkp2SmpRZXF4Mk1DYkIyd3pTVFJBZzVuY3oxbVlYVDZYQUpBVHQ3WFBUMWdkd3k1M1JPbVVjYWNlUTl6dHE2QTBqYzQ1alp0bHNISjRrRElKeXdEaEJpQitZRDMwbWdqc3dSUkFWWjI2Z3hHbVlrUUZvVTJFb1VrS0JmdlFWWnI0UkJ6UWd6WkFGV2x0cld5Z3pPVXNEdk1xUklBcVY3dG9VRG83QkpIYmNPVTBFQ1RiUW1CSW5BVnJsdHVXRUdlMU03QkFUNWc2K0ppY0JVYi9FV2pKWVp4aEl1ZzRLVWVmTE02d1NZdWVTd0RBR2pvZ0Q4bzRtSDQ3U21yNVBSbW9MRGsrQ3BFaUtkRlJpbk5MU3p6ektBZEExc2x5OGxoWUxSd2VRQ1VHdWhQQ0MyeDhRU2U1RkNzclFOVlhBTmYvN0FKcUtrSThXSVQzajFjSWx6Y0FNNi84TkI3L1BjcXpvclNUamRWV2d5MVlLckd2MjBJbTM0YW41UWRHLzl1bU1wRlRKeWEyRkVyYlBORnBWazVvY2JEejhhRnhGUGlvVkJtc21YQWx2dzRNam0wK094L2VFa3gvc2VxdlVKKy9wbElEcHBpVHkvR0hHckMvYVdpbWpmVnF6eVVBMko0MGpyWUZZeS9IVVJOMXZCb3FwM09RN1pUeUs2S2hKYzhkNVkzZ0ErVWN4NklEaFEwSXZnUW9BWURQL2YwREpySStYMmpCVFN0V0xnOThQT3VSMityRGdJNDBXSDN4MjZBbENvRUVUNTJnRjY2U3dYV2NsRElQckdzbFExT3Y5REFtVGpZeEtUM2hnV3lqaWdRR3RDU0hYT0ZvVGU5UUNSc282dkRpbzl6VXpFWENoL3lNTlRjTkNRTGNtVWNlZkNTQk0wdkZsSm0yTVUzNXVRUUFKcXdqR3hvVWJ4NW5CMEJWTGgyWUIra3d5ME40UllnNFNxWEpiRHFxSkkrSVpWNVpCSjJjNVdSQjZWdUlyMno1dFZGa2xDRVo5Z29Cem1vS1NIMk1NMjhWWWFDbGc2RE1nUFN1UjdudnFSUTh0Rmp0eURuNnlkQzNGTzJMZFdwQ1JwdmE1d0JNSzUzWDh0WCtiQ3ZlQnNaZXB3cE1MY3BYYWdsalNrclFtSUt1T0pXQlFSdG5tSlA2ekFnRlNlVytaRUtzK0hMOFpIL2dKOTgvRUkzZzZPMi9jbDVhazU5V1VZOWpWc2xCR1FjWEozTnZZaDVwTGdIQWR1bUV3L000emh1QkxFZGVvWU5JZzBGWWNFR0pjL0tQY1cyNWhhZUlxT1JiMFdBYUQ0NldIMXFXRXg3ejE0WkdnTWV3Y08yRFFMNVJaNWxBREhBVmRDSkl4YW9vQkJPZ3lNcTI3WHZxRlVUaWc2M25weDd0a2lPN3pST2ZlZFRkZjdac25jaDVUVHM1N2VaaWtIbmdDNzJLb2NYUXgrM29SRkR3elU1UkFoZk13Q2pvakx6QXhvRTBFTjhqc1AxRmtSM0p5NThCNTJmQi9MR2ZhSkF0UXdEVndXZHF3RVNkV0o1ajJnSlJZazVwTGdHQWtJdE5PZkN3cllVUGF5c2RrSjNBWUVlbUI3MkIvVkxjWnFrRFRCcmtwZUFzQ2NGbXhrQ05DY213UDBlWFBtbFFlM1NHamlaSmVROUM1ZGdCcnMzN3VqMEVIVVoyQUZ3R1VDY090djlNaTlpeXhnMHhsYlNVN0pwRHNsVjVXU2QrYldoTis5bDF2VFJoUTk4czJpRFhzUzU0WFhpK2JRZ2RQZzY5ZnRBSGRRa0FjUVNNUHNqTkhQWDJKUlJVcXJvS0FDWVFNUEU1SE5DVTh5bzN2dVRFK3h5M3RMM2pGNVA0SlNkK2xvMDNQTjhRekc4OGtOOFVqdmNpYk9JSER5QUZCam1kd01BcXp6c1NVaS9yV1BXVW4xQ0FnMVJnOUdDYlQ1RjZmcVRhL3BQTjREeklvRVRLNmxrKzBWeHRvV01kUTdKeEhta3VBUUJIdXdPd3FCanBqanFHaGE0bkdWd0sxQTVObUhaR01yTTh6bUUwcmhDU1BoUlFzU09wcWlzU2d5elRWRTU0eE1EMkRucHVMZDIyY0tZSjMrYklneGNjUjZiNEdGQ0RSTTdrajhua080TzZ3T1U5Z1d2TFM5MVp2UWp4NHZwUzk0QmVJWGEvWGlKeW4xNk5mRUc0czNyRE1KT2RpZTdKTGNGaTk0UmhBakJ4UlBLZzk0dEdKTnAwK0FxZDYyaFBDdEU4MFlweTZFcWltTEFSNVpScVF1UGEybVYxSHYzSHVNQXV4anB3SHByakFZc0FYd1NKbVB3RWd1djZTYlhMT2k1dDduVnY2R2VWWHRkeFJmQjEwUWdtN0IzNFpTVUNGM1l3a1hlMWxOTzJrNVZRUVhUYXhpNUkzbWNJNSs5WkZGMmh3YWQvODZRSTBDZWFpbURyS0JpOTVwSG1FZ0N3RGNQcW9US1RBYWNlSldVbnNIM2ozK3VmOHRKNyswUkJ5dFRDaVR2cGZOeEcydGZpZ2RPT3BOOUtqK1RaMGVDK3FZRTgwZHMvK0xHUUMvclpza2YwcXJESEw2eDJqNTliNlI0NnUrTEpmMFl2RDFsWHIvSlNWRloxOGcyVk9XS1ZaNldQZzhuaGlhL2M3ZWlVN1kxMVNoc3loOTdDWS81cDVXbXlVd2E1eDRkeVB2RWdHTlNKcnpJLzJMcXBKM1UydDNVb0tyQUxBTWZCenVDNnJpbXY4RnVMK28zRmw2L3ZkUy9wZU8zR1huZE51d2UrRUxRcW52WlNoQjBFN1pGNCs0OWNvQ1QvQ3NmT2piR0ZOOWhOb1RkbmN2alNqbEpkbUR0UExDWjE5WmZnd1NYQm5Zcy9VTUo4QW9BNktTYy9tbFJERDFSclB3Rm5TMHgwUzNxZXZJV2JhaWJwbEt0dnNzR1NIWjk1aSt0RlVMa3ZUWVBhK2dNNm5TbEVyTldDSkljT1J2L0FSMDQ1QnQ2ZzlxQUFQNG1QK1o0NnY5eTk5WUhWN3FtTGE5MGplbG5vUmUzZnoycFdNK25QNjAyb0YzU2MxNCtnS2hZNENMRGFzd3BpQmdmdGNiQ3Frbk1mWmxPSGFUcGxIemtIRDY3UURSU2NNcWNEN1UrR29uemFnQStjbEZjUXVKUXpYMUxnZ281dmVNbVRmdDZ4VHJ5c1oxc0lCR1h5WDVNeDF6WW4yZ1VzNjlKQkFVSDRxekx1VlFXQkY2OHBGMDd4UVR1TzNXNWJrV1ZYQVpXeDRZYmtXOThES0FwNFlTazk1WnVxOW9ONGl0YlZEbFVucFpnb0hmT01vNVU4TndvY21ObWU1eElBTUlHSTNvK21LR2RuSHNYRWREYU9ZaUE3SWZzQVlhMHZEZXVVT1hWYjJHVWpnSTZmMEsyS1VjSHJpUkFNSENiTklDL05vRDUxeG1iZ3Q4Zk82dWZDM25WT3EvMUtkMTdMKzBVdDV3K2VXKzRlMEN1UTd0ZlBINjFyaTg5S1RuMG1OY2QxY2lHOHhkWnNRUTRycXlkMTVsUWdrZXNnYy91Smh6WktZLzFHNUFPTFk1SGpzaXVtY09XZVpDVUg5bEVDbWk5VGhGdFdvT0M0b0tDbkgzSzI3dGhKVUdEeVg5Rng2ZVpFdXdBRmg2MnV1NndBY1hWcnFmdkk2OHZkczY5dkM4ZHVha2t5WWc4UU9uR08xWjZjSUo3bHVNR0tEOVY0aytDSXVnM3lpQ0NCK282RkhMRk4yT2NTQU9pVXVwb1UrQmk2eHVCVVJiWkhUUDdCUkp2U0ExTlF0MnoycVB5M0ZIWUN4QndUOStsNi9yMVBiSFJ2MW0rY1A2d2djRWI3ZW1oTWRGWncvYkN3WG9zdW4ranc5bGxsbG5pdjBESUtQM25JNnVSY1pQSThBQkl2OUtoZ3pGeE85ajhuQTVGbEVaTkloZVRWTzRPQzcwOG9FUGhlaG9MRWlrYTFOa2pkZldmMVduWFY0UkxoOGczdEFoUVZYNzh4Nlg3ZnV6YTYzL2lXdGU0bm50L3FmdXpqVzNyak1yKzhGSmRXUkJybXR5ZWsvWUpuV1AxeFMxNEdvRVY0TEdOQjZpWENzVklkeXhJRVBLODBsd0F3K0M1QXNleW85d0RDM1ZHWnp2QktTaEZuY1lnaFFkQ2s5R1BOQytDSlVSaVNsc3hScmxnSmFWdTIyT1lFMzVET0t0SFVqaURWc0FDMnRWb1l3VmszcTZEci9ick8vNXdIVnowSWI4ajR5emMxNGJtMlZRVHc1OXZDTVRRWnRIbDRjcUFkZ2xJWURZeFRhYkQ2WkV3ZmxWTy9FZnBZeFZ1cGhjQzB3WERUUXVxQXpudjRRRFIyTzNRVkJ3SEJRVUdqTzNjSjU4OHBJT2pnbnNIckNnUVA2ZGVZMzNMZmV2ZWIzN3JlL2ZRTFc5MFBmMlJUdXdKK2xsMEJSTUdFTWVhSmlKSldsQk45RzNjSElKcWtCazBXTlZQcWwrVkQ1UkpTSno0Q1VHQU9hUzRCQUZ0c0U1MmtBMFB0dkdNWWFGbFpIM2twQXlDUGdtdUxPY0FQeWxOTUNDeWRYSkV0VUZ1c3JmUURRUFV5WUpRQkFyYzdGaVlWUEVDTkRIVUwycko2T1VVMGRZVmtkWC94bXI0TnFLVnNWOWV2RTIycCtJaHVXZnYrRlMxNzVId001Z25UQ0tHWnRMZEtCRGxPVTNDSmF2VWJWK3VkdjQ4U2lOU2xGWFlBSytoc0s2c041QXRaOFVYR3dONUNwS2xkK1l2QXNLM3RFVHNrYmlCTU5OS1hDQWc2TGlnUVhOUnhYY1NYTG5lNmxGcnRmdlhqcTkxUGZHS3IrNmNmMnV3K2Zqa3VEZGhST0RISjFZbmxZazU2UkdPMGxaY0kzakdvREdXc3AyWGM1dVF4QWsvNjZqYjhKMFdlU3dCZ0VIb2doc2NNYzFsd0hFZWxmOWhCMUNnTmNpVE1mRHA1d3AyVXQ5dzdsanhGSWdva2JhVE1GTzdEb2hqazI3cXI5Y1pMMStJdXZwYW9GUzFyeXhxZE1lazFCR1ZrM0szT29kbW9jdGlHcGxWSmMyNHI0d0RHTVpyT3VFM0NYdmZybUM5bGlWNmxGQngxTWdIbTlsMExlWXcxQ2R6UnJtbExsd0dibXRUWENRYjZaZEFWSFU4ODFIVVAzNmNBKzdvdUc5Wlh1L2MrdXRMOTBFZTBJL2p3cHA4LzRCNEJFUndmdTUxQld5cTRyTjJZZFFsaXc1SnEzVGEzem1ramVjSzNyWGxuREhNSkFMbHF0emExOEZGTXdMblRvbVhGTmNKYVA3bzluY1k1N0lscnFob2M0aWtaNHo0SHlvNE9yTTRGNFV3RHhqd01IdjB4TmNkMXJITUtHVFhlb3FtNU91Rm53cGRqY0NOUkVkWFBBakF3TFQrYUQ1bHQ3U0k0bEt3NkdydHZleEM4eVRwU3FTa2V4REdsM2FaVytxK2lXb2NrVWppa3VBV0xHOHJFdnA0V2xjWiszRmVXQ0g0NGhzZDZkZk0vZ29FQ3dxWWl4SVJBb0k4YUhuOVlsMW9YOVhIcEs1UHVkNit0ZGU5NVpLWDdlejkzbzN2MnRWMC9RSlZCeGpzOE5SQmVSNVA0Q0RHMFZMK0kwZnFsUFlmTnMxTG1oNjEzaDN4ekNRQjR4UGNCRkFseU4wQW5EYnYyMXBZTWVGV1hvR0s1T0F6NVdTWXZLZHVpbUdOOW5MYzBWN01nUXdlZWtpWHp5aWdFZXVaQ1p4aWNBTnIxSUZJT2ZUeElxNHdSZ0F4V0IxWHpoUGNUY01Vd0xnV2dJTGM5d2hralFWbWtTazJEUXNWUy93Qkt6ek1WT2thdFVSWHNUZjhGTUdTd0QybTdNRlgrd2pZdWo5VmtWKyt3ZFFJWUFBQkFBRWxFUVZUN0ErTGYxbVhDbGo0ZFlHY3cwU2NKSzNxMjRzbkhkWS9nQ3BjS1M5MS84cmxudTMvNDcyNTIvL0tYTitQQkluVUVmempiZllnc0ZYbVJTS0dvWCtrUHRPalQwSUllUDRhbTNTc2I4NXgwZVM0QmdHc3Bic1p3ZDVaalRlR1lEMTZHYmpxOGFjUmZUeWdOVStZQWQ3NTV1TVdPTDk0bXl3UEpSdXMwemxzYThMNUVRelhkUW1NUEF0WjZKUVlCbVFZQ2Y3RURLRzBMMzBwSjZTME9FWU1rZWZ3d2lEK3JsclQ2cUsrdmc5UVd0cXVDanhwZEJoTDJGN0xoL1JSaGVtSVBUV1U4VVNUNnU3MCtBZ3ljWmJvWkJEbUNGbktaalgxOUNhTFFaNDFGUGQ3UFNVaWVIeWpTc3dJM3RDdFlVaEE0cHdjUG5ucENZL1dscnZ2cWQ2MTNENTlaNnY3eHMvdzJJMDlkU3JUN05YSVZhb0NtdjBYT3BxT2hRNTZSdVZvdVM4ajN1SDZaUTVwTEFOaVFRL2ZPNithTEl1MTFkY3hOZWZIR2RueVVkU3diMVdrZUkrUTZIQUFrbHlBelRpS0xLYkFseTJMTnN3NzBNbTRTTmRQOE1PMmxQdjVsSUgxVXRhZFhYL2twTmhtdDRhZ1Jxd0NnQUtqeDR3T0ZnWSthMGpkRHAxVHNVY1hkQVQrR05NdkRGQlZzWDRQMzUvTWxhTmgwR0JxNmxabmlFMWc0OG9FcG5oL1kwdXJQemNObEJZSTNhVGZ3MGllNzdrdWVXZTBlT0xmYS9jQXZoMjhqQ0FSc3YwdUdtMVFiTkZPYnFvQ1F0MGtFOFZVV1NPMUVOalJYZUFweUhta3VBWUN0MWk1YkxSMmJjdTZXamsxZGpCM0JQL1pGQ2ZxRzNiODZaUUJnSW5oeUZLKzVjMzBxWXdGZWFGUHlVc1YwNUkzVDdmUTAzWElGK1Q5MkF1anJ4VW1uL0tMSlFVWm5zK08yc3V3ZFFOeHBrbnJpWnZWSFdSMjA0NEhJOGlOYWZyVTEycElFMGNzSklGSUtOcTJuZ2k2b3dqZ3N4ZkFlNHdycnRBeFdsQnVrVzlmSG5ud0V0MVpyUk5SeElKeDNXQmFuVXluYkwxU3NkY1JWbWl4WnRiSEVEVGZEWTlNRTA1dmNIOUNZbmVqZXdFTVBoSnpQVjBWMkN0Ly83STQvS3ZRTldQZ2h5ejc3WHdYa0c3YkU0YWx0YTBpSnk3enNOK1lISC9IT0k4MGxBRnpWOW1wYnEvT2xTenIwc2N2cmwzZTBBeURLSHkzMS9FeDJuTzJUSCs5YzFZVFkyVkhZOWlZczVOSVpISmx5Y285ejAwTlVzcFo4S3JMeVdKL1M2WWxrb09XejVJUTRlTkFob01KbG5oZzhoWmpWRDh6OVRUcXZDaUVOUnV6bmozc0Uxa1YwMnFuUElzQmEwNkJRSjBRbEZ5QzVNcGY0bWdKc0VKVnlHeUFkUG9YTmVpZmVoWDVoeUphY2EvYVlyQk1YVlU2ZVVlSlBJVUpYV0F5ZTlFWjRwRVFWbjZ1RU9rQ3lMVzc2OC9neGp4UHo3VVFlcnJydmduS1ZmNzEyQk0vcm1lSi85dXhOM1JqTVQySHdkMytra3FqVTZ4SUtaaHRXWVhUaUc0MnIyZ0tzYWZ1L3JvVnk3NDBSdzR5S2N3a0FmanBOMXJjT3NJT09ZUlQxR0UvTUJSWkIzd2xIVGl1OEZPR3JZdys0OEkxejBKbUMzeHlKR29zMlBycFVZTU5LaDFQc2cwQzBYOGFnQ0QxN3JWOWJPUmhneTgvWFozbnpyN2YvS3BQN0ZWYkN4d3R4TlFoUkhzRmtkZlExQ3JaTjdFTUhZaCs2clROcmVOUjQrRWhuQTRXb3pNWHFWSlVoQlZJK0taUGQxWFJTR1ZJdk91N0pWRk1rcDZjRkkveDhjWXBWZUVzUERmRTQ5WDM2aEdCTDVkLzF6blU5T2JqZC9lekxPdzRDeUtHK04xL0tDVk51QWJraWdFZFZlSkI3dXdRUEFYMWVhUzRCQUVlMEJ4M0c1RDJPblV4OEJXWFhyMDRxM3FXTk5sRTBxdUNUbmpuRVFtcUFBUmppQ2hQNjlqcHpVeTVLMmZuSXJaMk5iQm5LY0NCbE8zMzlnaXdJNklESko5QXArWGt0T08vL2h5T0dlT1Jjais3cDdtQzhFekNEZ0dxSlArc1dVVk96Y1h0VG1TcFMzRWVyVUd0T0JZci9wdElLMHRPemJiUFVjYkNEcHhnWjIrZTRVV3BVMlIxQVR6OE1RMEhCeWsvN1BGWHFjRW5BUTBXYnVuZUY2eStXbmNCWGZ2YVo3cS8rNkJWL2wyQlpXd1lrdFNyU29sL1ZwcHdidC81a3dMaGkxTFJNQXBnWHlNcnhOSTN0cEhGekNRQk1XaVlIUjNvSzhDZ3BxNUxuRzFUcEZFZC80VEp2NWJzTm4wcjdOTmlVWFN4bFlDY3JtWVZodnA5VmsxSXNjVzBYVTUzcWJSQ2dSeE1YOG5YT0VRT3ROQUhxb0VSOWRsRTdNaEorRHhEQkVSRFVMbmdoOFlGWGZ0c2dpVVhvVUhhMkdIcjFiU1lYZE9DZXIrYzVZY2g2VHBPWnVvZ21vNkxFV1VkUnl6aE9LanZEZUpMTHdvekxoWmpTUXBDbHFJcisybUNFakNENTY5UnMvLzFSb2E0Tnp1cjdCVS91TG5WZitta2IzWGQvOEhvSnZCSU9QMHUzYktJdUY3aStOSk1zTk9PZVJyWUJLMGViR0QySk4yMU9VV0F1QVlEUE44dmlWUU1CRDFUZ21LT2tjRkNwRmJNdXFqT1Fpa2NITWxYSWhjQjR5dFJvOGxJc2hCQlh6MmJPVWhUYVpta1NMTTNueXptTlV6a0hVSEEweWpVZ2trc1IwTExhc3BFRjc1dUFqallTVHFORVZjcksvVEVndVNwNzNLY1ErSlFvRnJDVXdCNlVzbkxtQi9HQjc2WGVpdXR3dEFQYWs4TXJKU2UxTU1iUmZDRTJKS0ZFS0IyRlQxb3RtZXlScU5pWGFpd3FIZGY2a1krWWVSeDdTemNIbDNXWG5zZUt2L0RwdGU3LytkaG05K0hYZC9TeGRwbXRYcEg0aUR1N2huQ2pIWUtFaGI2aExCcWtGcUZMTEdwUU9aQVduRW1kWFQ2WEFJQzFPTGc2dWN6SzR4ckpkZzhuMDBrT0xGUDhnNE45Y0FKV1RudXBRK2JJS0N6bUd4WUNOZUFvekttN3QzakkxUkhYNEVrcHRVVHdtRktPMmRZQjNoUk43c28xMjZjQzEvdDhMTVNEUDdCeVprZ1oxclhVUkVwNDhpUGZCakZCUkIwMDBqWjRTSmdHU21yQVJKMXdIaTFVbFN1UXpRaFJsQmpZSnB6RGdjaXVranhaMytXQ1RGSDJUdmdTdGdFMTZ5RXQvcjJTTTFHNEI2RC9ibDFCZ1BzRFgvS085ZTViZi9LcW45SGdVaXdscFV3K3BzMVdJa1NvcEk2cVRWQ2xKSEFjbnZ3Q2dqK3BzOHZuRWdCd01CTXVEeHpGT0ozbWlGdWJHbDNGNUVkV3JRODZqMFpBb3BLUHNsTUZvbHFpYTNTb2lGc0RqWmpCSUhKN0VMUGhSb3pSQjlCZ2EyWFdha0p5czVQSFdQTW1JTG9hNXZxZklDRG1hSzVNZmtvcERBSndNRlN4RlVpK2lyZ1ZjQ1RtV3dscWFGTVVhNXNST2NKZFU2VkUwNmhaeHBNTGdhazNSR3VWd0VjeHBtWGZCTFJTU21SQnhTVlZQQ3VnMXdaMDI3cEQzeWtBOE5LU2R6KzIyajN6Z040dDhLcStQS1NaeEUzYVByRkk2VEpORTU2eG1ndEZ2WGN4Nm95Y0R6VHJJTkFMbWlrMGx3REFLbzBUT0p5VXQ5MXhGQXVaL1BTVjY2ZThLUUlndWMxQ002dE9XYVhxQXIzQkYvYWVzU0lDOEdvZVZZeklIUVQ0YkNPTmEyMkVWblVlRWJ3aEt2U3FYL0lyQjhlZDZMd0ptTXF4dm5BM2xKdUF0QjlIdE9TZGdPbzV0VUlUZDFKNXlqNkt2TmIrZ1lJSENLbHRsTlV6SFNsOGlBcjdzd095ai9JeUFLa0VrQ3BHNVI1dUtUaXhVSkR0VGxWd0tRTDVQZ0VQQyswb0NQQkVLNjllKzRLbjE3dGYrT1JWdldGWXZjRkE5OUtOVmdUbENGdmNvSTB2YkNFVFhUaG9CeWlTUzdTcFloV1J4Qm5tY3drQStZd3pSc2JFay9tREdYaDdDNm5iSm9JdDJ6SDNsd1VITmNVbUt1dFZmQkxFYmxwaDhQQkk1dHJRRUVIbnBCeFlQRDdJQ3o3R0NaS2lZeDBjVEF4ZTZyVEpza1EzTjAxRnRkQ3JNSUtHcjM4T29QQ0JKSElvTU1RUGc4WndpeW5DaXBpQ2k2RGpaRFIraUhSSXRsN1NxRUl4dTZjbnRJOFFrNm82cUpvWUFzTjJWYVpvMnFnaHk0MnBsMDNBSFAxQVkrSjNGU3JqUXhVRGRCQmdZbkw0Y2t3N0FHNjh2dWZSMWU1QlBTcDhTUzhtbmVqdWRINGFFWjBaN2Z1R0lBMDJUUVFsVUpDaTNTZzdBQmc1KzlOY0FnQ0JNWGNCTnBTeWJNTWZSMDNVb1dOY3YzZ3g1SXlraWVhT0ZUOXNGUzUxUUNhWVFDMmpWRllBVmtLNjZhVVpsNFZ3cmxPV0FkQ1B2R1NsSmtHdkNGSUdzU3dzaG5NWEFBbGFXeVpZZWdkQTFFTUl4bWNTenZjQXlQa1QyVHFNaFNUL3NYTUV6eVlOSmVQSmtvYUUzcTZHN2tsdjUwTldoYXd1QnlhWTdKRTcxRmRVTkNIT3RyOHREMm55YWVrazM4Z1R6S3ZYK0J4NlI3T1V5NEQ3ejB5NnozaDRwZnV4ai9LRklkWFFRSjlNK1NCL1Z4MnpMSjNjSHMwVkRUSlBoUkJQay9NS0FuTUpBQmhwL3dwSVB6T1dNZlk0S2VWUlArUUtFbUI4RVpod08xZXliWExxRXBSSTdwWUNSMVlLcHBtbGRoaUEyNDJLUFZGSTQ2bXF6bVlsWUJJekljbGRqNXhrbmdJVzJLUUNrN1dKY3Q0RDhBVEhnSG93MEtNOVpNUVE2eHNDS21KYmtiZUZiMVVIMnV5U2JKa3F2TWYyME5CZTQ0dmkrT0VnUGJPRnBQZWNSYklKT21rbTVyMEVoeFA1bkp3KzRQa0FQZzFnc3I1YnU0QWYrK1dibXZ6eU5VR0FxbTVmUlAzemNCSUE5d0U4c1UzSHlNQURJVk5rMCtIaGs1MTVwTGtFQUQ3RHp2RnFvNm9Eam1kaU9GaDE4VjlKT0s4dHUxam96blJxYyt0VDZvQjNmY3JpcXZKZE1qSk9Zb0xQY3BUbjVEYXVDRWs1THVya0lPRGF3WURzMnBoZ0JsQ1NNMkJRaG8xa1BWWHcwNVNLV0JwM2xwbDRCbDE4REtqQktWbDUzVW9qVmJZbHplYVVlbzZsTzFDTmtTbzdHSTd3NllJUmVsUlVTL3IzUkN3VmFqMDVJMjAxSGFYd3hVZ0NSZXNyZm5MRGhTZUNRbyt4UElvQ0NBSXU5OGh1ajQ3Z2FVRTE4dGI3VjdwemVqRXJQMnJpajdjdEgwMVVUeks0ODgrQ2h6Z1dwQ2tiQkdGRFgzUjJBREJtOXFlNUJBRDVvdzVrWU5KQkF5U28wOC9wd0t4UDJYSUFpdHlzbVNnY25yUnNPM1B3TVJSQ1AxaHowSXpFUVlyT05DUllqUEM0ZzhtcGlMeVNRNGdoVUhnSzNuekljT1hJS0pLeWF0SUNLeDd4K2tsQTZsRElyUXNNR2xuc05xanJvOGl0c3VDNTA0VE0yNlloMDdEVVZCNFEwSExvQXlNQ2JiQTloVTBTa0RMa3pNb3FYUGdXdnl1WnA2ZEhsZXh0R0dLdkJGL1N3TnFMN3RUU2V3aWpIZm5kOGt1Ylh1MFpYS0kvb0hzQWorZ3R6Ui9WTXdGK0ZvaEFRTCtJbCs1aVFoTW8rT0ZSZ2dIZFo3SENrNEJKTkF0OFVJQXcwd21mNWhNQXBEUkc0d3g3V3dBLzdwR0czODRtcW1XeTR3ckM4cEtRZWRKVWhsN3JKa3hla1VNWTdwYVdJc2s5WElyQ1pQQjVpS2lRWlFBNk1SRGlJUWhvY2hJVUtoNWg2RUFsSmVNTkZKbkNJMko4NEQ4UG5KS0hjU293K1RVUTQzTm82dUZYdEEwYW9sTWZ3M2txN1djUjlvUFRMWWtIVjdzdDVRQzVBM1E2S3N4b1JUSXA4K2s2OEswdm85WkFVRytpMFBaUEVSWmM3dUh3bkR0SFdDWTdSQW1MblpYS0NLYnp4Y05sQUxPYjd3MDhlV0c1Ky9Dck8vbzBJUHp2eHVDelJJdUlTd0JRSk1ueDRsUzA0bnNkaU01alRsY0FjM290dUN6TlR3S3czVzVKUjRDNFRVcW50R3oxVXdUazVGRkErQkxsUHFCYzJuTXVPSW9CdERCMSt4U1U3SXpvc09na2VIeGpLRVNVZ1NGTlVSWWNvSEo0Nk56QUl5OWhKQ2dsUDJEQ1JhYnBPcUd6TDZPa2dIVW9mR21raDI3NUtORGlTek5wcFpWSllabkRjOHQwVzRaYjFqNDVZaGlETDYwUnRwZGtFT2NJQ0pjVVlxQ1N6Ym5yRm94aG5ZYTRDSjFaS1NhOFNzaUdVU2Y2SjRLcjZpb2E4M05qRHJ6Q1AzR2hmQXdvZmVodVA2UGhTUjJoUmlnTGN5c0lrc3pBOVhwUVpxeHhlQ3dvbjNXYXp3NEFaM1BJR3ZkWFkveFJEY1JKS1l1T3lVbHBPVFJRVXJaRlo5QXdkVWpKa21YakVtbU9saXM2Q2JKWmRMSTRuVklQZ0I0V1E1bnNNV2lpb2xHRjVDYVFReVVsNjFGa1dNK0NOdzE2NFdIMTV6TEFDSXgybzhvRjUxM25ySnE1cUU2eHRtVXBjdVMyYVZ3SDJwaW41WjhuWFBZejBXVHhMNFdxc3hRMWJLY0hXNnlud0RFQkErdGl0UXY3V0s5akxCUnBLVlRJZWo5Rk9GOW1JVDhhY2gyQ2NySS9xbDl0OHZZZmx1eFVHbEFxOHozdUExaFdqek1kbnNLYi9Mbm9VSjVsbWtzQThBMHNHV2kvWUtpTzF1RERHSmlPcHJySFB3Q3B5SXBPREZSQnU2TVRYd05CSWJwNmtlRWhrdko2RVJWS1V1bjdhQk9xRUNuZkV4cEdtSlJuZXpGQ0hQY0xLTGpPZnJFWHd5d242NFlJblFOQWJGd0MwR0Jwa3dhMEF2RlpkTjVnb25vZCtLS25iTVRNTGFIc1lSTEtIaU81R20wVTR3WmloSGZaZzJ1b2lGL21XZHFEa3YzV2M1VkFVVHF1VG40OEtxSHhZSlZnS3Fqc0ZSNy9hekFpNno3OUtDdmZHWWhCRncyWlI1VnpyQ09hdmxJMTU4cXNiK3BBbVNEaUhjQ2NJc0JjQWdBRzJ1RUMwdkhob3NPZm1mVHBLSnhJWWxKa3dubmpSRnZ1VHhHeTNab2pqVXAwWUszWVE2QWdtNzhSVHBrQmtVR29qTU9lcnpEa1FFRU9xREt1TEhRZ3R6U0puSlJ0L2xJSGNreitZcThReU9iTFFZd2lMaThBa2VsRE1BQXc0TnhTTm5iYmhndGpkc3cwQlpGeFFLb2tuRVJpZ2dYVW53K1FuWUUrVlhYdUUzdU1USUt5TXlUWkU5OG90Y0kvenVlL0hEa0d6K2wzR2ZscGRUNEpnSmozZnd5cllzWUdaR1RBVGpYUm40TkVEdStjNXYrYzdnRTBEc05JbkplT28zellsRTR5djJTUTNCL0F0QkVaNk9pZ0xCZGE4Z1JkMHFpZ0U5dkFVZ0F4VEcyajhMZXNDU3RQTm91MDRJSVJJc1pUQVpBdUIrUTFaZzRDcXVTNFF3WkhUU3JFeDREQzBGWXlsTHg5SjJCZHFaQlFoVmRKQWFTeUkvU3cwVEZ4WEtieEtla0E5SDdPV3pCVzBraFJiQjhMd3BjdHJpMFVPVldjK0JoN3BNUkZ1YXorS2NrT1JwQzRDREFDdmEwbnB5d0s0NWMrTVl1eStQbjFlSk1RYm05RndNU3V6emN0VmJ2ZTVXOTBRUThtUGJKcDcxTXFBR0JjSHVsNUREMU9zb01ranh1d0thdUNPSlNqWkc0eml0SHg2RUdaVlgra0FMemhmdkpNSUUxd3AyVEhCcXNFQUNBbldGeUp6Z3U4T3QwVnN0endWUjVWVjkyUTEvT2wzc2JyeERqemdCT0J5VTQ1MjJVTEdsOEdpb0dKYU1zRWFCVnpGU1BIYUJpZGFLOXcxUEtCekZGbHhtZDd3RzJFT2MxSzNTcGF0QWllb1VwVmdvQ0V2VFV2Yk9EcTVZRm5MUWdrOVVHYW9Kb0JPK0RvRDhJRzM4TkFNS3MvbHdBZVJ4WnF3VWp4MklHQWpHZ3ZKampOVUxiZXlpa0FaeUFBTmVzMGwwc0FJcVVIdFF4TUI2V3ZEMnRnZFpJcU1BR1FBeTdsMlpPTk1CenJOZ3ZPZk1tdmlsRkdvV0FvV1MxWElCdXVET0xQaHAzcmxEeUlnczk0WlRrVFZYWjdOcHBDendPdjJSdGM2ZzNLaHhEY0FQU0xVSlF6Z0NNS3FLNzNrMHgraHByS0pVcEZMc1FnSWExTjFDQ0JiMkVqVC9aVW1qNUlBemRtUnpUTnBrb1ZGYldOOWlTdGhGNzlSQTNhaXdKdUsralMvMWxPZWpUb2FVb2tGenI3a0tKaCtZbHVkRUNtTGNGTVdENE5XR0dDRTVGSmJveEt3RFZ6a1poQm91c0syVHpnS1Bzb1BPQm1tZVlTQUdTbkhZWlAwaG5IdGErZC9NZ2lrWTNsbGFhQ1JRV1hPWkVvSit3eXNieE5NWm1NYXdkYVJxMWtEb2Ftb3JSQUVmQTFWMEV5UEo2eW5ta3FsRUZtQVpVL3F1ZjRjUzVXZ2lqZkIwZ1JqRUlDd1JJM29taE85Zk1Ba1FQWHNnODh3YWgvQ3gzNzRNQktzeU5ZajBiOHVGeEl1S3A2SWdxMVdGaGNicXNYRTZ2LzJ2N3YrWUNLUUdjcXk2bUE5aWV3Q3BRZEFMVHFaekF3VHphT2NERmFXaEZac3NiWC9hUEJiVjFnQjVTVU5lTjhQZ0ZBMWpzd2ttTVF1WUdqV1ZkaXF5dmhlRVI0OEFJVWVTVUx3U3BVRW5BaHRqa09KeVd1Q2dwMGY0WXhnMEhNbUo2R1hOTUxZRGh4NURSZWdvQ05GMFBMZzZRcVF5RHNCV1dTQ3J3VWRKbFJWK3I1N2pNOEdpMThUWmlQQWlGUnVXNVhMVVU0UnUxQmlZWk9PdlhPUEpSa1ZMaUZoaUhEREZPNGJxTi9yd29CTTBTUkdkU3BvSG9OM0xkcUIyWW12SFAwQXdiRmlRQ2dDUzYvYy9uZ0tpbUlYQWZWV09Hejd3WFpSb1lRL09Ud2NDa3IwTHM3OHZaUWNlWnBMZ0dndlFTd2MyUldPNW1QWXFVZGhHT1ZjT0FnVVU2YVFPWUw3UmlsVS9LVEU1OWpQa0hJYWdKS29wMUk3QWJFclVwNURWZWY3aE1EQTZLTUNjYUxPaDBaZlcxa2dJbDN3eUNwVDZ5NVlCSkg1Q2Nod2dld0RteGc5ZmNMUVJoMFlLbGtva3BNZnVHVm9aQXJXMm9LdGs2dFZpSWtUVldja0RWSSt4QnVEcGFzdXA5aklPQmtDMjRNZjQzVGZvejlrMnlxbDNxU0YxZjB1Q1I2Rmt1V3l6clZ5UzlQUnRHRzB4cGxKaTZzMldjQys0WmNLR1dZU0tsbWtZVU1Cd0dSWU9GSUZycHdYbWt1QVFDbk05azhxSXUxOXZjUnJCejdwSFpra1ljSEFVbEdsVUxMWjVSTzFnTStZT1hJYm04TXFWZzYxaldnSmhNa3c5R0Jxa2t2UWkrc1RGYS9xTU5vbmZnWGpldSthbk5VenJtS1JNTU9TT0pEVk9ybVhBZ0hBQWszelJVaUVQanVzckFFSjdjaDJSRlN4Q2xaNVJRZ1JTZWtOTWw4S28vUURjZXh3TU9MUzg1V2tZU0hUZS9IWnQyZUx6SE9kYXBsbkttVVpZQStwRWl5T3dqdkFjTXBxRFJJSGtjQUhzK2EvWWlFaFRLN05BdFhadG13QXNOUVNNaHduVUlycEdoT1BQQ0RHd1FXbFdlVjVoSUF4anVBTlBJNFJ0bGg2VXpsVERodzR5UlNUS0xpNFN4blIwUWVna3hEQUlDVGRnZktVMjdkdG9GcjVQa3F6NGdCMHUxYURJYTZzdW9aTE9YU2hsdUFRRXNsczE2d0NjdEJ5c0hGQUl1L29MSEY1T1lUZzhVN0VTczhITFM5RkJNdHI3QVpkaU5KeWdhekxJNUVCZk1SemxNclRrVTJRbHQ2Q3ljTGlvRnZGRXpTS1BjdW9JaElTVEgvbzI3aXFCYXd6ZzdtUlRwc09ySjdYQlJMdlFRUTBiVFM3cmI2WnF2NXRTdTNnbUNBekNtV1pzak40MVBoS2V6dVQ4SHpTSE1KQURqZXdSSGppMVcrUGpxaWhkVGw4T1FzZ3V6UUpCUTZZczJuVTBaU2RJZ0JRRTRoZU9DRm9HSkpQYzF6RzZ4UUtTZTVhc2U2cG5veG1TV0xsYmkzRDhuUVE4NGdSMWpmTUNVbnF4ZHFtRXg1dkFPZ1dudXdBL0MxUDAxQlVBcVZhSGhLYXREQjN5UHNuMUlGTE9MTW8wSVJEVVovZmFtd0J5OTE5cE5jSi9tT24vZDYza3FHVi9haVE2b3l5S1ZnZlNLekNvSWo3Y0xZMkZtRjdjQkJoZDJYaEw3bWlyN2UzTjZMbnhNekVRWWRxTnJtMEpBaG5NY0lSY0U1NFdIUEk3L2NSWlZacHJrRUFFOSt0cTg0UXdjNWsvZ29xVlIxRlp5R281Q2JpWEltOCtxVU9YamFwSnp0SjQ2Y1pOMkNJeEFGbDNLdHJ3cE1iT1FZenltRlVxc0dnZExCeVdqaFRGRGFFZElBRlpxVXN1QVIydm9LQU1aT1hrTzFwQXRQQnN1MEkzY0FERjlHbFlPQjZubkZLcnVRcHJVUWZHdkVnT29DeXRUa0tWWkxMVEJnYXdsakdFYnNEaWVXYzJHcXRGSldadFp5N3JFOU5HaFhoUXpyeHJzODRvMU9MOGlRYnQvUmh2amRuYzZSWU05Nnd1SlRYdlBGeDdMVTRyaTJ1YWVmRThNblJRNVNvMXFmZ3hMT2NVTTVRWUJFWmxtTnZFYUtlV1oxbWtzQXdBOTFRRk1vNVlBT2Z4NnN3cEpqVVJhT3dPWklFSjdpeWVTMUhqUXBJSENaZzFReU1rQ2ZpVFpLOFNTWE9rMXdEZ3dUT05FR2JBalBuaE9vMzQrSUNGL29KbU1Fdk1ZVmdEYktKTFYrRkJ1UjRQcWJnTkNHZi9WSEtOeDJtZncwa2JwWXZoQk9pZXhWVGNxaDhyNzZvZGh0aURpekg3SWNGa0pveExSd2d4NkFwVDhHdUZFQmY3V0o0alJjeTJORlNtQzJpV3FuUGxPaHpuS3pJc0FTN2xRQWtBREtUTjVMTjNiMTJ2QTl2UjI0OEFxWC9yYzh5dWpoVTlEU0ZQUnJFeXlEc2Q0U1R4aWVUd0RRck1tQjdRNHZ6amlPTGVsTWYzd2lPV1BucFV6d3RPbVZHNzdDV1BVb2RQTkRIMGdxekNKbUp5SEFuVjl3TVJEVTJWSUluWHdBcTJyRnFYRmdFdHRscjhxT0lMUVdhNFhwK0llNndWcDlsVnJFRG9EUC9IV29Kb09Ed1ljb1lIQnhBNUQyUWk0VzhlOVVjWlFTR2FTcVlDbU9zOVNwNGtmVksvNDJRUHEvZGtUeUkwK043Qk5iSzZDQnFHbkRQc1lRTkVDWFF1TGN0eU5jMUJwWlY0cDViOGRGbmVnakgraGttRlBvVFgrem9yOThaY2RCZXJWMEpHU1N4MDloenpKOTVZZTZsS2VPTmxFTTlLZmJnbmtPYVM0QmdBR003OXlueW5GT25WaEhNSko2SkNaL09zeDlvcE5sZzFmQ3FmVUFLR1dRYk1HTkFqYWl6NFB6OW1mM3NlcXpGWXhyL2RTc3Fac284WG5PcTh4bnl2bWUrQnhrS0o3UGlZZG54STlzNnVuQUxuSmZBa2hRVG5pK2JFSkE4THZuNWRFNlNOMXVCS3VVaDRYUSszS2paM2pEZlFKV1RWWFlVTnJSVmprdWpIQ2xra1VoRWRrdlBiWkF5WjE1UVEvMEtnV3o5SHdWS2tBdDF6WVNVK3A3VURhQldlVjhvaklucGYwb2RxN1JnYU0vOUt2QmIrdzBmb3NHUXB5WXNobWhxVU9STVpHWEVKU0ZyZ200TFZmQ0RJQzVCQUEvdENJckdjd1l5K2s0QmxJWHh5R0gralVYbkRla0xGOWwycWp0RlY3alJuRGlxQUpjVGdCT29LeXJHd3hxcTdzbnR5b3lFTXhaK0N3TDJHV2RpckxtVHg3WEthY0dsM3FuTFFRdEFzQ3lJaCs0aW1jUXVzd0VMMEVBcWtkcHpXb3J2aDhRMWxTY0FZU1UxSUNCeWNhU0lmUFVWL200anF0TXJSZkkvZlNEOE5uWTdmTDlqUTB3cFREQU5TTHJqN2pDd0tRdkZqR0JjV1hreGNmVUU1NmY4L2FOT3NGY25qM24xNEdWNE1FSzBXN3BFRXU5a3BDbi85aTFLVGNOUklFZFZOb0tRWnJKZVM0QmdCWE1GbU40T1l3N29rbkZSM1pZT2pIbE9rZGVZU0tqclppZ2ZidUIxem4rZzFCNGpVVEdJREVnbE1RZjgwcWRYT0NhQjFsQklIZ1pCblhnaU1iRU00NTY4R2h3bUc1K0tPeEZJb2NEbmZOVEJGWHhEb0NQQVBtb2lSK1pvQjN3c2Zwb0Y0QThWUWlaeUlZcXJkMnVRT0NhMFZJdEdEcTRXT1QwWEFFaEFCSkplWkdlUmVlRFUvS0tNelNQZWkxUFphbEFTejBjUEsycTI1dEdhTFcyQWRFRG9GMHNmZVp5Z2RPdHZva25aNi9vT294Vi9QTE4zZTRGL1dTNFh4aytVdFYxd0NHMDZFRS9rVExRbDJLTUsrRXBKdzYrV2FhNUJBRHN6bDFBT21GcW54ekNVanRIbFpra0tTdXJwVVBkSG1RQkxld3E0SXdzUXhGWWlhMTA3U3hqQ3NGd2V4SWVKU0NySjVGRmtjbm9pYXZjZ25JRmdJL0RNMXFjQmU5SFNHbFRLTnBGaGhNc0tuTms0QVQyRGtBTkNQVEJtYis0QVlqdVRIekpRUkM1dVF5NEJ1SEZxV1FocFdJYkJZSXR6NVc5QXFLZ1JFMk5qSXBMbGdHamtRT01Db015OVFzaXNuM1Vwb1ZXb1FhZEFoSWxFZE9sSkZaeWlpaG5wVmo5S0RiZnUwazh1eTRSZWZTYTN3UmRFZjNqcjI5M2IxelhEVUIrS3J6MHIyV05ZR1RTYWgwS1JVZVA1ZFIzenZsY0FvQmZuaWpMTWQ0bkFjUEpkbnVyN2RDV0RSbUlRNmdGdDhUQWV5S1pxVFJiZUkybnRzcTVRbFF4QW1MeURPV1ozYlRBd3c5ZkRuODZNWFdNRGc0T2MwTXdnMXBqOENESGVtV05NbDJOYTNSMzVRZ0U4U21BNnF1dVgwa3RtbHZRaVU4YldKV1FhYmxGckRQYU0yZHBsRXBLUVJQZ1FTcGt3WnNJM1lLeUJGK3BZMVEyMU5DbmdyU0M3QkFlWisxZlhJNlNwYXFjcFY2TU1QdVJQYmtRWWJFdGhUS3RDcjAwVEQyWEtmaUFwS3hPWVB0RnZqTk9lUHpJb1g1YzF0N2ZxNytxOEhOaFAvZkNwaThEZURsb3BKREh1WWNLUlUybnk0Tld6QlErK1ZsTU9PYVI1aElBTk9oam5zbDVaU3pzNjVLakdCc0RpTTdxNVhrODlQMWFpM1VWVlFQUmRwa09SUkYvbnh2MTZCWFhMejNSYU1qei9iU1ZQZFRhNENCQUZWV1BEdTNQcG9HWDdEcVFrS1BleFFZUHFGS1h0cE9QV01FQks0bjJIQUIyaXU3VUY0TUhpazc4TWhEcW80RGI0VVJ5Mndtb2FJR0ZCamxCOUlPTmxJQUZCaXJ4RFZldlhGc24yVlB4ckZpRXhpQm9Lb2d2V0xHRVBrZ0JrYnM0d2cwNURsZmFMeUtON00ydHZoSXArN3JtNE5RVTVXVkZXbGIvOVZYNVgrVXREYkNmL2NTV2RnUG1zRUxCV3lyaFJ4Qks5QzlGN0RRcThVRU9IdmpLMGFCbkJzNG5BSlNKWHpzWUIrZzRTa3AySmdhSitnd28reENpanVKUHdEZ0FTbkxiS2pQeFRDOG5zNkNmK2VKY245QW9kWGZMVEtGTmZ6dE1lS05nejk3S3FwS0VWZ3hwazZpamlrd2V5djZoU0UzWU92bEFwcHdDVXZSQlhSMEVNUWNBOUJRL1BsaVdOUE1JUnBiSEdiSjA1RDJBYUFPdWFOc0txRVNxK2tjeFNOU0h2VEJTckhWb0lJc0JacW5VTVhsMHNqRFRBeW9OcUJBOVp5Q2FwR1lVaHpLaW9uRU5PT1M1YldsY3N4cFFhMlovREhLeHVjL0p5N0VzWUVVWCsydWFPVXllajcyMjNUMzNtbDRITGp4U09aT1RFcktNUU1TNEZRTjk2SjBpZUpKVVREN2FXaHIrMUhEd3pPQTh5d0JRdmM3UFdybVh5UXh5N1hyMGhFQTdHVURKa3pyQUtCY1lzdHNwZktETnEzTFErdFdteWlpMElxTEpncGQyUGJVQmxHS2JyMExUUmxBNHg3VTVyQVNDbW9SZ010UEJVWS9LckFxYURwN0JnUWZiNmc4Y2x3Q3FMOGZGVGpNQ2pTV2doZzdMTFRsTjFKRUlDQUptcFo1bXlBaERaWkticDVBc3VGUktWT0pjcmtpWWhzbVR2TFJKNHdiZHhoQ21WcnlWSjVpalR4QmN5b0tZSE9NMEJUVmk2ZXUzaEFpZGplS04vOTJPU0RVdk1QN1RKYjd1L0M5MTYvcDVjQ2FPM2dQYS9ZUitFb3duQU0rc3RUMmRVNy80dW1uY3JVb3QzSkJ6QUp6eEpRODRxVTNsR1lDekRBQ3BybDZTSW5mS0huZXNqTGR6Yjk5N1dkOTU2eVFRTVVoNm1jbWMrTXFqaXVBU1grR0NLMFBSREZVbEE3WGt6b201b1k2VkFBWUQzY05BQ3IyaXcxUEh5Sm5VTUNWTmQrOVY5ajBBMXd1OGg0M3hLYStzN09DS1VlaE1BUENOd01RcGg4N0I3cFAzQXRBdUNFOTJnWU1jUnBLWWttOEFsNEpwOE1GZkJGVCtoaWRsNjdaWFljdWE4cWpxVXQyN3JRSzdWUWpna1ZOZzhIbEoxK0xOV1lLRks5M2lGRkl0dU9HcTJBYTNIN1Fkc0VxbE91bWJzdW1pMFUrczhpdUtBbWZYRlF6RWMwVlAvLzJrQXNCYXVmMVBqOFlmNHZnYnBaUUxEYmdrZ3pyQnowRmJud283Z0dLZUI0TG5tZnU4R0w3UE9aWDcxZ0QxY29CNWxDVjc0MUJRbFlmQVkwU1BDejF5Rldyb0tXc2dPT2g5aC9YckJ6aHY3eVdRZ1pMWDhJWWxLMjBrYjJFM0EwTDFIVWdLREQ3TllLZkF3VUFEUndCZzlTZFJSbUQvVWhDMVh5NHJRbytnNTRDbWd0dUhPSVpOUUtCNFJNdEFad1M4cmhKTW5DbnpNTk95SnNLS1ZzTmxEWDQrRXdkUHdyZThzWmlQTFhlazlMYU9zSVhBVUppa1JJVlZ3UlBmT0NTSXh6aGdFblVrbElSK0FSM3RYT3E1OVZRaEpZam1HNTdPbzQyMm5OT1lJTHVzbndNK284blBZcThmQmU3KzVVZHZkaTlkMnUwMjlETEE1QXV4MlFoNUhPbGJqeG1hU1phbzRIT2k4T1dFdDQzTUljMWpCMEJuOHltYk84OVc0ZXc3TUM5bDJEOFVrTmM0cTZBWVI1R1V0N2pFai9QVXNSRzFINlNoSXBkT2pFa2ZxM3N6ZzJvOWY3eFloZ2ZWaU82SWlNL3lHVFlNZi8wMUk0VEo0ZDFDMFRzbVVBU0Vhb2lDQVEraVlBT0J3SU5HZ3JuSFFNSCt0YTdJRG5VcURoMVFwdENoQm84UUJWK3FxQnoxbVFCTTlGWGQvbDdUNTE5cm1nWGNDRnZWQ0dKcjNDWitNV2RMRHkzZDNGenVibTdwYTdJcWJHbjdzaTFsdVJ5TXlVOUQ2RzhsYXQ3aUF1WWNQRUNERkNLTWFzQ0R1S09xR2NNNm40dG8yKzhPRGQ4NENLZ0dmdkpEUC9vRlZtdyt2eUY3NWU4dE9lcEhmdjY2YndxaUgySjhVemZobW90QW02VVREQmE1eW1vS2paQVVCMTFiaVRNRTVoTUFtQVdZbzhNRDc1Z0dGUkVoQjNHdGl5b3hoSHRpQ0djVzhoYW1yanF4MG9CY0lDc0FZZ3BJM3lVMko0NDdURWhvZVhlWFNSczMvQUlIamJrUmQveWhVVXNUWGdQTlk0MjZ3bmlRQ1RCT01uQVhuKy9UWnRyQkRvRERPRXZSU1luNktPRmZDQmJJaEhJenlJYVpCQnduQzhqQm5aUGJQRm1QZ3V1RkhHUng0MnRWazM1OWRiazd1NkZKY0VZcm9DYi9paHF3N2pUUnRDVTFkUjkxMHUyYzdicnJteE50bFZlNjZ6ZjN1aHMzQ1FRN0pSRElQdGZoQkp5NWlsWWdjWlNWY0E2Wi9nSXFhaG83NVZUNFc2NVFzZmducTZUZEl0cHZveHdjazRUQXgrVGYwQTJZcytyVUgzMzJadmVoVCs3SUo2eitKRHpNWDBCR1JZTWduUEFSYXVHZjRBczhaOHlIbm5oSmdtM21hVDRCZ1BHQU16aEl5dTkwZzJOblN0UkFib2gyTXpSRkc1NkFpUyt6Q1JvSFhvKzhMeHZOcVUxbWFoRUZwcmNhV25Rc2c0QkJtZ00xQmtYV05vL3FEVHBiWlE4QU1hWElvcXJGTTZsWlZmTVNJSmlvcEoyQ0JNWjdBYU15QTlZdFNxK2M2TWdrMlZkaXFMbHd0T01BMHNBQ1BSblk2cTlxaXg4VGY3bTdUeFA2Z2lZQmcwYjN3Znd1L0UyOUJPUDE2enZkVlUxdzBubmRHYnRmdjViTHp1Q0dkZ0hyMmpJemNhN2VuSFJ2WEYzcHJ0NVlpa0RBNVFIK1owYUVFckpWTXZ6ZjRpVFVkSk5VU0d0NnZDQ24wQ0JMbVRmOGlSSmp4UXFvL2dBdm00czY5cU92K3pYNUNYd1hGZmhXNU8rYnN2a0gvcjlyWHYzeE5YWDRjektNL1A0UFBHMWdxdHRTR1YwNVNPU3BEN25oZUNBMFdXQ2JTWnBQQU5pTG9XdHJUc0FrVmxvbVV2VmdDeGY1WkQ1MHlod2c0VEttY216VlBIa1FHWWthVFZJSFcwaURvc2VRbDUxSDF4TjRZUFNFRnhRMEh1TUZRdWIrM0ZpaGtaV0hHTTBkbHdFTVRqRW9HR1RpZllDK1hCQUNyQ25vSXFCeXFVNlVBNVA0TEpGbnVFSXUyMzArMTE1anhWOWY3aTZlblhUM240dTczbXVTdmFGUjg3SFh0clFLM3VnKytQRk5mUk51VjNmQ3FTbmE2cVI3VkQrVStkNDNyM1ZmOE14Rzk4UjlXdjBWQ0ZZVkJNN3BlUDNxVXZmNmxhWHVtcEEzZEduQVBRSi9qUWJqbGFKZlNtQ1FWa1pqTTdRb0dRWnNkYVowVUlJU0VzWWM5RlFrOGp5QURPdkVUYjhOUGVHRC9mcnhuKzZjYlAvZW43N1dmVXkvQkx5aFM0S29nMytwRTM5dGE5RFp6WkVpQ0FSc3hPaVVGSExkQS9BUUYzaXdZYVA2eHluT0l3RG9VNjRKdndaZW94K2hNRDlQUDRyUzZTQThraE91ZnNUWUNFbzZQTHhJaytTQkpaaWNnVlRMS0ZadzVIM3FDd25SZmc1Q3VocCtUeXdZVklUdVEyWEdMRnQ5SmxOT3hsd0ZCampxRkRrSXBBN0plaUtud0R2Q1l3dVRQWkNSVzZZQ2dtL0VxZlVjZ2t3T3k2SjlzNGJjaXJPQ3RrTHlnb21neGZVOHEvNlo5UlZ0OVplNkJ5OW9CZGR5djZwMnoybjcrL0xsN2U3di9zeTE3c2MrZEVQYmUvR1htNERZUkxxNVBlays4c3B1OSt6TE43ci83ZC9lN0w3d0hldmRsMzcybWU0aFZiNnFRUERveFFnRW43eTAzRjBpRUNoeTdIRi9RTVBkRTFxRzkzbkl4Tjd3ZTJrRUh6aGxiMUFvTk1DR1RwRlVVY2xYMklmK29DOUVVSWZ4VVNzM09UZjBnZi85NXlmYTJlaXlSN2lQZkhLcit5Y2Z2S2I3SU1YWGRHNlJtYjR2bEI2UC9tTER2L1FYcWRjbnloNERBaHRwOHRiczB6d0NnSzYzZDNkaVJaUkJzcnczOG5nR01qbVFNZkRpMktPUUU2ZmNFeXFyTkdWa21DMXo4VXdMVHRtQmd6WlJvdFN6UGlxU2tKYzJBcnZqaFVrZnhLN0FVMVRZekl0TjFGZGw2dm5RaVR4M0FFR0VJUTdmL1dmMktRaDRGZEtBZEU0OUJxZHl5cGtqaTVhRXFUaEExckpsalFhdWFWbjFHZlFQbnRlS0xrYnVlTVA4VC8vTnRlNzdOZmw1N3AwSnNLN1YzckpGZFp1d0tTM3pmS3dTay9xZi85eE5mVlMyMWIzL1BSdmRiL3owalc1WEFXS2lkalllN3JwUGFrbDk5ZEpxZCtXYWRnUGFCL0JPUGI5dW04cFdGTzlnQ0Foa3FoUUdnRkFLSE5BUUQ0WVVlZ1E4T2t0T3VDVjhFYjFBQzlGUEs3S0J5WC9mT2ZtQjFaOEFwVm42UC8zZlY3cnJXL0tUNkZ3aSthL2tDQXhwMFZhMjdoeTlFekVFQjRyQmdsN3EwRStkQUtBSW9EQXZtN0x6Y0g3QzJIcUlsT3hNSGhJK010ektLa3hrT2VHenpjUlJqdnNQWlRDcERJMlQ4d0RCREJMNjFyYXpJN01DNVFLVEpUa0ZVSStnd29UTVlNRFF6b0FRZkZHVGVZMHNkTXhCemJZL0QzL3pyNVFOcTdXNEpDcURrYlo4cEJZNUpQdWM5b0lhT0cvM05hRFBhT0t6Nmora1ZmOCtMWGVyVXZ5Q2J2WTkrL0pXOTNkKy9ITDNieit4cld0N0pyN0NSUm5zREZaTGFYTGtPd25IemNJcnVqL3dYVDkrdmZ0L0ZRaSs2dGVlN1o1NlVQY0NkTW53K0gyaWEzZng4dXZMdWo4dzBZM0NIYjFYTDE2dTZVc2RPL1gvYis5c2dDdzdydnArNTgzMzU4NStTR3ZKdHJCazdFaE9RRFlRd0NUQlpRcENnZ1BZVUU1VmtncEpwWkpLa1pTTFZFd3FUaWpLVUs3WUlWUkNnWTBEd1NZQ2JGbUlzdVVQWkRuSXNtVFpzaTFMU0VMU3JsYUxySlYycFYzdGgzWjNkcjduemN6TC8zZTZ6NzM5N3J6NTNQZG1aK3piTTMxUDkrbnUwNmRQOXpuZHQyL2YrMmc3MUlKOEFCYU5WMjlKZ2ZlOHhzRWFGNWNIV1dKWWN2VVZVRkQrV25hVlZpd29QNnVnVzZUOFQ3OVUxMjJPem1GYSsxV3lEQ08xSUYrbDAxY3hRbitsZmU1NUFnZWhKZURNYTFHa1lHZ3FHVHJrdG1zRm9HNk5MbmFnSzVPajE0SjVXYy9rQ0VHRVpWRmRnTG5TZUJpOGU4cDdHT2p4Q0FIQjVWUXRTc3o1dGFGQ1daQnlCaFFQaWxEZ2JFbW5SRE4wZ3Jic1Y0ME1iQjdWTVhDZ1liT0lEeUtLV3dONFlTWUVnVGI3c3dsSVdTQ1ZVVmhlMXh3U0JoT3hxMElycDh3TTlqNWRiTmJYSnRjNHM1MlVmMGpyWDVhNzNUcUU4TG5IWnJKUHljL3FjUjdQdTJrbzFWc3RGallPckQyd1lva0FlYkd1UUVOdnpLRllEYjAwczVUOXQ3dW1zcDk3VTMvMkV6Y05aZ3VhU2NlMXRCNjRTbDczMCtjbnU3THBXVWw2UVovWDBtcUFweDQ0ZjBJUXduYlZKZFJMelByVUF3YVROSXUzdnZqeW4vTDBCK2Y4T2RTRElSd2Y2YzRPeWtDSnZXeE15di9GcDJheUx6dzVxNW0vTUg2Qmh5RHY1aXYxRlR3d0J1Z3VuSStqRUF1NVRFNFJRVGJrcTZWUzNGWHhuSjJCblRZQW9XM0w5WG9oamxRMEcydFVXcFlTSnA4SVcxR2dVbGNnSHh4U1BVTTYzaGhUcEJtbTFJcGFMUS8xQ1VVNGxBbDgwTEdXMHpNNUNmSUtSeGtHQUIwUGRCck1CRll1UXNJTVNPdDhoU21icmdMWVNMS1ZpeE5RT293dzhCejZsaFJKNE11UThneDBqQkd6UG9ONVVMdjJJM3F1dFYvTGZYYjUyZVFiMWFnNG8zdjlXeDZZeWg0OVViZFozNVFmcWlydk5HQ1dQNE0wZ0hBWkdCTVlQbTR2Tkx1TGlZODlPSjg5SldQd3o3VWEyRHNzU1VnNDErNlYwZW52eXM1TmFHOUFHNFV6V2czTTF6VU54dHVDUUJoaWNwSlREQkV4RklEbGUrR0tIQVhPUXlHZlh4RXB1LzNJWTBqUCtmYU4xVXo1dFJqSzlrajVIMzV1UHZ2amIwemJoaUJIZ1RIYXdYQkhZeUJja0VSeHBYYVRUYXd5RFRzWEtTVGR4b1I0QWFybE1vL1d1TUJtbXJtTjRVNFpnQ2JwajQ1azgvM2pzdktxYlVFYlJ3djFibGwzbXJsRlo1MnRza0I1QmphVEV4dFNDcG9Ea29iSGVkamk0Qk9jWmRqQXhXbDVqMENqVlJnY3lrNmlLMzBPWXhsTVQ0MkJUQjRsaGdGVjNJa3kyeHZQeWcrMHg0QmtWdGlXbFFxRFkvUFBsNWJjTklhNk5ad0lHUEdRbndUcVlLQnovODdPOWpDenZoU2ZlLzBoOVkwMjZhV2tPdDkrdkpIZDhVU21lLzNoN0JWWE1jZ0RZUU9LRUUrOVVrTWVhekN4a2xNREVBY1hiOU8zTGpXeTMvbGFscjM5YjJYWm02N1ZJMFBOZC92RXdKQVU3cHdNd1lYSm5teFNxNEU1clFZVzRpYWhHVUFqQkNrUHdKVzdpRk0wTndZRkttUktzcU4wR2pJMjY3T3NIeG5zenZhUGRkbXluNzJQY2NuaThPa3N1L1V4UFFrWjIyc3ZBVm03SlhPTWFBajdLcTZRaVlraDFoT0JFcDNIMW5CSSt5RjdkTHV4Unl1d01mbUZtV3krZGM3MllqdGxBSnE0bExyUGQydFp5WkxUb0N3K3d0K3E4OW1Vdm1WQWhYZTBDMnFPdDhFV0I0Q0hIWkk3RFJlbDF3N0J0WkYwOWhVaGJuaGRUUEVoa1dja1V1UUo3eEpFQlNXL0RkVmd1TndrVXBUQlRqdWRSek1JY2ZsdlMxY3BOd3BOUGd3Sks0UWcwMERMNVF2a3hDQXpQb2Q1bU1tWjlYbTBoK0tQU2VsWTVqTHJuNXZSN1B5WGpleXhGNVZmSFRVa1JXU2dpMFN6d2h2ZkRQeVFadWtFaWJkeTRnOFowUllja1BmcFp6VEgvY2tqV1hib3BTejdSemRKNFhUZndhZlByOUhTbTBlRzV5N1ZiRFV3cXkvdXpHazFZS2NKSlJTT0dydUNCNXFSTUl5VW5aSTh0NVZSSEQ3aFBaeHhrRHhrRE1lMENqcWdldmRxRmRTdlBNejhmL2xDSS92NEk3b1YwVE9Cc09HcHNwS2xsWSt3S2F5NlRRYWlEU2ZSL3JiaXFzeWx5UU9ab0IvQWhlV2wxQUI0QXltWGhsZlEyU3lpa3dZZ1ovVEMrWVc1UG5YdS9KUzhPcjJ1emx6Mkc3eE5jQXpCY0xSV2dVaWQrMFBPbmZmcUhuTnhzVS9DRG1wRXNubGRBdFFnakFqYlVDT2R1RGwxbDRWemhDZXNnSlpEV3U2SzdpWG9jSnpEd0VXSU93Nlllc3FTejNCaXhsNFVVb1JCaEdKN0czbjhCODRITURNL2hleWJBQnJKRG9VeVdyYWFVQWlEeTNQc3NHUGZyVm0vS3h2VmxqNnpQb3F2QllEZDczTXMrUXVIWnJOUFB6YW56MXVGR1JFYVZPcEwvaEJ0amxzNk5lcWZSVEFEdnFXTFFySlptM1lxVHI4Rm4yWDNuRzlrRHovVHlINzI1cjdzTGEvcjArTk85YUptMzhGOVdvVm8zSEJ1WUdxMnBzZU9PbStnc2NQaEk3czFrREdBcHZkblhyZlZGeXJsbWh0RHRkY1YzL1krdE84d3JDVS96L2paK0dRVkpMdG9LOVU3SHAzTzduZ01IUXl2Lzdvc1RMWVNCcmNDaFd5UVFUU1dsRUJZY2k0UDZnY1RzSmEwNHJLZ3poalFpUzQxTjV2aUJPWGt3dHlLVERTM3phNlRCZ0JXVGY3MStiblpiaW0rVG9GbVMxcnFMY1dkM3EyMUpkcCtVYWJ6R1UxTDhzdWlpWEhCV2FYQWtHeHhEMXNSWFloYlFnRVVXcXVMbEJ3TDJCS2NxT1VYUHlvR3VVQTBvRkZncU5rc0VNTmt3WkVYQTJMbi8xV1k4dWJCUjIvOEtvekRWZzVybHVJOTlFYWNncm9FYlRCcVJQT0JDc0pzWW5GTHdHeVA0dnVPUFJ0c0hOL2xKQnNuK1ZCOFBEdjB6NXhaeWo3MjlVdlpZWDNVZ2hrUkdoaVlZSXpnTFhweGx2TVptWFNlWVpyYkR4VTEvbzNwZUtHdGVKZU5LejFZd3VBNVVzeWp4VDk4WURaNzhOaEM5czd2Rzh4ZWQzVlBOcU94d2dHaVVTMVJNRXlYWm1wMmtwQmp4ZmEwUUgyT0lXQUNDTzhZZUYwQk9uKzB3WXloR0tTTmZYRVZOQ3A1N0pVeFpJZGZpeDNiN0x1Z3d3cS85N1dwN0J2UHp0dUtDWGtzNlVNc0xnZUVnT3oxaW11Tzh6Ujc3S3FtSWg0WGhMV2QrRHB1UUFMazZJOTV0UnVkaVVXY2hNTjFLRzB1dWQwR29DV1RqZnI4dEN1Y0NVZlNDWEJ6ekhwdWxDZXRpRGpQbkhuY1pQVW9JM3FDSTE4Y1p4WnBpdWRjUkdyTndNbzM4eGxpYnRuSlFFdnlPalU0aklUVEVXUHdoa3NOUVVwVGJCc1g0SUlQcHdXZERuQlpTOUFEZXdaTXlURXNZYUNoOUpxRjJKVFNJQ1hNSGdodjZUSEllL1dNZmtBS3psSWFwVWZaR2VUTWN0cmt0bzlZM1B0c0xYdncyYVhzbkQ1cVlXKzBNYmo1czBIZUdzSmtrVWZNQllTdEFPQy83QnpIb2dYaFFCdkRUYnVnRTBJeUFsckJZUWdPbjF6TzNuOTZLbnZ6RGIzWjI3NW5JSHZsZUhjMks0WGdubnlQREFGR1lXcXVLNXVSbjVQQlgxQjhVWVlnR0FGVkFXRmtwRDlWWlRLeld5QmtJajhnWlVjbUhFOGVqaklCc2dxNi8rbTU3UGFIcDdOelV3MTdNZ0t2WVNVVVpudkNablFoTEorbkI0bFkwMDAyZ1lVOGJvRjFMZ3hYdkZnMHVMdzRQNjJvWXJTbWM2N2RCZ0JPbldHSFhZMjVTOVBjME5JYWQ2NFlIdDhLaEFZZERsMVdGM1FjbFM0cHJOdGRNd0k2Z1dET2pZQXhKVzBNT1pWa2lJSXppK1pOS0JwVDVQQXlrYTZBcGVuaXZKQUNuVERBWTdvdzVHdnBsVG1PS1lNYVpaQXd4NHlBU1hqTjFVTjJuNzhvVGVLV3dLajdJRlJibWVHNGYrUkxOWGlVWDRmNTdLTVZmTGhpU0hHWSt0YVpoZXp1dzdQWlk3cS9IUmdaVjMxNkRDaGhtZExEc1RGWURHN0RSK1pDSHFvT2l1QnRMTGdOZkxtQkxQbzRHalZsWk5ZM09pb2M3MlJNSnRCQ1FnUDZ5aVlydXZ1ZXJtZmZQRmJQZnZBMXZkbVAzZGlmWFgrZ0IvWXpMUUpzdjJKQnkyUTlLTEFqeUp3K1hOUXN6UmlnRDFKbk0zK1VDL0pnSTFvTElqT0dLRDRqNFlrWEZyTFA2RkhuSVoxellQWFV5aGk2NHVmeVFGYjZzMzZJb1dEbFErMUYyMU51Vmc4SHVoZ3NVVlFiRnVlbWRNUGNlU2R4ZE1SNU54aGNuSnVleEFDNGF4NHdqdDA0TktKZWczV0NPbDVUNDdOblF5VjFLVDFLd01tMmVUMTFjRWNSUDJCaTZwZ1Fjbkx3RmxUVlM2MFBLUnM2UEZMeEJqWVJqVWdCTXhTQ2xBRmI5Z3dDWmkzd0dJQ2U1Ym5zbWtHZG1kY1JPbFlEeTEzZFlheDVQc0d3eE1Yd2FZbXJzcnBqc01FT3JmTmExajcwekh6MlZmbWpweGQxRDYwWlVDZHdVQWllTnZ2Z1JySHRMeW80ZzlKd0FuQVQwcGlod3FhanFnbE1LcDY2bFlNL3BLTnMwS0NYSU0yM0RxekhJbjBrajJNV0hOUXluYytnMzNlMG5uM3RXL1hzOVZkM1p6L3kzYjNaOTc2cU45dXZnd3FzaE13QXFDMnMvclFJTU1Qb1cwdE9FbHA2NkdHZWxROXRabktZME9uREI1NWJ5TzQ3TXBjZGtVd1lGd05tQ09FdHROWGw0Zkp4NVRlNXFCM0lJYlFJcnEzRzBJUVl6SEVrcitISWJuMnVBSkE5bllXWlNRd0FTWWdvQ0VhQmRqdUpvK091YTNucXBTa05ldTdRdFRDVlUzTU1iclpxbFd1U1JCS2hVeDg3d1hGU3ZYbW03Wk1oUFZMaFRiU1ptU0JReStvenYwMVJ2Z2FJbklRTVJ0L0pwanc2cmhYTDVMTjBEUnlnSzRDRlk1cm5jWnFtL0lxRU9JTXBoRzNvS2RMSDdDUUM1L1NUVS9jZW1zNWV0VSszQVdNTjdjd3Y2LzUrT1c1Q2FRaHlDOENBWmVTSUdrdmhHVzJXOFVNVno1NWR6QTY5V00vKytreGRiK3lGUjQxOHVwcmJBVjd4RFlNT3FBcWhnZWNQdnNJbHg4RW9PUGkwL1lISTcrYU1KZFF4SUx3a0JhM0FFOHBzMVVGYkh1dG1yMVZMQURXZEhXRFZjUGpVVXZia2k0dlorTkNjOWdlNnM1dXU3Y2x1MEtyZ3FsRzlwYWpOVFc1L3pCbUJFUFFyOU5sQVBIdHBLVHNtbVR5cEY1aU9hTFovZVRyY3gvTjBCR1htSDFuQ2pQMEI1UzNOTUdTaEhtUVdvRiticWxVazVJc2NrR2tOUnpKOVljdC9RZjNYRnk2ZW1WeWpTRk4xYStSYk42bVRCZ0FtOFYzekYxL1FDbUI1VHN2TjN0RERVcFF0TkNFdGduSVljYUE4RzJTSGRQOTRWQWRNYnJwV1gyNlJJUmpUN3U2MDdxVG1aQkRJaXl2cURjcWFJSlJLVnhUT3l4U1kxaUh5R2JWWUlNU0ZFemxEUmJ5Uno4TkJCdFNJRDQveFFqdnNtM1BTTk83WjczNWlPcnZsTHlhem1tYTlNYjFRczNla1I1NW4rT0hESEJnQWxKQlZEM3NnRi9Ycy9LSWU1L0Y2THJ2bHRpa28yZkNXbnYxUm1VSmhWZ3M4Y2hzQXI0VUJzRWpBS1M4S2orS25nem9vaFhCcWo5bFR5SzdqeUl1RERsejc3TW5nZHlOQWF0RmJHQXNreTdzSEZGYTc5Q3U4RHorL2FMY0hQQzRia1pERzlRanYxVmVQYXEramxpM016YWhMMWZseVRBWXplb1NJOGJzZ1paK1FiSGhya1JvWUwrRmRmbkZEYzhFcTRISWdRTjBtazRDMHNHV3ozTmJqRnFLdVZBNjB5N3ZaMDRDck9lcFFVNElSa0tCcmplVzVpYlBIZlFYZ3BCeXVSbVpMK0U0YUFCZ3lwdXNubjVpU0FkQnA3OW9vd3Nmak50dWlGUy9weEprY1dneFFYdEw0K0lQMTdBTS9wN1Bsc3A4Y3FKalNMaS8zaG5YZENnVGxqNTJUVzRMbXpncE1iWll6MmhKYXhWakJRYUVZOERIdStCUXFZNWhsMUFZR3BWWXRROXFnWWx2OW9nYnZIMzFaRGRIYWRWbEtlbkcyeXhUODJEa0thV1dJNXFoQ0g2UW9OYmNPQVdxbTE2Z3lkc2dqa2pqeUJzaktJWkFJeGlEUXlmUEVNcm55eDNKUVJOYXA4M2FtdVBYQ0JVZkJES0FBckhYaGpxcENENUFyck5TSWs1UE53bTVWYUhIMUlUL0x6YmY1SmxXWWhjejU4M1gxdDdROE91aDVPekYwN0kyQU03bFpIdHBkeEUwK1FnVGxqM2d5eUR2UHlBdFhZQ3lhOTNmUjJ3b3BhMmhMeU5QcUNyV3drWXRoRXQzRzh2VHA1eDVQRGNCNkpGcVIzUkN1MHdiQW1KZzUvdlVaUGZpL3FKdnlWNENnd1NiTVhBa3QyNll1Wm5FcElkRkFEd254aHRiZGh4ZXpINzhKMzVOcE1zajI2bGFBKzF6V1V4eXVaS1loYzFCWUl0RWx3VUF4NEIxTkhlczdEVXd2NEpsVkVKU1Y5elJubUVHbE1NdDNOdkJRL0RGdGJ1bmxhVnVtLzlhZGw3Sm45WGl1aXh0WHk2djgrWkpmUTFRNEc0d3hqVXJ5UVdrVm1wUkJHaDVvRVYzTlNJQTNHdEtjUEUva1NRZ0dMNHFBd2dmV0F6M3BvRzNnUVcybHMwcEthRzk0Z1NZWG5wV1A5WWFBSFdoU3g5cEJwNERPK1hJelFMOFJEbi9LcFB3OHFrTkVHRC9iTzlDMys1eGpCUklYNVFHR291RmlFWWtoeG92MkIyTWdQUExWbjhzakVMVFNwdlEyRHdWa3ZNSjhjSXpUdFJ6SjhDM2JIL1p4alBXbGk2ZWUxdG5qbFc0ZGFpc0xySWRwcHdHQU9Wb09USDAyZituc1hHT3BmcmFydC85R0dBcmlKTFJKSjBuVC9UaG1DNXhWR0hzZ0RJMnU3QU9mbjh1dTFiR3ltNjdobTNSNmZLUmJBV2FCR2QwS1lBellLRUpSdzRaZ29CUEp4c2hXQWR3ME84TkVOTURqUUp1WjFPRjhQWWVQVGZLMVdiN3d3KzcwN1EvT1pCKzlkOUtVSHdOaGc5Q1ZYek1aTTBZWW9ERU5xWG85SHFDK2x1RmdPRWlDaDNTQWh6QnRDSW9mU1ZvY3JEdU1nTHNROU1vZG0wRHJuNlpjU1NMQjBLdGMrYjBEK2hacThHZjlKQmlNRUZoTVFPanBZQlRBaGJ3b2tzMms5c3d4NEMyeGRHa2xFOGRaKzExbWdsQUpWM2dJb1RCNUJLS1dIbVdSaUNRMG9GVHZhbEdNTVh0WTVqRUEwcFdKMDZmOUpDQmszYTlHWXN2NGRocUExWmlBK1hxalBuMnFhM0RFQk9vWjE3T09ucThNWFJwcCtSRFdzMTRKOG1VOUR2eWxUOHhtNzN2N1FQYm0xK3JWVXkzL2VmN2RKMFBBZlNHZWxRQTc3R1VIYlRvVnVLcHJrYmpxY0lzSk5sQ2NvQ0lvbmoraTBqSDA4TjA1OGNNZ3VPWCs2ZXo5bjcxb3kvNmFNdm1nREVwZmJQbzUzb2FsNkRuTWh5eVZ5aFg0UEVVMHd5MkEweUJGVlVlbkVrYVBhQ0NDZk5Gam1vNlBwTWtRNkZ0SWx4YXlDVWxlb3NpUWl0LzdEd0xJSnB6dWs2cWhoQ3BDM1VENGdnTFV3bXFBY05oTUpJME5UZnN3YXFoMDVaV0NjaXRrSWp3NGFCajFHQmNxNUxaNERFZCs0TU41Q1NuRjFSS0lic0Q1N0E5a01saWVuenVwWXNuenF3MFEyV0tXVGhrQWwwME9sK2VtbnU4Wk8yaHNJbVNHR3grRDJwVFRLQWhXMzdvb0ZxV0hxS1p3SEgwOXE4ODF2K3ZqTTlrLytjSGU3Si8rY0g5MlVHOTQ2UlJwcGx2R1RJK05iUlhBKzBpK1pHK21VTkM2M0JEY2xSMEQzQTBBQm92SGRpZ2Y3NXAvK0l0VDJWMlB6V1kxV1FJK1N1RUtDaXdmUDAzVHFJTjQ0WHd3Qnd5RE93eG00cUpGTktKSW8yUTRZQlI0U1RJSEFwU0tRZ0tFWUN6cENYbk8xUUxxdjF6UVRxR2NGMDdnSVR3cHNGeEM1YmNkUXBpQk1KNkwwZUF5Tlpsb0tXRHRLU29MTFF5azh3cFRtVmc1cFlUNmdqRk01VUhld0hFbzdrMEdGL0NibFVYT2h0M0NwQ3VBK2RtSjR6blpzTmhOcXk0S3RpSFVLUU1BYXk0YllGZjkwdW5uZWc2ODFqcUdSQk9vTFEySmJjWloxK1lGdkNPc00zT3NsRXJLdytiZlIrNWYwRHZ0QzlsYmIrekozcXpueU5jZjBHTWpuWWZuNVE2YlVaTXlIbHhOMmpaK1l2V3I1WEVhcGJIbWFJT1U1UWdyUjFwZjBHTytwL1ZJNmt0UHpXVmZlWHBlNzhQcnZRWlpoRlM1N2NTZnROVnZCVmd5bXJKSDZHMUhvWFBGVFJob1RsZkgySFFhaklBWkFnWjN6TThTM0p5WWRGeEFwRmZ5aEh3bWg5VXpwb1ZpT05LM1dHc3BoajROU3VnZmxLWStqS1JYWlhsRXlxblI5bURVYUZmQWVydXRLcy9ZeEFWeWpJaElpWGhham1TTHcycWUxOHM0RExrMkw0dFEzbDdVWWhVb3o5bUkrUXRuajBYS1J0SnJFU3pIazZTdEJUdHBBT0FJaHZIZEM2Y1BQemR3M1k4c1NzQlN6YTA3Vi9pVWdtMGFSZGxBTzBoSkcyc2FNVU5TSmg0QjNmcU5sWWxHOVFBQUdDOUpSRUZVaGV3MnZZYytyS09nSEkwZDF2MjJiUnlwUUZGR0pVUGhsTHlGZVJZOU5EU1VEUTRPNm15QlBwQXhPeHVVY0VYT3RSSGNldkNzbm1Pc2s5cTludEFqdTFtV0pYSWMzKzNuMko2RTVFcmViQWdZc0lVbm54bUNXR1ZUT09JTUtKODdDMUd1YVRTSGRCUXNkYTFremR5TWMwVk04Mjh1TEE2TUNHMWZSZWhLWVM2M2o0WmFubkQvYi9YRVR2T1NOQkVVK2YwZVBlVXh0TkJLaGt0WkpwUnV5a1FFbytNMUtGWUVJNkdRSjYwbnFXSGRvSlhXeFc0QnBmd2NYdFBEbmNWekx4NStUb1ZKNWk2Sld0MHIyRjdYYmdNQW96RHVERHVzVFIyNTgrVFk5LzNMbDd0cVBRZkpFR2FlbUZOZzQ4N0poeExGUmw0WUhNWUFXWENSRzU3NURtbFp5R2xCbm8yZm1kVHljc0pmSUZFbSt5ZHpMQk5DOFJyd0dJRGhrVVkyb3EvbVRPb3J1RFA2cGxXcWNFMUYxb3lJdWZCdk1tQjI1M3g2d0hsYVVPeFUyVmZNL2lvUXhuQlN4amtXcW5DRnFqczZ0dFE2S3VCUVJyR3djb1FYWkpMY0lOZk1tcFJhUHdnSGVMaHl6cHBMc2Z3UFN1MzVTRGVHN2RhQW1MWERTT2tTbGR0d0pLNXdMV1NTRXlCektHa2JuYXNTSVNFa1hvNHNtS1RzM1EzQllBQVdYLzdyYi80NWV3QllXcDVudGhhS0V0cmgybTBBa0FnTU95UnMvdUtoVDErNFpuSDJXSzEvOUdDdzFuU0NaOXRrVXhLVDY5S0JGbmVFcHBRUlNUMWhvMGtiUTZTcVJ6bExZTC9RYTZNcTNFT2kzTGxUT0lubEhKS0hNK0o4TUdOQkpudEpmck1HSUcwdFlSK29JV2lZbkdhVDhxc2h6WEVyWWZLTFl4MWkrYXdjS1Bud0pLKzdtRWZ5QzMrT2o5RHdKWnhIaTRvYzAxNlk5R21aY05vZlJhdThsVVVxR0ZZQTRkRmltVXFJZTZraTFlVzJNb1U4WVpWUzVNNURiWkFIblBNSUU4WEhjd0NzSVIwNWRPOGQ1Mk05clZZQVJZTnpaclllYUxjQktITUNzOTZJdWFXNWlTZTZoMFovR0ZFalB3YmhNZ2VmdCtBZzNDUUpHN3htQWtRMU9NWVVadFR6RnBCT1Z3eGxCNmt3d0M1VzJHSmdjb2NCWU04QWkwMm4rWVpjbm1HVmdQT3lNam1tQ0lSUUNKaGlFclFCcHBnZ3F5VUVaampEczRJeUpBbjZEL3pTMXVCSVMxMFJiNXF0U3Mya0p6eW53NXlLQ1NxUGJVc0E5a29zTnRVYjJvTEVtdDFLVEhONmlCV2xYQ1psRzBUZGJGT1RzOGdkU2llN21SR3hOY0IzQ1ZCK2JnTllDZFl2VER3aFN1VkhnRnNqdm9GUzdUWUF5QXhaZWQ4NVpHelZGbDcrMXFORDQ2OWlMQWVoS3VBWk5zQnJrWVZDY2lzNlJSZzYwMjRHbE1pWXRUeFdIM1hGUDJVS3R3NkNsc0VLV2VaSU9sUmcxNERCQUFURmx3RVEzOTNzTkpzU0psblhEVnBsSzNJRk1uSFlLaEo0Rm94OFUwOVJGL2VsdENYUTRvb1A4WUJiVVVFWmdWeThvV2s0NWlPcHJBeGxFaDJQUi80MjJLSW9EYmphYUltVkxjaGxVa295ZVZ3ZTZSTEZFTVZnczFuTmkxc1lBUjREbmo5MVROOUlVbmNXbnN4UkdnVGI2OXB0QU1yY3BRMnBUVDk5NTVPRDEvMjlLYzJlSXd4dVpqWWI3bTJhWFh5NWhwcEQyWmI5cWloOGV5L2czQXpBS0t1QVVMWFM0cmhaeVFybDZJSHdyQm1lN2JDSjd0MExwYlFzRzdqRVNtSk9aRkM0b1BERVRlRmh5TklkSCtLbS9MRWd5Y1JOV3kxdm9CWTREdUd0WEkzVTVSTFpTc1dYVVFhZUV4RmNCcVdWUlhPNmJaUUpwTUlKUnA1SWhkZTN1K3JMVTg4K2RPZVRTc0kyYUpzNFh6MHJhSU82alJ4QU1wdy9DYUgyWG1IVVBiTy9yUzdQUHZqQkYvYS85YjFIYW4zRFA4QVlSdm41QzFtM3dFQVVSOTVCT1lsQUV4TUFiYkpaUFdiaWkvcHMvYUZvMHg1QVRpeVU4MkdGWVdEWmJRWUFxT09tVVEveldqY2FnSmZBVTFHaU1DWml3UDRESTZHT1psd29GVnJuRk5MWks1VDBsQUNqcVBJSWVTaGp2am5yem80MU5TU3dhdTBGTHgrM2RqYlVoaGFraW5LdGhGaWtYbjVJbFljdk5vV25VWVAyL3NmY1U5KzQ0N2RmRUhGcWp5M0tJWFU2bm5CYlhDZFdBRENlaW85NE1BSnpjN05MazZjZjZMdjZoaDhJaWhTVXF0V0p2SzIyanNwdy9vakpURXdxTm9WSnN6MkF5R1pnMWt1RzhselRoaEF1RElDK3ZxTjM4amRyQUx5R1ZEaWhOcGdLSWE3QldDWHhwb3FVS2tLYlhhSW41RU5Wb2tHbndGTnFQSXBhZDFmSVpic1pybE9ackNpM0ZZSXJpS3lPb0c2K1ArQWZic0VBekowKzg4RGNIRyt3bVBQdWdaT09jVlBzRzhWYTJ3aWM4YUQ4Y1Q5bDl2aFh2Nnl2Tnl4aEFCalh4V2JXRm12MldnU1pwZkhGZ0ViTWVOVmpvUmlQOWJKOERnWkNWeTNwN1hVeW1JcmVadVZTM1BuMlBKdUJ0clJQNklXeTRWWUNQdURIbHZUR2N1QXRQNWlqTkc4TDdURWprTFI5SzBNRUdvV3NvTHA3M1c1ckM4dC9QZ1hPdHhuNGRhVGFVbVBweEZQU2pUQlVYV2U4aDcxamlMZlZkV0lGa0RMb0RmQUcxYzcrdjE5K1l1d05QLzlFZDkvd0cvbDBGd1lBeGVCVHo1dDFHeTNoZXdPMko2QksyREN6c3VoNlFtVGx3cnpnaUd6b0xub0l2OEY0Rk9sYkQwRTBPSi9WWXpXbThsUUlqNTdtZVlId2xMQnZrWUphbXJNNWJQc2NTVUdMTjJmWlZiRzB6VDRKN1BRRzhFaVpsNy93STNwSHBhcysrL2dYUC9wdW5nRFFITmNYNElwdWJtZmJPbVVBZkhnNTgzbUQ5R2JnZFAzc2tVLzF2ZnI3Mzhoc2FtOXdhZllOUno2OTJPYWFtQTRBS3huSnJNQ2pUTW9ROEp3MWwzUVZLWXpBeWhJcEo2U0dsUVRZdGZPbTVUWVNOajRpMWNCbFVZcWFuTWRjUXFYcUhlK3dLTDB5UkI2ODBWUmdJMlZXVXRsWkdOcXlRa1k3aThXY0c1NGlEZXZFSjZkUitTRVVQbEI2NmJtam41dzRjNFp2QU9CNCtsanVsbkxjTWw3dXBWTUd3UG1DYWZjMEN0OTM1djRQM1BYS2Q5NzJpOTNkUGRmd0c2Z3NoK3hUMUZ0WUJYaEZtNGVheGFOSVU4bW00WlUwWGV0TUpWY21id0hqRkoyWDlleUs1eThQanh5L0FSN1MyeVRLNVhWdm9PeE96NElSMk1udFlYenh3eXg4bWRobWY3Ny9VRjg4OWVYYjN2OEZKZW1Cb0wwRm1FK1lpdnVRcEtzOHJHQjdYQ2YzQUp4RG1QWUdtV1diZVBLVHArb1hqLzFaTi9jK2FsWllDUlJ6cXhlOExFaXQ2L2xZQVpKMUR4ZnVIZWN3WmpmZ3VNMUNwKzNReStlMDErT1o5RFk0cTlmcmFnTzlLMDBpWFFGY2FWN1dxcDhYZi9oMEdlK2pqR2dGc0VkZnJKbysrL3p0VDl6N1p5ZFZqaDVCUjJ4eFdxTFRwcDV2cHNvNDdLVHpJUWFrVVRTTzg4MjFsKy83NzdmcFlQNFp2dHpMYlVENFNLV0daVnJpY3NLcVpMT3VYRjI1UEVxRDg2Vm1pRzN1dWw0ZEc2SldKcktGdU4wcnF6S0t0azNtVytDakhYWFRIMTUxSG5ERURvT0Rlam1OSHlSaDJjODNLN3VYbHM1OC9YYnBRcGgzWFBsOXdreTVwNmZhN2pwcEFHQWVCL1FHMFVCODQveWpmM2hpNGR6UlA3SlZnTGl3dllCNHVpNXQ5UlVMcTJMZlVIS1lEeTRhMENKOXd6aktYMkd2NnEwTk1IS2xlV2xML2JRRFFyUnJoM25uaVM4eWora25oNW45OGVQNlhOM1VxV2R1ZWZDdWp4d25qeHlUb3hzQmI0WWxkT3JTU1FQZ1BIdEQwaFVBcDV4cUp6LzM3MjV0ek0wOTA2TkhJZmtaZXg3SGVZbHRocjZNTkNnR2ZYbnUwQnNFZE55V29OcmxkVjJwdGxxOTNxQnRsbk5IMmh6YllrWmdoN1VIbm5ocU5Dcmw1eWZZUitWUmZuMnUrcG5QLys0djNxb1E5LzdvUkQ1Qkt1eXRVTEJ6cnRNR2dFYmd2REZ1Qk16S1RUOTMzem41MzlMRTM4QUEySzJBTHZhZCtsQnVaMTNWQ2hTM1NYbDJGb2ViNHViYnJTM1duazFKWVBzeUQybmpiMXkvUE1wSFgvbU5SdDBDTkU0ZXV2OS9IWDMwM25QaUFuMUlaMy8weEhXbm8weDIraWxBeWp5TllzTDB4bUx4QnA3LzQzLzRoYi94bjE3NmJNK2Vneis3ekk5NHlCYjI2TUx2dlRVZDBVMHBYWWt3eXAvVWF6TjRFdDlWd2NTSTJRcG1XNGJhOWtqSSttVUh0UWRXZU9hL2QxaXp2Kzc1TVFBSDltcTZ2M2o2cy8vM3YvNGtPLzlNd3J6OVo1T2lvUGVPdDhLaGt0cnZPcjBDZ09PMFFZUjlGWURGczJYUG1YdC81VGV6aFlVVFBYb3FZTGNDTWdMZCtrNjJuY1NEUXVVcUNleENDVERZK2RqSHVIN0loWjhneHdEczM2TUpibW5oeEpjKzlxdi9ROGsrR2Zyc254b0JXdHhSNWFlQzdUQUExSU56NVM4YmdPVUxEMy8weE5Rem4vLzE3bHFqYms4RnpBRG9PYjE5M3owVXJxNlZCSGFiQkhqa042NWZjOXFuUjMzajhudjFReldqQTQzNmM0OTgvdGNmdXZNUFRxZzk2QUtUb0JzQTR1aEp4eFZmZFpqYlRnTkFoVzRFVXN1SEFHclAzL3FPZXhiT0hQbFFyNTZOOGlNWjV2V3VOQ3VCeWxVUzJHMFM0SWc3UCtXMlQ3K0ZaY292QTNCZ1hEOUtldUxJaC83a3ZlKzRXKzFCOTlaUy9tMHhBdHRsQUx3eHdMSVJRQWo0cnFOLzhLYmZYN3A0OGpOOWVrU0MzdHRYVW5WUFVLdU1nTVJUdWQwaUFWZisvVkorWnYyOVV2NnI5L08xMzlPZi9yMTN2ZWwvcXgzb0hkLzlYOHNBYkV0enQ4c0EwSmkxakVBUXh2ejh3dkZQdlAzWGxxY3ZQTkNybmRLd0NzQVE2UFhieWdoc3k0Q29Lcms4Q2ZDeG1EMjY1ejh3MXBYdDE2TStsdit2T0NDYUd0TzN2KzluZm0xK250K3FNc1ZQbGQvdi9ia0Z3TG11aEZnSHI5dHBBTHdadmdJbzd3VmdCSmFtWDN4bzRvVlAvK3RmYnN4ZWVyUlhLd0ZiQmVoWlJiZmVuZGE3QTlYR29FdXhnanRPQW54OW1sOXV2cXFrL04wTFU0OTg5a1AvNXQzSERuMXpnakV1WDU3OTBZbHRVL3BVY0ZmaUJ0dWZwamxNK1FIWFBYL3VxZG5GeVZOZkdiN2h4OTdZTTloL0RTS3p4MVh4ZmR3cjlYaXdUOGM0Ky9RTzk0Sys0MSt2NjZYaVZpMUlXN09EdzkwYXJJTTZtTUxIV09iMCt3UzczZEVXWmwvYTRpY0N0N05OL05UNFB2MTBPelAvUGkzNzhkZGNwUWxzL3RJamQzMzRsOTcxNkQyM3ZpUitFRFRLajA4My9zQzdBWEFvVk9mZGxUQUF0QXJWS1RjMFZhZnV1WmYrYW5yKzdOUDNqNzMyNzkvWU16UjRuWDA4T0ZnQktWNVl1R3kzSWFnTVFPY0g1RlpydUZJR2dFZlZ3d1BkV3U3amcrTHZaOWt2NWUrYXZmalZ6L3pPdi9vUGo5N3pDWlNmOGM3ei9yTHlnM2RkY0NqVTlyZ3JaUUJvblN1OHczS0x1eGZPSFptZGZ2YUw5NDY4L3FjUDlvMk0zb2lZTExNdXdRaXNWclJNcWozeHlnQzBSNDZkb0hJbERFQ3Zia3YzYUtmL2dINTMwbWQ5bnZOZnZVOWFmdkhVcDI5OTcwKzk1K2hEOTV4WGU1bmhVWDYvL3kvUC9vaGsyNVdmU25lQ0FZQ1AxVnhYZmZMVTRzdGYrNS8zN2ZtYjc2ejNqVjcxL1YxOGpBOVJtUkVJWHhPaThIWklyeklBcTNYVGxjZHZwd0hnK3hVam12WDNqV3JXMTA0L3lzOXUvOVU2NGJkM3VGR2ZlT0h3QnovNEwxNzdHK2ZQbnB5VlpGQjJYL1pqQU5nRDhFMC9IN1lPbGJTOTdrb2FBRnE2MmhUdUFnRmFudlBmL1BBM0I2NTU0NUdCZmRmZjNEM1FzMGUvb1JidXdiVUU2K0l0d2tqS0MzWkNqSlVCNklSVTIwTnpPd3lBZmNldlg2ZjZ0TkhIOC8xOWNjbVBBVGlvbmY3QnJ2bmp4eDc2OC8veWY5NzlsdHVrNGN6NktIeTY3UGVabjJIcXZqMEMyQ0tWSzIwQVlIczlJK0JONjVsNDRrK2ZsWG45MHNncmYyaHY5K0Rvalg1UUVBTGNpM0ZiME1uanc1VUI4SzdZZWJBVEJzQm5IM2IzQjZYNExQZE44WFdQNzgvM3I5TGhIcDd6TDAyZStzemRIL21QLy9tdWo3em5NWWFqdk0vNndQTE1mOFUyL2NvOXQ1cnlsZk4xT3U1OEFObmh3Mk9jOEhwWjJMemVGTWp3aHIvK0Z6Ny9FNFBmOWFQdnF2VVB2MjVSNGwyU1owYzc5OW9LNXNkQTJTaGNabHY0TXJlR0tUNGl5eitzbHpyQ2o0UHFOMnVkYXpHMW14eHQ0WmVJOSs3dHNhY1pGeTh5TWUxdVIxdDRzbkhod21LMnBCK0EzWXFqRkYxS3Z6TGJvL2k4eURQWXowWmYrSVFYRU0vSFBNWTE4OWNXWm8rZWVQSytEOTN5S3ovMUZ5cnF5M3RYZmhRZjRhWXovNDVSZnZHMTZ1eEwyblk3VnllZ0d3RWdieXppVTBOQWVIbndOWC8zd0t0LytzUC91SGYvamY4czYrazlpQkZZa3FneEFqdzFNS2hleFFBdzZCdENLQlJzQVloTk9MSlhCbUFUQXR2bXJCczFBR212KzREajVCNnZvcVB3K0g1K3B0MjgzdVRUbE1ObnUvRkRVbnplNVIvVGpOKzlWRDk5NmRTUmozL3V0Ly85bng0NzlKVnphaTVqRllYM0dkK1YzNDJDSzc2ejRIQ2JKZFZjbmN1Z0dYdmxZczRQRU8rR0FBT1FyZ2JjR0lCZkhyLzVGMTU5OVZ2ZTgvTzllMjk0UjliYmZ5MGZHc1VZbUJHUW1JRm1BQWliandaQkVmN3Nud1M1L0JvQ2hqTzg0cFVCeU1WeDJRSEU2NTFkRW5VVGJmS3NsZTZaOTYyeUFyQTZkR0dQaUpuZFozZi9vVmNVbnQvbjQ4QlpuMFpWL2t1OU1jd1Bkd3pvL1pSUnpmak0vTFhGK1pPVFo0NTk2b0hiZnVPVEQzL3hsaE9xbnpIS0RJL0N1MDluZlJSL1J5cS8rTXI3Z1BCT2N0WnZZc2dOZ0VOZkRhUXJBb3dCNmN1anIzL2JOUWZmK3FzLzNuZmdwcCtwOVkxOWp6NHIwSTB4V0U1V0Jia2hVQUhUZVkydXFQdUNaZzd5RVplZU0rQ0R4U1BEV2dyS1QwMDFzdWxwL1FpMWN5bGF1STBNMUpEenlsNXByOTBDak5mQ0xjREV5aC9VTGpYTkdBYVgvajZCeFlWcmxkZGI2REpDTnF2bGE4SjdwRVVCVHpJWUNSTW1PTDYzWmtvOE1kR3dXNER3ZXhNYUdFcGpkamVGVjlpT2x5dXVKM2dXNWxkNVVmNWVqU2ovbFY0TUFUL1Z6WXpQTC9iVWxyUzBYNXA2L09LSnB6NTMvKzN2dS92UVZ6LzNVbXdPaXUxS0Qwd1ZuNW5mRlIvb2JrY05FK1MzVTUzekJrVEIzYXU3N0pZQWlQSzdVY2dOUWRZN1BITHRQL2pOTjR4Yy82Ti9wM3YwMVQ5VTZ4MSt2WHA3bEJGb0JrRmRZNnNDZFl2MWhpNG9oWWRGYzBXWS9DTmErZzFySnBqVTE5dW5wOFBBSTY4NUsreVJuUTJEQWREbUZSK20wTENkNElDcW5BbGNGNkFyYmc3WHdLWGx5blNJUTlEeUpPRnlQQ2JsR1QwOXJUK2xBOTd5QU9YSDlmeWRWOGtuMVJadS9WQjg4S2I4Z3NVWHAwTFlEWUROL0NnL1NxK1pIc1hYZ2lEcldsNmVYSzVQSFowOS8rSTNqaCs2LzRFN2YvZmRoK3YxYWI3Ynp6aEVvWDNXZDZWM1NGcnFmV1E0VlBMT2NXcnFqblVwYjRRUnZFUENHQUEzQm00RUhJSjNnUS91Kzl2Lzl0cXhHOTkyVTkvK04zeHY5OUNCTjlSNmhyNHJxL1h1VjJtOVhCQ1ZYMTNtdHdxVU5JUGdGR0ljNWNkUHRUSUFxckNWY3hLdDBxNFVqcll4NEZNRGdHQk5xUlJ3NVhJbGFrcEw4NjBYcG9IUTgzeWJpYStSMTJnNlhXaHJOT3pSSXpsbTk2bkphQUNFODluZlBqS2pPT2tvUE4rZ1pNWW5ySC9VZFZHZm9uaDVlV0htK2ZucGM0ZlB2M0Q0OFdjZXV2T3ByMy8yOTA4cWxkL3Fvd2s0Wm5WWGRJZmczSmNWMzd2ZklUUjJsUE9HN1NpbVNzdzRqMEQzR0FEQzlGL1pZd1RBT2ZTOGRBNWwrclV5MkR2eStwOTh4ZUJWTjEvWHMrZFYxM1gzNzN0VlY5L3dLN3E2Ky9kMzFmcjJOR3ExNFM1RjFHdTlkdXBZcGVoQlZnRDRTUTB5WHdHZ1RPdTZqZVJabDBqN01wZ0IwRXlYR2dCVEZyWFRaczBFdWhGWUMzcGFXdGFOU0JOT1RUQjhwQzlRMUplbXBlRlNYaStUMDFGZVp2a3g3Y2lqNE16UnJBQXNIM0tYVjdpZU5aYm1hNDNsNmF5eE1MRzhPUC95MHNMMFMvTlQ1MStZdW5EeStYUEhIajl4N0xHN1R4MTk1SjZMS3NGemUwcENBdWZLN2NxZlFrOXp4WTgxMmdvZ2xBNjBQTHpqb0RkeXh6RldZaWpsazdCN2xEdjFaV05BbXVNODdHV3BnZzdEa2RiYk83U252Ly9nelVPOTQ5ODkzTFBudXVHKzBZTWpYUU5qSXowRGU0ZXk3c0doNFpHQndhR3hnZjdaK1o3K3VibGFmNjI3cDBjZks5QXFRZytndW1yYVRxcnBSMmthZ2h4STBQZERPWlRRMEYwemYxVFJXS2J1SGVIRWViWkh5K1pGeldOVGx5UlFzU2ZHRFpwQ2kwdFRYdUVSanVFSWswZnhwcndSaHlLYVlwS2ZzSmZ6ZE1VaFpuUVZOT01LVkxyUWVWbkpVcUpqajZXcm9mclVSeEtpQkN1MEh1TjBMVW1PVXJqbEpSWFR6OHd1TERVYWk0dURBOHZ6V1dOeGZ2TFMzUHpTL056c1luMTJabUhxd3N6Q3pLV3BtWW5UVXhObmowOWZQUFhNOU9uamZ6VXpNekV4cCtxNFowZHhjVlNQWXp5NE1xUGNoRjNKVStoNG9KY0J1bGZRSFBFZDdlaWozZVJTZmdtN3B3TnRERVdJMGpzT1dJNm5hZER3c2dvYVRTRE9PNVE4M3BrZUJ1SWNsc09XV0VwM1hBVTNMZ0dYZTFvaXhYbllZWnFQc1BkUDJtL2tkZVgxTVBIVXV3RndYRG51NVlEdUZUUkhmRmM0Rjg2dVlEWmhNdVdiY09wZG1WUFlTdUU5bmJKcE9LWGxZYW9takhOWURsdGlLZDF4Rld5UEJGb3BWaG5uY1dBNTdEaUhiZ1JTV0E2N0FTaVg4VGpRWFJwMjNJNkc2V0RlMFl5dXdsektQK0gxZktyb2FiaFZPYXAwdklkYlFYQ3BvMHpsT2lPQnRSVE0wMXJCRkVlNDdGM3B3YWRoajlNYThMaTBiTUFVaHNianV3Wit1d3pXdEIwZUJwYkRhK0hLZWVuRWN2NjBZejEvaWl1SE41S25YS2FLcjVRQVNyY1JsK2J6c0NzczVWdUZIZWN3elZmR2VSb1FSL3F1ZHQ5T0E1UzIwQ0hsTm5rY21JYnB1TlZ3cExrcmwzRTgwTk5TWEJwZUx6M05XNFZYbDhCNml0WXEzWEVPb2U3aGpjQnlIdWZPOFI3ZjFmRGJmWUNXMjVmR054S21jOU44YVdldmhrL3pWT0h0bFVBcjVVeHhhUmpPUE80d3hhV2NrMDUvcC9uUzlGMGIvazRaeE41NWE3VzNuTGFWTXJ0MklPeHl4dGRTek5YUzFzTDdXRmd0enk0WFY4RytON1RBZkdlRkxyZjlsMXYrTzB2YW5XdnQ1U3JxNVpidlhNczZUTGthd0JzVGNDV25qY2xwcCtYNmpsWHNuZFlSRlQrVkJDb0pWQktvSkZCSm9KSkFKWUZLQXBVRUtnbFVFcWdrVUVtZ2trQWxnVW9DbFFRcUNWUVNxQ1JRU2FDU1FDV0JTZ0tWQkNvSlZCS29KRkJKb0pKQUpZRktBcFVFS2dsVUVxZ2tVRW1na2tBbGdVb0NsUVFxQ1ZRU3FDUlFTYUNTUUNXQlNnS1ZCQ29KVkJLb0pGQkpvSkpBSllGS0FwVUVLZ2xVRXFna1VFbWdrc0RHSmZEL0FiUEhaeUY3ZWlnRkFBQUFBRWxGVGtTdVFtQ0MiPgo8c3R5bGU+KiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94fWh0bWwsYm9keXttYXJnaW46MDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59PC9zdHlsZT4KPC9oZWFkPjxib2R5Pgo8ZGl2IGlkPSJyb290Ij48L2Rpdj4KPCEtLV9fU0lNX1BSRVZJRVdfQ09ORklHX18tLT4KPHNjcmlwdCB0eXBlPSJtb2R1bGUiPnZhciBIMSx3LEY5LG04LGswLEQ5LE45LFA5LGgxLFYxLHQwLFU5LGYxLGcxLG0xLEk5LHoxPXt9LFcxPVtdLHg4PS9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2ksbjA9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBPMChYLEcpe2Zvcih2YXIgSiBpbiBHKVhbSl09R1tKXTtyZXR1cm4gWH1mdW5jdGlvbiBkMShYKXtYJiZYLnBhcmVudE5vZGUmJlgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChYKX1mdW5jdGlvbiBIMChYLEcsSil7dmFyIFkscSxaLF89e307Zm9yKFogaW4gRylaPT0ia2V5Ij9ZPUdbWl06Wj09InJlZiI/cT1HW1pdOl9bWl09R1taXTtpZihhcmd1bWVudHMubGVuZ3RoPjImJihfLmNoaWxkcmVuPWFyZ3VtZW50cy5sZW5ndGg+Mz9IMS5jYWxsKGFyZ3VtZW50cywyKTpKKSx0eXBlb2YgWD09ImZ1bmN0aW9uIiYmWC5kZWZhdWx0UHJvcHMhPW51bGwpZm9yKFogaW4gWC5kZWZhdWx0UHJvcHMpX1taXT09PXZvaWQgMCYmKF9bWl09WC5kZWZhdWx0UHJvcHNbWl0pO3JldHVybiBMMShYLF8sWSxxLG51bGwpfWZ1bmN0aW9uIEwxKFgsRyxKLFkscSl7dmFyIFo9e3R5cGU6WCxwcm9wczpHLGtleTpKLHJlZjpZLF9fazpudWxsLF9fOm51bGwsX19iOjAsX19lOm51bGwsX19jOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjpxPT1udWxsPysrRjk6cSxfX2k6LTEsX191OjB9O3JldHVybiBxPT1udWxsJiZ3LnZub2RlIT1udWxsJiZ3LnZub2RlKFopLFp9ZnVuY3Rpb24gbChYKXtyZXR1cm4gWC5jaGlsZHJlbn1mdW5jdGlvbiB0KFgsRyl7dGhpcy5wcm9wcz1YLHRoaXMuY29udGV4dD1HfWZ1bmN0aW9uIHgwKFgsRyl7aWYoRz09bnVsbClyZXR1cm4gWC5fXz94MChYLl9fLFguX19pKzEpOm51bGw7Zm9yKHZhciBKO0c8WC5fX2subGVuZ3RoO0crKylpZigoSj1YLl9fa1tHXSkhPW51bGwmJkouX19lIT1udWxsKXJldHVybiBKLl9fZTtyZXR1cm4gdHlwZW9mIFgudHlwZT09ImZ1bmN0aW9uIj94MChYKTpudWxsfWZ1bmN0aW9uIHA4KFgpe2lmKFguX19QJiZYLl9fZCl7dmFyIEc9WC5fX3YsSj1HLl9fZSxZPVtdLHE9W10sWj1PMCh7fSxHKTtaLl9fdj1HLl9fdisxLHcudm5vZGUmJncudm5vZGUoWiksdTEoWC5fX1AsWixHLFguX19uLFguX19QLm5hbWVzcGFjZVVSSSwzMiZHLl9fdT9bSl06bnVsbCxZLEo9PW51bGw/eDAoRyk6SiwhISgzMiZHLl9fdSkscSksWi5fX3Y9Ry5fX3YsWi5fXy5fX2tbWi5fX2ldPVosVDkoWSxaLHEpLEcuX19lPUcuX189bnVsbCxaLl9fZSE9SiYmTTkoWil9fWZ1bmN0aW9uIE05KFgpe2lmKChYPVguX18pIT1udWxsJiZYLl9fYyE9bnVsbClyZXR1cm4gWC5fX2U9WC5fX2MuYmFzZT1udWxsLFguX19rLnNvbWUoZnVuY3Rpb24oRyl7aWYoRyE9bnVsbCYmRy5fX2UhPW51bGwpcmV0dXJuIFguX19lPVguX19jLmJhc2U9Ry5fX2V9KSxNOShYKX1mdW5jdGlvbiB4MShYKXsoIVguX19kJiYoWC5fX2Q9ITApJiZrMC5wdXNoKFgpJiYhSzEuX19yKyt8fEQ5IT13LmRlYm91bmNlUmVuZGVyaW5nKSYmKChEOT13LmRlYm91bmNlUmVuZGVyaW5nKXx8TjkpKEsxKX1mdW5jdGlvbiBLMSgpe3RyeXtmb3IodmFyIFgsRz0xO2swLmxlbmd0aDspazAubGVuZ3RoPkcmJmswLnNvcnQoUDkpLFg9azAuc2hpZnQoKSxHPWswLmxlbmd0aCxwOChYKX1maW5hbGx5e2swLmxlbmd0aD1LMS5fX3I9MH19ZnVuY3Rpb24gQTkoWCxHLEosWSxxLFosXywkLHosTCxCKXt2YXIgVixILE8sVSxQLEYsQSxJPVkmJlkuX19rfHxXMSxzPUcubGVuZ3RoO2Zvcih6PWY4KEosRyxJLHoscyksVj0wO1Y8cztWKyspKE89Si5fX2tbVl0pIT1udWxsJiYoSD1PLl9faSE9LTEmJklbTy5fX2ldfHx6MSxPLl9faT1WLEY9dTEoWCxPLEgscSxaLF8sJCx6LEwsQiksVT1PLl9fZSxPLnJlZiYmSC5yZWYhPU8ucmVmJiYoSC5yZWYmJmMxKEgucmVmLG51bGwsTyksQi5wdXNoKE8ucmVmLE8uX19jfHxVLE8pKSxQPT1udWxsJiZVIT1udWxsJiYoUD1VKSwoQT0hISg0Jk8uX191KSl8fEguX19rPT09Ty5fX2s/KHo9dzkoTyx6LFgsQSksQSYmSC5fX2UmJihILl9fZT1udWxsKSk6dHlwZW9mIE8udHlwZT09ImZ1bmN0aW9uIiYmRiE9PXZvaWQgMD96PUY6VSYmKHo9VS5uZXh0U2libGluZyksTy5fX3UmPS03KTtyZXR1cm4gSi5fX2U9UCx6fWZ1bmN0aW9uIGY4KFgsRyxKLFkscSl7dmFyIFosXywkLHosTCxCPUoubGVuZ3RoLFY9QixIPTA7Zm9yKFguX19rPUFycmF5KHEpLFo9MDtaPHE7WisrKShfPUdbWl0pIT1udWxsJiZ0eXBlb2YgXyE9ImJvb2xlYW4iJiZ0eXBlb2YgXyE9ImZ1bmN0aW9uIj8odHlwZW9mIF89PSJzdHJpbmcifHx0eXBlb2YgXz09Im51bWJlciJ8fHR5cGVvZiBfPT0iYmlnaW50Inx8Xy5jb25zdHJ1Y3Rvcj09U3RyaW5nP189WC5fX2tbWl09TDEobnVsbCxfLG51bGwsbnVsbCxudWxsKTpuMChfKT9fPVguX19rW1pdPUwxKGwse2NoaWxkcmVuOl99LG51bGwsbnVsbCxudWxsKTpfLmNvbnN0cnVjdG9yPT09dm9pZCAwJiZfLl9fYj4wP189WC5fX2tbWl09TDEoXy50eXBlLF8ucHJvcHMsXy5rZXksXy5yZWY/Xy5yZWY6bnVsbCxfLl9fdik6WC5fX2tbWl09Xyx6PVorSCxfLl9fPVgsXy5fX2I9WC5fX2IrMSwkPW51bGwsKEw9Xy5fX2k9ZDgoXyxKLHosVikpIT0tMSYmKFYtLSwoJD1KW0xdKSYmKCQuX191fD0yKSksJD09bnVsbHx8JC5fX3Y9PW51bGw/KEw9PS0xJiYocT5CP0gtLTpxPEImJkgrKyksdHlwZW9mIF8udHlwZSE9ImZ1bmN0aW9uIiYmKF8uX191fD00KSk6TCE9eiYmKEw9PXotMT9ILS06TD09eisxP0grKzooTD56P0gtLTpIKyssXy5fX3V8PTQpKSk6WC5fX2tbWl09bnVsbDtpZihWKWZvcihaPTA7WjxCO1orKykoJD1KW1pdKSE9bnVsbCYmKDImJC5fX3UpPT0wJiYoJC5fX2U9PVkmJihZPXgwKCQpKSxFOSgkLCQpKTtyZXR1cm4gWX1mdW5jdGlvbiB3OShYLEcsSixZKXt2YXIgcSxaO2lmKHR5cGVvZiBYLnR5cGU9PSJmdW5jdGlvbiIpe2ZvcihxPVguX19rLFo9MDtxJiZaPHEubGVuZ3RoO1orKylxW1pdJiYocVtaXS5fXz1YLEc9dzkocVtaXSxHLEosWSkpO3JldHVybiBHfVguX19lIT1HJiYoWSYmKEcmJlgudHlwZSYmIUcucGFyZW50Tm9kZSYmKEc9eDAoWCkpLEouaW5zZXJ0QmVmb3JlKFguX19lLEd8fG51bGwpKSxHPVguX19lKTtkbyBHPUcmJkcubmV4dFNpYmxpbmc7d2hpbGUoRyE9bnVsbCYmRy5ub2RlVHlwZT09OCk7cmV0dXJuIEd9ZnVuY3Rpb24gQjAoWCxHKXtyZXR1cm4gRz1HfHxbXSxYPT1udWxsfHx0eXBlb2YgWD09ImJvb2xlYW4ifHwobjAoWCk/WC5zb21lKGZ1bmN0aW9uKEope0IwKEosRyl9KTpHLnB1c2goWCkpLEd9ZnVuY3Rpb24gZDgoWCxHLEosWSl7dmFyIHEsWixfLCQ9WC5rZXksej1YLnR5cGUsTD1HW0pdLEI9TCE9bnVsbCYmKDImTC5fX3UpPT0wO2lmKEw9PT1udWxsJiYkPT1udWxsfHxCJiYkPT1MLmtleSYmej09TC50eXBlKXJldHVybiBKO2lmKFk+KEI/MTowKSl7Zm9yKHE9Si0xLFo9SisxO3E+PTB8fFo8Ry5sZW5ndGg7KWlmKChMPUdbXz1xPj0wP3EtLTpaKytdKSE9bnVsbCYmKDImTC5fX3UpPT0wJiYkPT1MLmtleSYmej09TC50eXBlKXJldHVybiBffXJldHVybi0xfWZ1bmN0aW9uIE85KFgsRyxKKXtHWzBdPT0iLSI/WC5zZXRQcm9wZXJ0eShHLEo9PW51bGw/IiI6Sik6WFtHXT1KPT1udWxsPyIiOnR5cGVvZiBKIT0ibnVtYmVyInx8eDgudGVzdChHKT9KOkorInB4In1mdW5jdGlvbiAkMShYLEcsSixZLHEpe3ZhciBaLF87WDppZihHPT0ic3R5bGUiKWlmKHR5cGVvZiBKPT0ic3RyaW5nIilYLnN0eWxlLmNzc1RleHQ9SjtlbHNle2lmKHR5cGVvZiBZPT0ic3RyaW5nIiYmKFguc3R5bGUuY3NzVGV4dD1ZPSIiKSxZKWZvcihHIGluIFkpSiYmRyBpbiBKfHxPOShYLnN0eWxlLEcsIiIpO2lmKEopZm9yKEcgaW4gSilZJiZKW0ddPT1ZW0ddfHxPOShYLnN0eWxlLEcsSltHXSl9ZWxzZSBpZihHWzBdPT0ibyImJkdbMV09PSJuIilaPUchPShHPUcucmVwbGFjZShVOSwiJDEiKSksXz1HLnRvTG93ZXJDYXNlKCksRz1fIGluIFh8fEc9PSJvbkZvY3VzT3V0Inx8Rz09Im9uRm9jdXNJbiI/Xy5zbGljZSgyKTpHLnNsaWNlKDIpLFgubHx8KFgubD17fSksWC5sW0crWl09SixKP1k/Slt0MF09WVt0MF06KEpbdDBdPWYxLFguYWRkRXZlbnRMaXN0ZW5lcihHLFo/bTE6ZzEsWikpOlgucmVtb3ZlRXZlbnRMaXN0ZW5lcihHLFo/bTE6ZzEsWik7ZWxzZXtpZihxPT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKUc9Ry5yZXBsYWNlKC94bGluayhIfDpoKS8sImgiKS5yZXBsYWNlKC9zTmFtZSQvLCJzIik7ZWxzZSBpZihHIT0id2lkdGgiJiZHIT0iaGVpZ2h0IiYmRyE9ImhyZWYiJiZHIT0ibGlzdCImJkchPSJmb3JtIiYmRyE9InRhYkluZGV4IiYmRyE9ImRvd25sb2FkIiYmRyE9InJvd1NwYW4iJiZHIT0iY29sU3BhbiImJkchPSJyb2xlIiYmRyE9InBvcG92ZXIiJiZHIGluIFgpdHJ5e1hbR109Sj09bnVsbD8iIjpKO2JyZWFrIFh9Y2F0Y2goJCl7fXR5cGVvZiBKPT0iZnVuY3Rpb24ifHwoSj09bnVsbHx8Sj09PSExJiZHWzRdIT0iLSI/WC5yZW1vdmVBdHRyaWJ1dGUoRyk6WC5zZXRBdHRyaWJ1dGUoRyxHPT0icG9wb3ZlciImJko9PTE/IiI6SikpfX1mdW5jdGlvbiBCOShYKXtyZXR1cm4gZnVuY3Rpb24oRyl7aWYodGhpcy5sKXt2YXIgSj10aGlzLmxbRy50eXBlK1hdO2lmKEdbVjFdPT1udWxsKUdbVjFdPWYxKys7ZWxzZSBpZihHW1YxXTxKW3QwXSlyZXR1cm47cmV0dXJuIEoody5ldmVudD93LmV2ZW50KEcpOkcpfX19ZnVuY3Rpb24gdTEoWCxHLEosWSxxLFosXywkLHosTCl7dmFyIEIsVixILE8sVSxQLEYsQSxJLHMsaCxjLGUsbixfMCxmPUcudHlwZTtpZihHLmNvbnN0cnVjdG9yIT09dm9pZCAwKXJldHVybiBudWxsOzEyOCZKLl9fdSYmKHo9ISEoMzImSi5fX3UpLFo9WyQ9Ry5fX2U9Si5fX2VdKSwoQj13Ll9fYikmJkIoRyk7WDppZih0eXBlb2YgZj09ImZ1bmN0aW9uIil0cnl7aWYoQT1HLnByb3BzLEk9Zi5wcm90b3R5cGUmJmYucHJvdG90eXBlLnJlbmRlcixzPShCPWYuY29udGV4dFR5cGUpJiZZW0IuX19jXSxoPUI/cz9zLnByb3BzLnZhbHVlOkIuX186WSxKLl9fYz9GPShWPUcuX19jPUouX19jKS5fXz1WLl9fRTooST9HLl9fYz1WPW5ldyBmKEEsaCk6KEcuX19jPVY9bmV3IHQoQSxoKSxWLmNvbnN0cnVjdG9yPWYsVi5yZW5kZXI9YzgpLHMmJnMuc3ViKFYpLFYuc3RhdGV8fChWLnN0YXRlPXt9KSxWLl9fbj1ZLEg9Vi5fX2Q9ITAsVi5fX2g9W10sVi5fc2I9W10pLEkmJlYuX19zPT1udWxsJiYoVi5fX3M9Vi5zdGF0ZSksSSYmZi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMhPW51bGwmJihWLl9fcz09Vi5zdGF0ZSYmKFYuX19zPU8wKHt9LFYuX19zKSksTzAoVi5fX3MsZi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoQSxWLl9fcykpKSxPPVYucHJvcHMsVT1WLnN0YXRlLFYuX192PUcsSClJJiZmLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz09bnVsbCYmVi5jb21wb25lbnRXaWxsTW91bnQhPW51bGwmJlYuY29tcG9uZW50V2lsbE1vdW50KCksSSYmVi5jb21wb25lbnREaWRNb3VudCE9bnVsbCYmVi5fX2gucHVzaChWLmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKEkmJmYuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT1udWxsJiZBIT09TyYmVi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT1udWxsJiZWLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoQSxoKSxHLl9fdj09Si5fX3Z8fCFWLl9fZSYmVi5zaG91bGRDb21wb25lbnRVcGRhdGUhPW51bGwmJlYuc2hvdWxkQ29tcG9uZW50VXBkYXRlKEEsVi5fX3MsaCk9PT0hMSl7Ry5fX3YhPUouX192JiYoVi5wcm9wcz1BLFYuc3RhdGU9Vi5fX3MsVi5fX2Q9ITEpLEcuX19lPUouX19lLEcuX19rPUouX19rLEcuX19rLnNvbWUoZnVuY3Rpb24oeSl7eSYmKHkuX189Ryl9KSxXMS5wdXNoLmFwcGx5KFYuX19oLFYuX3NiKSxWLl9zYj1bXSxWLl9faC5sZW5ndGgmJl8ucHVzaChWKTticmVhayBYfVYuY29tcG9uZW50V2lsbFVwZGF0ZSE9bnVsbCYmVi5jb21wb25lbnRXaWxsVXBkYXRlKEEsVi5fX3MsaCksSSYmVi5jb21wb25lbnREaWRVcGRhdGUhPW51bGwmJlYuX19oLnB1c2goZnVuY3Rpb24oKXtWLmNvbXBvbmVudERpZFVwZGF0ZShPLFUsUCl9KX1pZihWLmNvbnRleHQ9aCxWLnByb3BzPUEsVi5fX1A9WCxWLl9fZT0hMSxjPXcuX19yLGU9MCxJKVYuc3RhdGU9Vi5fX3MsVi5fX2Q9ITEsYyYmYyhHKSxCPVYucmVuZGVyKFYucHJvcHMsVi5zdGF0ZSxWLmNvbnRleHQpLFcxLnB1c2guYXBwbHkoVi5fX2gsVi5fc2IpLFYuX3NiPVtdO2Vsc2UgZG8gVi5fX2Q9ITEsYyYmYyhHKSxCPVYucmVuZGVyKFYucHJvcHMsVi5zdGF0ZSxWLmNvbnRleHQpLFYuc3RhdGU9Vi5fX3M7d2hpbGUoVi5fX2QmJisrZTwyNSk7Vi5zdGF0ZT1WLl9fcyxWLmdldENoaWxkQ29udGV4dCE9bnVsbCYmKFk9TzAoTzAoe30sWSksVi5nZXRDaGlsZENvbnRleHQoKSkpLEkmJiFIJiZWLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIT1udWxsJiYoUD1WLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKE8sVSkpLG49QiE9bnVsbCYmQi50eXBlPT09bCYmQi5rZXk9PW51bGw/azkoQi5wcm9wcy5jaGlsZHJlbik6QiwkPUE5KFgsbjAobik/bjpbbl0sRyxKLFkscSxaLF8sJCx6LEwpLFYuYmFzZT1HLl9fZSxHLl9fdSY9LTE2MSxWLl9faC5sZW5ndGgmJl8ucHVzaChWKSxGJiYoVi5fX0U9Vi5fXz1udWxsKX1jYXRjaCh5KXtpZihHLl9fdj1udWxsLHp8fFohPW51bGwpaWYoeS50aGVuKXtmb3IoRy5fX3V8PXo/MTYwOjEyODskJiYkLm5vZGVUeXBlPT04JiYkLm5leHRTaWJsaW5nOykkPSQubmV4dFNpYmxpbmc7WltaLmluZGV4T2YoJCldPW51bGwsRy5fX2U9JH1lbHNle2ZvcihfMD1aLmxlbmd0aDtfMC0tOylkMShaW18wXSk7cDEoRyl9ZWxzZSBHLl9fZT1KLl9fZSxHLl9faz1KLl9fayx5LnRoZW58fHAxKEcpO3cuX19lKHksRyxKKX1lbHNlIFo9PW51bGwmJkcuX192PT1KLl9fdj8oRy5fX2s9Si5fX2ssRy5fX2U9Si5fX2UpOiQ9Ry5fX2U9dTgoSi5fX2UsRyxKLFkscSxaLF8seixMKTtyZXR1cm4oQj13LmRpZmZlZCkmJkIoRyksMTI4JkcuX191P3ZvaWQgMDokfWZ1bmN0aW9uIHAxKFgpe1gmJihYLl9fYyYmKFguX19jLl9fZT0hMCksWC5fX2smJlguX19rLnNvbWUocDEpKX1mdW5jdGlvbiBUOShYLEcsSil7Zm9yKHZhciBZPTA7WTxKLmxlbmd0aDtZKyspYzEoSltZXSxKWysrWV0sSlsrK1ldKTt3Ll9fYyYmdy5fX2MoRyxYKSxYLnNvbWUoZnVuY3Rpb24ocSl7dHJ5e1g9cS5fX2gscS5fX2g9W10sWC5zb21lKGZ1bmN0aW9uKFope1ouY2FsbChxKX0pfWNhdGNoKFope3cuX19lKFoscS5fX3YpfX0pfWZ1bmN0aW9uIGs5KFgpe3JldHVybiB0eXBlb2YgWCE9Im9iamVjdCJ8fFg9PW51bGx8fFguX19iPjA/WDpuMChYKT9YLm1hcChrOSk6TzAoe30sWCl9ZnVuY3Rpb24gdTgoWCxHLEosWSxxLFosXywkLHope3ZhciBMLEIsVixILE8sVSxQLEY9Si5wcm9wc3x8ejEsQT1HLnByb3BzLEk9Ry50eXBlO2lmKEk9PSJzdmciP3E9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjpJPT0ibWF0aCI/cT0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI6cXx8KHE9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiKSxaIT1udWxsKXtmb3IoTD0wO0w8Wi5sZW5ndGg7TCsrKWlmKChPPVpbTF0pJiYic2V0QXR0cmlidXRlImluIE89PSEhSSYmKEk/Ty5sb2NhbE5hbWU9PUk6Ty5ub2RlVHlwZT09Mykpe1g9TyxaW0xdPW51bGw7YnJlYWt9fWlmKFg9PW51bGwpe2lmKEk9PW51bGwpcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKEEpO1g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHEsSSxBLmlzJiZBKSwkJiYody5fX20mJncuX19tKEcsWiksJD0hMSksWj1udWxsfWlmKEk9PW51bGwpRj09PUF8fCQmJlguZGF0YT09QXx8KFguZGF0YT1BKTtlbHNle2lmKFo9WiYmSDEuY2FsbChYLmNoaWxkTm9kZXMpLCEkJiZaIT1udWxsKWZvcihGPXt9LEw9MDtMPFguYXR0cmlidXRlcy5sZW5ndGg7TCsrKUZbKE89WC5hdHRyaWJ1dGVzW0xdKS5uYW1lXT1PLnZhbHVlO2ZvcihMIGluIEYpTz1GW0xdLEw9PSJkYW5nZXJvdXNseVNldElubmVySFRNTCI/Vj1POkw9PSJjaGlsZHJlbiJ8fChMIGluIEEpfHxMPT0idmFsdWUiJiYoImRlZmF1bHRWYWx1ZSJpbiBBKXx8TD09ImNoZWNrZWQiJiYoImRlZmF1bHRDaGVja2VkImluIEEpfHwkMShYLEwsbnVsbCxPLHEpO2ZvcihMIGluIEEpTz1BW0xdLEw9PSJjaGlsZHJlbiI/SD1POkw9PSJkYW5nZXJvdXNseVNldElubmVySFRNTCI/Qj1POkw9PSJ2YWx1ZSI/VT1POkw9PSJjaGVja2VkIj9QPU86JCYmdHlwZW9mIE8hPSJmdW5jdGlvbiJ8fEZbTF09PT1PfHwkMShYLEwsTyxGW0xdLHEpO2lmKEIpJHx8ViYmKEIuX19odG1sPT1WLl9faHRtbHx8Qi5fX2h0bWw9PVguaW5uZXJIVE1MKXx8KFguaW5uZXJIVE1MPUIuX19odG1sKSxHLl9faz1bXTtlbHNlIGlmKFYmJihYLmlubmVySFRNTD0iIiksQTkoRy50eXBlPT0idGVtcGxhdGUiP1guY29udGVudDpYLG4wKEgpP0g6W0hdLEcsSixZLEk9PSJmb3JlaWduT2JqZWN0Ij8iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI6cSxaLF8sWj9aWzBdOkouX19rJiZ4MChKLDApLCQseiksWiE9bnVsbClmb3IoTD1aLmxlbmd0aDtMLS07KWQxKFpbTF0pOyR8fChMPSJ2YWx1ZSIsST09InByb2dyZXNzIiYmVT09bnVsbD9YLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTpVIT1udWxsJiYoVSE9PVhbTF18fEk9PSJwcm9ncmVzcyImJiFVfHxJPT0ib3B0aW9uIiYmVSE9RltMXSkmJiQxKFgsTCxVLEZbTF0scSksTD0iY2hlY2tlZCIsUCE9bnVsbCYmUCE9WFtMXSYmJDEoWCxMLFAsRltMXSxxKSl9cmV0dXJuIFh9ZnVuY3Rpb24gYzEoWCxHLEope3RyeXtpZih0eXBlb2YgWD09ImZ1bmN0aW9uIil7dmFyIFk9dHlwZW9mIFguX191PT0iZnVuY3Rpb24iO1kmJlguX191KCksWSYmRz09bnVsbHx8KFguX191PVgoRykpfWVsc2UgWC5jdXJyZW50PUd9Y2F0Y2gocSl7dy5fX2UocSxKKX19ZnVuY3Rpb24gRTkoWCxHLEope3ZhciBZLHE7aWYody51bm1vdW50JiZ3LnVubW91bnQoWCksKFk9WC5yZWYpJiYoWS5jdXJyZW50JiZZLmN1cnJlbnQhPVguX19lfHxjMShZLG51bGwsRykpLChZPVguX19jKSE9bnVsbCl7aWYoWS5jb21wb25lbnRXaWxsVW5tb3VudCl0cnl7WS5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKFope3cuX19lKFosRyl9WS5iYXNlPVkuX19QPW51bGx9aWYoWT1YLl9faylmb3IocT0wO3E8WS5sZW5ndGg7cSsrKVlbcV0mJkU5KFlbcV0sRyxKfHx0eXBlb2YgWC50eXBlIT0iZnVuY3Rpb24iKTtKfHxkMShYLl9fZSksWC5fX2M9WC5fXz1YLl9fZT12b2lkIDB9ZnVuY3Rpb24gYzgoWCxHLEope3JldHVybiB0aGlzLmNvbnN0cnVjdG9yKFgsSil9ZnVuY3Rpb24gRDEoWCxHLEope3ZhciBZLHEsWixfO0c9PWRvY3VtZW50JiYoRz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLHcuX18mJncuX18oWCxHKSxxPShZPXR5cGVvZiBKPT0iZnVuY3Rpb24iKT9udWxsOkomJkouX19rfHxHLl9fayxaPVtdLF89W10sdTEoRyxYPSghWSYmSnx8RykuX19rPUgwKGwsbnVsbCxbWF0pLHF8fHoxLHoxLEcubmFtZXNwYWNlVVJJLCFZJiZKP1tKXTpxP251bGw6Ry5maXJzdENoaWxkP0gxLmNhbGwoRy5jaGlsZE5vZGVzKTpudWxsLFosIVkmJko/SjpxP3EuX19lOkcuZmlyc3RDaGlsZCxZLF8pLFQ5KFosWCxfKX1mdW5jdGlvbiBGMChYKXtmdW5jdGlvbiBHKEope3ZhciBZLHE7cmV0dXJuIHRoaXMuZ2V0Q2hpbGRDb250ZXh0fHwoWT1uZXcgU2V0LChxPXt9KVtHLl9fY109dGhpcyx0aGlzLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiBxfSx0aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7WT1udWxsfSx0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihaKXt0aGlzLnByb3BzLnZhbHVlIT1aLnZhbHVlJiZZLmZvckVhY2goZnVuY3Rpb24oXyl7Xy5fX2U9ITAseDEoXyl9KX0sdGhpcy5zdWI9ZnVuY3Rpb24oWil7WS5hZGQoWik7dmFyIF89Wi5jb21wb25lbnRXaWxsVW5tb3VudDtaLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7WSYmWS5kZWxldGUoWiksXyYmXy5jYWxsKFopfX0pLEouY2hpbGRyZW59cmV0dXJuIEcuX19jPSJfX2NDIitJOSsrLEcuX189WCxHLlByb3ZpZGVyPUcuX19sPShHLkNvbnN1bWVyPWZ1bmN0aW9uKEosWSl7cmV0dXJuIEouY2hpbGRyZW4oWSl9KS5jb250ZXh0VHlwZT1HLEd9SDE9VzEuc2xpY2Usdz17X19lOmZ1bmN0aW9uKFgsRyxKLFkpe2Zvcih2YXIgcSxaLF87Rz1HLl9fOylpZigocT1HLl9fYykmJiFxLl9fKXRyeXtpZigoWj1xLmNvbnN0cnVjdG9yKSYmWi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IhPW51bGwmJihxLnNldFN0YXRlKFouZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKFgpKSxfPXEuX19kKSxxLmNvbXBvbmVudERpZENhdGNoIT1udWxsJiYocS5jb21wb25lbnREaWRDYXRjaChYLFl8fHt9KSxfPXEuX19kKSxfKXJldHVybiBxLl9fRT1xfWNhdGNoKCQpe1g9JH10aHJvdyBYfX0sRjk9MCxtOD1mdW5jdGlvbihYKXtyZXR1cm4gWCE9bnVsbCYmWC5jb25zdHJ1Y3Rvcj09PXZvaWQgMH0sdC5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oWCxHKXt2YXIgSjtKPXRoaXMuX19zIT1udWxsJiZ0aGlzLl9fcyE9dGhpcy5zdGF0ZT90aGlzLl9fczp0aGlzLl9fcz1PMCh7fSx0aGlzLnN0YXRlKSx0eXBlb2YgWD09ImZ1bmN0aW9uIiYmKFg9WChPMCh7fSxKKSx0aGlzLnByb3BzKSksWCYmTzAoSixYKSxYIT1udWxsJiZ0aGlzLl9fdiYmKEcmJnRoaXMuX3NiLnB1c2goRykseDEodGhpcykpfSx0LnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihYKXt0aGlzLl9fdiYmKHRoaXMuX19lPSEwLFgmJnRoaXMuX19oLnB1c2goWCkseDEodGhpcykpfSx0LnByb3RvdHlwZS5yZW5kZXI9bCxrMD1bXSxOOT10eXBlb2YgUHJvbWlzZT09ImZ1bmN0aW9uIj9Qcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpOnNldFRpbWVvdXQsUDk9ZnVuY3Rpb24oWCxHKXtyZXR1cm4gWC5fX3YuX19iLUcuX192Ll9fYn0sSzEuX19yPTAsaDE9TWF0aC5yYW5kb20oKS50b1N0cmluZyg4KSxWMT0iX19kIitoMSx0MD0iX19hIitoMSxVOT0vKFBvaW50ZXJDYXB0dXJlKSR8Q2FwdHVyZSQvaSxmMT0wLGcxPUI5KCExKSxtMT1COSghMCksSTk9MDt2YXIgcDAseCxsMSxDOSxlMD0wLGc5PVtdLGE9dyxSOT1hLl9fYixiOT1hLl9fcixqOT1hLmRpZmZlZCxTOT1hLl9fYyx2OT1hLnVubW91bnQseTk9YS5fXztmdW5jdGlvbiBCMShYLEcpe2EuX19oJiZhLl9faCh4LFgsZTB8fEcpLGUwPTA7dmFyIEo9eC5fX0h8fCh4Ll9fSD17X186W10sX19oOltdfSk7cmV0dXJuIFg+PUouX18ubGVuZ3RoJiZKLl9fLnB1c2goe30pLEouX19bWF19ZnVuY3Rpb24gayhYKXtyZXR1cm4gZTA9MSxpMSh4OSxYKX1mdW5jdGlvbiBpMShYLEcsSil7dmFyIFk9QjEocDArKywyKTtpZihZLnQ9WCwhWS5fX2MmJihZLl9fPVtKP0ooRyk6eDkodm9pZCAwLEcpLGZ1bmN0aW9uKCQpe3ZhciB6PVkuX19OP1kuX19OWzBdOlkuX19bMF0sTD1ZLnQoeiwkKTt6IT09TCYmKFkuX19OPVtMLFkuX19bMV1dLFkuX19jLnNldFN0YXRlKHt9KSl9XSxZLl9fYz14LCF4Ll9fZikpe3ZhciBxPWZ1bmN0aW9uKCQseixMKXtpZighWS5fX2MuX19IKXJldHVybiEwO3ZhciBCPVkuX19jLl9fSC5fXy5maWx0ZXIoZnVuY3Rpb24oSCl7cmV0dXJuIEguX19jfSk7aWYoQi5ldmVyeShmdW5jdGlvbihIKXtyZXR1cm4hSC5fX059KSlyZXR1cm4hWnx8Wi5jYWxsKHRoaXMsJCx6LEwpO3ZhciBWPVkuX19jLnByb3BzIT09JDtyZXR1cm4gQi5zb21lKGZ1bmN0aW9uKEgpe2lmKEguX19OKXt2YXIgTz1ILl9fWzBdO0guX189SC5fX04sSC5fX049dm9pZCAwLE8hPT1ILl9fWzBdJiYoVj0hMCl9fSksWiYmWi5jYWxsKHRoaXMsJCx6LEwpfHxWfTt4Ll9fZj0hMDt2YXJ7c2hvdWxkQ29tcG9uZW50VXBkYXRlOlosY29tcG9uZW50V2lsbFVwZGF0ZTpffT14O3guY29tcG9uZW50V2lsbFVwZGF0ZT1mdW5jdGlvbigkLHosTCl7aWYodGhpcy5fX2Upe3ZhciBCPVo7Wj12b2lkIDAscSgkLHosTCksWj1CfV8mJl8uY2FsbCh0aGlzLCQseixMKX0seC5zaG91bGRDb21wb25lbnRVcGRhdGU9cX1yZXR1cm4gWS5fX058fFkuX199ZnVuY3Rpb24gaihYLEcpe3ZhciBKPUIxKHAwKyssMyk7IWEuX19zJiZtOShKLl9fSCxHKSYmKEouX189WCxKLnU9Ryx4Ll9fSC5fX2gucHVzaChKKSl9ZnVuY3Rpb24gYihYKXtyZXR1cm4gZTA9NSx5MChmdW5jdGlvbigpe3JldHVybntjdXJyZW50Olh9fSxbXSl9ZnVuY3Rpb24geTAoWCxHKXt2YXIgSj1CMShwMCsrLDcpO3JldHVybiBtOShKLl9fSCxHKSYmKEouX189WCgpLEouX19IPUcsSi5fX2g9WCksSi5fX31mdW5jdGlvbiBSKFgsRyl7cmV0dXJuIGUwPTgseTAoZnVuY3Rpb24oKXtyZXR1cm4gWH0sRyl9ZnVuY3Rpb24gRTAoWCl7dmFyIEc9eC5jb250ZXh0W1guX19jXSxKPUIxKHAwKyssOSk7cmV0dXJuIEouYz1YLEc/KEouX189PW51bGwmJihKLl9fPSEwLEcuc3ViKHgpKSxHLnByb3BzLnZhbHVlKTpYLl9ffWZ1bmN0aW9uIGw4KCl7Zm9yKHZhciBYO1g9Zzkuc2hpZnQoKTspe3ZhciBHPVguX19IO2lmKFguX19QJiZHKXRyeXtHLl9faC5zb21lKE8xKSxHLl9faC5zb21lKGExKSxHLl9faD1bXX1jYXRjaChKKXtHLl9faD1bXSxhLl9fZShKLFguX192KX19fWEuX19iPWZ1bmN0aW9uKFgpe3g9bnVsbCxSOSYmUjkoWCl9LGEuX189ZnVuY3Rpb24oWCxHKXtYJiZHLl9fayYmRy5fX2suX19tJiYoWC5fX209Ry5fX2suX19tKSx5OSYmeTkoWCxHKX0sYS5fX3I9ZnVuY3Rpb24oWCl7YjkmJmI5KFgpLHAwPTA7dmFyIEc9KHg9WC5fX2MpLl9fSDtHJiYobDE9PT14PyhHLl9faD1bXSx4Ll9faD1bXSxHLl9fLnNvbWUoZnVuY3Rpb24oSil7Si5fX04mJihKLl9fPUouX19OKSxKLnU9Si5fX049dm9pZCAwfSkpOihHLl9faC5zb21lKE8xKSxHLl9faC5zb21lKGExKSxHLl9faD1bXSxwMD0wKSksbDE9eH0sYS5kaWZmZWQ9ZnVuY3Rpb24oWCl7ajkmJmo5KFgpO3ZhciBHPVguX19jO0cmJkcuX19IJiYoRy5fX0guX19oLmxlbmd0aCYmKGc5LnB1c2goRykhPT0xJiZDOT09PWEucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHwoKEM5PWEucmVxdWVzdEFuaW1hdGlvbkZyYW1lKXx8YTgpKGw4KSksRy5fX0guX18uc29tZShmdW5jdGlvbihKKXtKLnUmJihKLl9fSD1KLnUpLEoudT12b2lkIDB9KSksbDE9eD1udWxsfSxhLl9fYz1mdW5jdGlvbihYLEcpe0cuc29tZShmdW5jdGlvbihKKXt0cnl7Si5fX2guc29tZShPMSksSi5fX2g9Si5fX2guZmlsdGVyKGZ1bmN0aW9uKFkpe3JldHVybiFZLl9ffHxhMShZKX0pfWNhdGNoKFkpe0cuc29tZShmdW5jdGlvbihxKXtxLl9faCYmKHEuX19oPVtdKX0pLEc9W10sYS5fX2UoWSxKLl9fdil9fSksUzkmJlM5KFgsRyl9LGEudW5tb3VudD1mdW5jdGlvbihYKXt2OSYmdjkoWCk7dmFyIEcsSj1YLl9fYztKJiZKLl9fSCYmKEouX19ILl9fLnNvbWUoZnVuY3Rpb24oWSl7dHJ5e08xKFkpfWNhdGNoKHEpe0c9cX19KSxKLl9fSD12b2lkIDAsRyYmYS5fX2UoRyxKLl9fdikpfTt2YXIgaDk9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT09ImZ1bmN0aW9uIjtmdW5jdGlvbiBhOChYKXt2YXIgRyxKPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KFkpLGg5JiZjYW5jZWxBbmltYXRpb25GcmFtZShHKSxzZXRUaW1lb3V0KFgpfSxZPXNldFRpbWVvdXQoSiwzNSk7aDkmJihHPXJlcXVlc3RBbmltYXRpb25GcmFtZShKKSl9ZnVuY3Rpb24gTzEoWCl7dmFyIEc9eCxKPVguX19jO3R5cGVvZiBKPT0iZnVuY3Rpb24iJiYoWC5fX2M9dm9pZCAwLEooKSkseD1HfWZ1bmN0aW9uIGExKFgpe3ZhciBHPXg7WC5fX2M9WC5fXygpLHg9R31mdW5jdGlvbiBtOShYLEcpe3JldHVybiFYfHxYLmxlbmd0aCE9PUcubGVuZ3RofHxHLnNvbWUoZnVuY3Rpb24oSixZKXtyZXR1cm4gSiE9PVhbWV19KX1mdW5jdGlvbiB4OShYLEcpe3JldHVybiB0eXBlb2YgRz09ImZ1bmN0aW9uIj9HKFgpOkd9ZnVuY3Rpb24gZTgoWCxHKXtmb3IodmFyIEogaW4gRylYW0pdPUdbSl07cmV0dXJuIFh9ZnVuY3Rpb24gcDkoWCxHKXtmb3IodmFyIEogaW4gWClpZihKIT09Il9fc291cmNlIiYmIShKIGluIEcpKXJldHVybiEwO2Zvcih2YXIgWSBpbiBHKWlmKFkhPT0iX19zb3VyY2UiJiZYW1ldIT09R1tZXSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBmOShYLEcpe3RoaXMucHJvcHM9WCx0aGlzLmNvbnRleHQ9R30oZjkucHJvdG90eXBlPW5ldyB0KS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMCxmOS5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKFgsRyl7cmV0dXJuIHA5KHRoaXMucHJvcHMsWCl8fHA5KHRoaXMuc3RhdGUsRyl9O3ZhciBkOT13Ll9fYjt3Ll9fYj1mdW5jdGlvbihYKXtYLnR5cGUmJlgudHlwZS5fX2YmJlgucmVmJiYoWC5wcm9wcy5yZWY9WC5yZWYsWC5yZWY9bnVsbCksZDkmJmQ5KFgpfTt2YXIgWDQ9dy5fX2U7dy5fX2U9ZnVuY3Rpb24oWCxHLEosWSl7aWYoWC50aGVuKXtmb3IodmFyIHEsWj1HO1o9Wi5fXzspaWYoKHE9Wi5fX2MpJiZxLl9fYylyZXR1cm4gRy5fX2U9PW51bGwmJihHLl9fZT1KLl9fZSxHLl9faz1KLl9faykscS5fX2MoWCxHKX1YNChYLEcsSixZKX07dmFyIHU5PXcudW5tb3VudDtmdW5jdGlvbiByOShYLEcsSil7cmV0dXJuIFgmJihYLl9fYyYmWC5fX2MuX19IJiYoWC5fX2MuX19ILl9fLmZvckVhY2goZnVuY3Rpb24oWSl7dHlwZW9mIFkuX19jPT0iZnVuY3Rpb24iJiZZLl9fYygpfSksWC5fX2MuX19IPW51bGwpLChYPWU4KHt9LFgpKS5fX2MhPW51bGwmJihYLl9fYy5fX1A9PT1KJiYoWC5fX2MuX19QPUcpLFguX19jLl9fZT0hMCxYLl9fYz1udWxsKSxYLl9faz1YLl9fayYmWC5fX2subWFwKGZ1bmN0aW9uKFkpe3JldHVybiByOShZLEcsSil9KSksWH1mdW5jdGlvbiBzOShYLEcsSil7cmV0dXJuIFgmJkomJihYLl9fdj1udWxsLFguX19rPVguX19rJiZYLl9fay5tYXAoZnVuY3Rpb24oWSl7cmV0dXJuIHM5KFksRyxKKX0pLFguX19jJiZYLl9fYy5fX1A9PT1HJiYoWC5fX2UmJkouYXBwZW5kQ2hpbGQoWC5fX2UpLFguX19jLl9fZT0hMCxYLl9fYy5fX1A9SikpLFh9ZnVuY3Rpb24gbzEoKXt0aGlzLl9fdT0wLHRoaXMubz1udWxsLHRoaXMuX19iPW51bGx9ZnVuY3Rpb24gdDkoWCl7dmFyIEc9WC5fXyYmWC5fXy5fX2M7cmV0dXJuIEcmJkcuX19hJiZHLl9fYShYKX1mdW5jdGlvbiBGMSgpe3RoaXMuaT1udWxsLHRoaXMubD1udWxsfXcudW5tb3VudD1mdW5jdGlvbihYKXt2YXIgRz1YLl9fYztHJiYoRy5fX3o9ITApLEcmJkcuX19SJiZHLl9fUigpLEcmJjMyJlguX191JiYoWC50eXBlPW51bGwpLHU5JiZ1OShYKX0sKG8xLnByb3RvdHlwZT1uZXcgdCkuX19jPWZ1bmN0aW9uKFgsRyl7dmFyIEo9Ry5fX2MsWT10aGlzO1kubz09bnVsbCYmKFkubz1bXSksWS5vLnB1c2goSik7dmFyIHE9dDkoWS5fX3YpLFo9ITEsXz1mdW5jdGlvbigpe1p8fFkuX196fHwoWj0hMCxKLl9fUj1udWxsLHE/cSh6KTp6KCkpfTtKLl9fUj1fO3ZhciAkPUouX19QO0ouX19QPW51bGw7dmFyIHo9ZnVuY3Rpb24oKXtpZighLS1ZLl9fdSl7aWYoWS5zdGF0ZS5fX2Epe3ZhciBMPVkuc3RhdGUuX19hO1kuX192Ll9fa1swXT1zOShMLEwuX19jLl9fUCxMLl9fYy5fX08pfXZhciBCO2ZvcihZLnNldFN0YXRlKHtfX2E6WS5fX2I9bnVsbH0pO0I9WS5vLnBvcCgpOylCLl9fUD0kLEIuZm9yY2VVcGRhdGUoKX19O1kuX191Kyt8fDMyJkcuX191fHxZLnNldFN0YXRlKHtfX2E6WS5fX2I9WS5fX3YuX19rWzBdfSksWC50aGVuKF8sXyl9LG8xLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMubz1bXX0sbzEucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihYLEcpe2lmKHRoaXMuX19iKXtpZih0aGlzLl9fdi5fX2spe3ZhciBKPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLFk9dGhpcy5fX3YuX19rWzBdLl9fYzt0aGlzLl9fdi5fX2tbMF09cjkodGhpcy5fX2IsSixZLl9fTz1ZLl9fUCl9dGhpcy5fX2I9bnVsbH12YXIgcT1HLl9fYSYmSDAobCxudWxsLFguZmFsbGJhY2spO3JldHVybiBxJiYocS5fX3UmPS0zMyksW0gwKGwsbnVsbCxHLl9fYT9udWxsOlguY2hpbGRyZW4pLHFdfTt2YXIgYzk9ZnVuY3Rpb24oWCxHLEope2lmKCsrSlsxXT09PUpbMF0mJlgubC5kZWxldGUoRyksWC5wcm9wcy5yZXZlYWxPcmRlciYmKFgucHJvcHMucmV2ZWFsT3JkZXJbMF0hPT0idCJ8fCFYLmwuc2l6ZSkpZm9yKEo9WC5pO0o7KXtmb3IoO0oubGVuZ3RoPjM7KUoucG9wKCkoKTtpZihKWzFdPEpbMF0pYnJlYWs7WC5pPUo9SlsyXX19OyhGMS5wcm90b3R5cGU9bmV3IHQpLl9fYT1mdW5jdGlvbihYKXt2YXIgRz10aGlzLEo9dDkoRy5fX3YpLFk9Ry5sLmdldChYKTtyZXR1cm4gWVswXSsrLGZ1bmN0aW9uKHEpe3ZhciBaPWZ1bmN0aW9uKCl7Ry5wcm9wcy5yZXZlYWxPcmRlcj8oWS5wdXNoKHEpLGM5KEcsWCxZKSk6cSgpfTtKP0ooWik6WigpfX0sRjEucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihYKXt0aGlzLmk9bnVsbCx0aGlzLmw9bmV3IE1hcDt2YXIgRz1CMChYLmNoaWxkcmVuKTtYLnJldmVhbE9yZGVyJiZYLnJldmVhbE9yZGVyWzBdPT09ImIiJiZHLnJldmVyc2UoKTtmb3IodmFyIEo9Ry5sZW5ndGg7Si0tOyl0aGlzLmwuc2V0KEdbSl0sdGhpcy5pPVsxLDAsdGhpcy5pXSk7cmV0dXJuIFguY2hpbGRyZW59LEYxLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9RjEucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyIFg9dGhpczt0aGlzLmwuZm9yRWFjaChmdW5jdGlvbihHLEope2M5KFgsSixHKX0pfTt2YXIgRzQ9dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDMsSjQ9L14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxpbWFnZSghUyl8bGV0dGVyfGxpZ2h0aW5nfG1hcmtlcig/IUh8V3xVKXxvdmVybGluZXxwYWludHxwb2ludGVyfHNoYXBlfHN0b3B8c3RyaWtldGhyb3VnaHxzdHJva2V8dGV4dCg/IUwpfHRyYW5zZm9ybXx1bmRlcmxpbmV8dW5pY29kZXx1bml0c3x2fHZlY3Rvcnx2ZXJ0fHdvcmR8d3JpdGluZ3x4KD8hQykpW0EtWl0vLFk0PS9eb24oQW5pfFRyYXxUb3V8QmVmb3JlSW5wfENvbXBvKS8sWjQ9L1tBLVowLTldL2cscTQ9dHlwZW9mIGRvY3VtZW50PCJ1IixRND1mdW5jdGlvbihYKXtyZXR1cm4odHlwZW9mIFN5bWJvbDwidSImJnR5cGVvZiBTeW1ib2woKT09InN5bWJvbCI/L2ZpbHxjaGV8cmFkLzovZmlsfGNoZXxyYS8pLnRlc3QoWCl9O2Z1bmN0aW9uIG45KFgsRyxKKXtyZXR1cm4gRy5fX2s9PW51bGwmJihHLnRleHRDb250ZW50PSIiKSxEMShYLEcpLHR5cGVvZiBKPT0iZnVuY3Rpb24iJiZKKCksWD9YLl9fYzpudWxsfXQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9ITAsWyJjb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwiY29tcG9uZW50V2lsbFVwZGF0ZSJdLmZvckVhY2goZnVuY3Rpb24oWCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFgse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1siVU5TQUZFXyIrWF19LHNldDpmdW5jdGlvbihHKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxYLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6R30pfX0pfSk7dmFyIGw5PXcuZXZlbnQ7dy5ldmVudD1mdW5jdGlvbihYKXtyZXR1cm4gbDkmJihYPWw5KFgpKSxYLnBlcnNpc3Q9ZnVuY3Rpb24oKXt9LFguaXNQcm9wYWdhdGlvblN0b3BwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWxCdWJibGV9LFguaXNEZWZhdWx0UHJldmVudGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFByZXZlbnRlZH0sWC5uYXRpdmVFdmVudD1YfTt2YXIgZTksXzQ9e2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbGFzc319LGE5PXcudm5vZGU7dy52bm9kZT1mdW5jdGlvbihYKXt0eXBlb2YgWC50eXBlPT0ic3RyaW5nIiYmZnVuY3Rpb24oRyl7dmFye3Byb3BzOkosdHlwZTpZfT1HLHE9e30sWj1ZLmluZGV4T2YoIi0iKT09LTE7Zm9yKHZhciBfIGluIEope3ZhciAkPUpbX107aWYoIShfPT09InZhbHVlIiYmKCJkZWZhdWx0VmFsdWUiaW4gSikmJiQ9PW51bGx8fHE0JiZfPT09ImNoaWxkcmVuIiYmWT09PSJub3NjcmlwdCJ8fF89PT0iY2xhc3MifHxfPT09ImNsYXNzTmFtZSIpKXt2YXIgej1fLnRvTG93ZXJDYXNlKCk7Xz09PSJkZWZhdWx0VmFsdWUiJiYidmFsdWUiaW4gSiYmSi52YWx1ZT09bnVsbD9fPSJ2YWx1ZSI6Xz09PSJkb3dubG9hZCImJiQ9PT0hMD8kPSIiOno9PT0idHJhbnNsYXRlIiYmJD09PSJubyI/JD0hMTp6WzBdPT09Im8iJiZ6WzFdPT09Im4iP3o9PT0ib25kb3VibGVjbGljayI/Xz0ib25kYmxjbGljayI6eiE9PSJvbmNoYW5nZSJ8fFkhPT0iaW5wdXQiJiZZIT09InRleHRhcmVhInx8UTQoSi50eXBlKT96PT09Im9uZm9jdXMiP189Im9uZm9jdXNpbiI6ej09PSJvbmJsdXIiP189Im9uZm9jdXNvdXQiOlk0LnRlc3QoXykmJihfPXopOno9Xz0ib25pbnB1dCI6WiYmSjQudGVzdChfKT9fPV8ucmVwbGFjZShaNCwiLSQmIikudG9Mb3dlckNhc2UoKTokPT09bnVsbCYmKCQ9dm9pZCAwKSx6PT09Im9uaW5wdXQiJiZxW189el0mJihfPSJvbmlucHV0Q2FwdHVyZSIpLHFbX109JH19WT09InNlbGVjdCImJihxLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KHEudmFsdWUpJiYocS52YWx1ZT1CMChKLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKEwpe0wucHJvcHMuc2VsZWN0ZWQ9cS52YWx1ZS5pbmRleE9mKEwucHJvcHMudmFsdWUpIT0tMX0pKSxxLmRlZmF1bHRWYWx1ZSE9bnVsbCYmKHEudmFsdWU9QjAoSi5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbihMKXtMLnByb3BzLnNlbGVjdGVkPXEubXVsdGlwbGU/cS5kZWZhdWx0VmFsdWUuaW5kZXhPZihMLnByb3BzLnZhbHVlKSE9LTE6cS5kZWZhdWx0VmFsdWU9PUwucHJvcHMudmFsdWV9KSkpLEouY2xhc3MmJiFKLmNsYXNzTmFtZT8ocS5jbGFzcz1KLmNsYXNzLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShxLCJjbGFzc05hbWUiLF80KSk6Si5jbGFzc05hbWUmJihxLmNsYXNzPXEuY2xhc3NOYW1lPUouY2xhc3NOYW1lKSxHLnByb3BzPXF9KFgpLFguJCR0eXBlb2Y9RzQsYTkmJmE5KFgpfTt2YXIgaTk9dy5fX3I7dy5fX3I9ZnVuY3Rpb24oWCl7aTkmJmk5KFgpLGU5PVguX19jfTt2YXIgbzk9dy5kaWZmZWQ7dy5kaWZmZWQ9ZnVuY3Rpb24oWCl7bzkmJm85KFgpO3Zhcntwcm9wczpHLF9fZTpKfT1YO0ohPW51bGwmJlgudHlwZT09PSJ0ZXh0YXJlYSImJiJ2YWx1ZSJpbiBHJiZHLnZhbHVlIT09Si52YWx1ZSYmKEoudmFsdWU9Ry52YWx1ZT09bnVsbD8iIjpHLnZhbHVlKSxlOT1udWxsfTtmdW5jdGlvbiBYOChYKXtyZXR1cm4hIVguX19rJiYoRDEobnVsbCxYKSwhMCl9ZnVuY3Rpb24gRzgoWCl7cmV0dXJue3JlbmRlcjpmdW5jdGlvbihHKXtuOShHLFgpfSx1bm1vdW50OmZ1bmN0aW9uKCl7WDgoWCl9fX12YXIgSjg9Imh0dHBzOi8vZ2l0aHViLmNvbS9jYW1lcm9uY29va2UvQVhlIixZOD0iQVhlIGlzIG5vdCBpbnN0YWxsZWQuIEluc3RhbGwgaXQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vY2FtZXJvbmNvb2tlL0FYZS4iO2Z1bmN0aW9uIFc4KFgsRyl7Zm9yKHZhciBKIGluIEcpWFtKXT1HW0pdO3JldHVybiBYfWZ1bmN0aW9uIHQxKFgsRyl7Zm9yKHZhciBKIGluIFgpaWYoSiE9PSJfX3NvdXJjZSImJiEoSiBpbiBHKSlyZXR1cm4hMDtmb3IodmFyIFkgaW4gRylpZihZIT09Il9fc291cmNlIiYmWFtZXSE9PUdbWV0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gWjgoWCxHKXt0aGlzLnByb3BzPVgsdGhpcy5jb250ZXh0PUd9ZnVuY3Rpb24gbjEoWCxHKXtmdW5jdGlvbiBKKHEpe3ZhciBaPXRoaXMucHJvcHMucmVmO3JldHVybiBaIT1xLnJlZiYmWiYmKHR5cGVvZiBaPT0iZnVuY3Rpb24iP1oobnVsbCk6Wi5jdXJyZW50PW51bGwpLEc/IUcodGhpcy5wcm9wcyxxKXx8WiE9cS5yZWY6dDEodGhpcy5wcm9wcyxxKX1mdW5jdGlvbiBZKHEpe3JldHVybiB0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZT1KLEgwKFgscSl9cmV0dXJuIFkuZGlzcGxheU5hbWU9Ik1lbW8oIisoWC5kaXNwbGF5TmFtZXx8WC5uYW1lKSsiKSIsWS5fX2Y9WS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD0hMCxZLnR5cGU9WCxZfShaOC5wcm90b3R5cGU9bmV3IHQpLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLFo4LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oWCxHKXtyZXR1cm4gdDEodGhpcy5wcm9wcyxYKXx8dDEodGhpcy5zdGF0ZSxHKX07dmFyIHE4PXcuX19iO3cuX19iPWZ1bmN0aW9uKFgpe1gudHlwZSYmWC50eXBlLl9fZiYmWC5yZWYmJihYLnByb3BzLnJlZj1YLnJlZixYLnJlZj1udWxsKSxxOCYmcTgoWCl9O3ZhciAkND10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKXx8MzkxMTtmdW5jdGlvbiBmMChYKXtmdW5jdGlvbiBHKEope3ZhciBZPVc4KHt9LEopO3JldHVybiBkZWxldGUgWS5yZWYsWChZLEoucmVmfHxudWxsKX1yZXR1cm4gRy4kJHR5cGVvZj0kNCxHLnJlbmRlcj1YLEcucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9Ry5fX2Y9ITAsRy5kaXNwbGF5TmFtZT0iRm9yd2FyZFJlZigiKyhYLmRpc3BsYXlOYW1lfHxYLm5hbWUpKyIpIixHfXZhciBWND13Ll9fZTt3Ll9fZT1mdW5jdGlvbihYLEcsSixZKXtpZihYLnRoZW4pe2Zvcih2YXIgcSxaPUc7Wj1aLl9fOylpZigocT1aLl9fYykmJnEuX19jKXJldHVybiBHLl9fZT09bnVsbCYmKEcuX19lPUouX19lLEcuX19rPUouX19rKSxxLl9fYyhYLEcpfVY0KFgsRyxKLFkpfTt2YXIgUTg9dy51bm1vdW50O2Z1bmN0aW9uIEs4KFgsRyxKKXtyZXR1cm4gWCYmKFguX19jJiZYLl9fYy5fX0gmJihYLl9fYy5fX0guX18uZm9yRWFjaChmdW5jdGlvbihZKXt0eXBlb2YgWS5fX2M9PSJmdW5jdGlvbiImJlkuX19jKCl9KSxYLl9fYy5fX0g9bnVsbCksKFg9Vzgoe30sWCkpLl9fYyE9bnVsbCYmKFguX19jLl9fUD09PUomJihYLl9fYy5fX1A9RyksWC5fX2MuX19lPSEwLFguX19jPW51bGwpLFguX19rPVguX19rJiZYLl9fay5tYXAoZnVuY3Rpb24oWSl7cmV0dXJuIEs4KFksRyxKKX0pKSxYfWZ1bmN0aW9uIEg4KFgsRyxKKXtyZXR1cm4gWCYmSiYmKFguX192PW51bGwsWC5fX2s9WC5fX2smJlguX19rLm1hcChmdW5jdGlvbihZKXtyZXR1cm4gSDgoWSxHLEopfSksWC5fX2MmJlguX19jLl9fUD09PUcmJihYLl9fZSYmSi5hcHBlbmRDaGlsZChYLl9fZSksWC5fX2MuX19lPSEwLFguX19jLl9fUD1KKSksWH1mdW5jdGlvbiBzMSgpe3RoaXMuX191PTAsdGhpcy5vPW51bGwsdGhpcy5fX2I9bnVsbH1mdW5jdGlvbiBEOChYKXt2YXIgRz1YLl9fJiZYLl9fLl9fYztyZXR1cm4gRyYmRy5fX2EmJkcuX19hKFgpfWZ1bmN0aW9uIE4xKCl7dGhpcy5pPW51bGwsdGhpcy5sPW51bGx9dy51bm1vdW50PWZ1bmN0aW9uKFgpe3ZhciBHPVguX19jO0cmJihHLl9fej0hMCksRyYmRy5fX1ImJkcuX19SKCksRyYmMzImWC5fX3UmJihYLnR5cGU9bnVsbCksUTgmJlE4KFgpfSwoczEucHJvdG90eXBlPW5ldyB0KS5fX2M9ZnVuY3Rpb24oWCxHKXt2YXIgSj1HLl9fYyxZPXRoaXM7WS5vPT1udWxsJiYoWS5vPVtdKSxZLm8ucHVzaChKKTt2YXIgcT1EOChZLl9fdiksWj0hMSxfPWZ1bmN0aW9uKCl7Wnx8WS5fX3p8fChaPSEwLEouX19SPW51bGwscT9xKHopOnooKSl9O0ouX19SPV87dmFyICQ9Si5fX1A7Si5fX1A9bnVsbDt2YXIgej1mdW5jdGlvbigpe2lmKCEtLVkuX191KXtpZihZLnN0YXRlLl9fYSl7dmFyIEw9WS5zdGF0ZS5fX2E7WS5fX3YuX19rWzBdPUg4KEwsTC5fX2MuX19QLEwuX19jLl9fTyl9dmFyIEI7Zm9yKFkuc2V0U3RhdGUoe19fYTpZLl9fYj1udWxsfSk7Qj1ZLm8ucG9wKCk7KUIuX19QPSQsQi5mb3JjZVVwZGF0ZSgpfX07WS5fX3UrK3x8MzImRy5fX3V8fFkuc2V0U3RhdGUoe19fYTpZLl9fYj1ZLl9fdi5fX2tbMF19KSxYLnRoZW4oXyxfKX0sczEucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5vPVtdfSxzMS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKFgsRyl7aWYodGhpcy5fX2Ipe2lmKHRoaXMuX192Ll9fayl7dmFyIEo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksWT10aGlzLl9fdi5fX2tbMF0uX19jO3RoaXMuX192Ll9fa1swXT1LOCh0aGlzLl9fYixKLFkuX19PPVkuX19QKX10aGlzLl9fYj1udWxsfXZhciBxPUcuX19hJiZIMChsLG51bGwsWC5mYWxsYmFjayk7cmV0dXJuIHEmJihxLl9fdSY9LTMzKSxbSDAobCxudWxsLEcuX19hP251bGw6WC5jaGlsZHJlbikscV19O3ZhciBfOD1mdW5jdGlvbihYLEcsSil7aWYoKytKWzFdPT09SlswXSYmWC5sLmRlbGV0ZShHKSxYLnByb3BzLnJldmVhbE9yZGVyJiYoWC5wcm9wcy5yZXZlYWxPcmRlclswXSE9PSJ0Inx8IVgubC5zaXplKSlmb3IoSj1YLmk7Sjspe2Zvcig7Si5sZW5ndGg+MzspSi5wb3AoKSgpO2lmKEpbMV08SlswXSlicmVhaztYLmk9Sj1KWzJdfX07KE4xLnByb3RvdHlwZT1uZXcgdCkuX19hPWZ1bmN0aW9uKFgpe3ZhciBHPXRoaXMsSj1EOChHLl9fdiksWT1HLmwuZ2V0KFgpO3JldHVybiBZWzBdKyssZnVuY3Rpb24ocSl7dmFyIFo9ZnVuY3Rpb24oKXtHLnByb3BzLnJldmVhbE9yZGVyPyhZLnB1c2gocSksXzgoRyxYLFkpKTpxKCl9O0o/SihaKTpaKCl9fSxOMS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKFgpe3RoaXMuaT1udWxsLHRoaXMubD1uZXcgTWFwO3ZhciBHPUIwKFguY2hpbGRyZW4pO1gucmV2ZWFsT3JkZXImJlgucmV2ZWFsT3JkZXJbMF09PT0iYiImJkcucmV2ZXJzZSgpO2Zvcih2YXIgSj1HLmxlbmd0aDtKLS07KXRoaXMubC5zZXQoR1tKXSx0aGlzLmk9WzEsMCx0aGlzLmldKTtyZXR1cm4gWC5jaGlsZHJlbn0sTjEucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZT1OMS5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgWD10aGlzO3RoaXMubC5mb3JFYWNoKGZ1bmN0aW9uKEcsSil7XzgoWCxKLEcpfSl9O3ZhciBMND10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMyx6ND0vXig/OmFjY2VudHxhbGlnbm1lbnR8YXJhYmljfGJhc2VsaW5lfGNhcHxjbGlwKD8hUGF0aFUpfGNvbG9yfGRvbWluYW50fGZpbGx8Zmxvb2R8Zm9udHxnbHlwaCg/IVIpfGhvcml6fGltYWdlKCFTKXxsZXR0ZXJ8bGlnaHRpbmd8bWFya2VyKD8hSHxXfFUpfG92ZXJsaW5lfHBhaW50fHBvaW50ZXJ8c2hhcGV8c3RvcHxzdHJpa2V0aHJvdWdofHN0cm9rZXx0ZXh0KD8hTCl8dHJhbnNmb3JtfHVuZGVybGluZXx1bmljb2RlfHVuaXRzfHZ8dmVjdG9yfHZlcnR8d29yZHx3cml0aW5nfHgoPyFDKSlbQS1aXS8sVzQ9L15vbihBbml8VHJhfFRvdXxCZWZvcmVJbnB8Q29tcG8pLyxLND0vW0EtWjAtOV0vZyxIND10eXBlb2YgZG9jdW1lbnQ8InUiLEQ0PWZ1bmN0aW9uKFgpe3JldHVybih0eXBlb2YgU3ltYm9sPCJ1IiYmdHlwZW9mIFN5bWJvbCgpPT0ic3ltYm9sIj8vZmlsfGNoZXxyYWQvOi9maWx8Y2hlfHJhLykudGVzdChYKX07dC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD0hMCxbImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJjb21wb25lbnRXaWxsVXBkYXRlIl0uZm9yRWFjaChmdW5jdGlvbihYKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsWCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzWyJVTlNBRkVfIitYXX0sc2V0OmZ1bmN0aW9uKEcpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFgse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpHfSl9fSl9KTt2YXIgJDg9dy5ldmVudDt3LmV2ZW50PWZ1bmN0aW9uKFgpe3JldHVybiAkOCYmKFg9JDgoWCkpLFgucGVyc2lzdD1mdW5jdGlvbigpe30sWC5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbmNlbEJ1YmJsZX0sWC5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0UHJldmVudGVkfSxYLm5hdGl2ZUV2ZW50PVh9O3ZhciBPOCxPND17Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsYXNzfX0sVjg9dy52bm9kZTt3LnZub2RlPWZ1bmN0aW9uKFgpe3R5cGVvZiBYLnR5cGU9PSJzdHJpbmciJiZmdW5jdGlvbihHKXt2YXJ7cHJvcHM6Six0eXBlOll9PUcscT17fSxaPVkuaW5kZXhPZigiLSIpPT0tMTtmb3IodmFyIF8gaW4gSil7dmFyICQ9SltfXTtpZighKF89PT0idmFsdWUiJiYoImRlZmF1bHRWYWx1ZSJpbiBKKSYmJD09bnVsbHx8SDQmJl89PT0iY2hpbGRyZW4iJiZZPT09Im5vc2NyaXB0Inx8Xz09PSJjbGFzcyJ8fF89PT0iY2xhc3NOYW1lIikpe3ZhciB6PV8udG9Mb3dlckNhc2UoKTtfPT09ImRlZmF1bHRWYWx1ZSImJiJ2YWx1ZSJpbiBKJiZKLnZhbHVlPT1udWxsP189InZhbHVlIjpfPT09ImRvd25sb2FkIiYmJD09PSEwPyQ9IiI6ej09PSJ0cmFuc2xhdGUiJiYkPT09Im5vIj8kPSExOnpbMF09PT0ibyImJnpbMV09PT0ibiI/ej09PSJvbmRvdWJsZWNsaWNrIj9fPSJvbmRibGNsaWNrIjp6IT09Im9uY2hhbmdlInx8WSE9PSJpbnB1dCImJlkhPT0idGV4dGFyZWEifHxENChKLnR5cGUpP3o9PT0ib25mb2N1cyI/Xz0ib25mb2N1c2luIjp6PT09Im9uYmx1ciI/Xz0ib25mb2N1c291dCI6VzQudGVzdChfKSYmKF89eik6ej1fPSJvbmlucHV0IjpaJiZ6NC50ZXN0KF8pP189Xy5yZXBsYWNlKEs0LCItJCYiKS50b0xvd2VyQ2FzZSgpOiQ9PT1udWxsJiYoJD12b2lkIDApLHo9PT0ib25pbnB1dCImJnFbXz16XSYmKF89Im9uaW5wdXRDYXB0dXJlIikscVtfXT0kfX1ZPT0ic2VsZWN0IiYmKHEubXVsdGlwbGUmJkFycmF5LmlzQXJyYXkocS52YWx1ZSkmJihxLnZhbHVlPUIwKEouY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24oTCl7TC5wcm9wcy5zZWxlY3RlZD1xLnZhbHVlLmluZGV4T2YoTC5wcm9wcy52YWx1ZSkhPS0xfSkpLHEuZGVmYXVsdFZhbHVlIT1udWxsJiYocS52YWx1ZT1CMChKLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKEwpe0wucHJvcHMuc2VsZWN0ZWQ9cS5tdWx0aXBsZT9xLmRlZmF1bHRWYWx1ZS5pbmRleE9mKEwucHJvcHMudmFsdWUpIT0tMTpxLmRlZmF1bHRWYWx1ZT09TC5wcm9wcy52YWx1ZX0pKSksSi5jbGFzcyYmIUouY2xhc3NOYW1lPyhxLmNsYXNzPUouY2xhc3MsT2JqZWN0LmRlZmluZVByb3BlcnR5KHEsImNsYXNzTmFtZSIsTzQpKTpKLmNsYXNzTmFtZSYmKHEuY2xhc3M9cS5jbGFzc05hbWU9Si5jbGFzc05hbWUpLEcucHJvcHM9cX0oWCksWC4kJHR5cGVvZj1MNCxWOCYmVjgoWCl9O3ZhciBMOD13Ll9fcjt3Ll9fcj1mdW5jdGlvbihYKXtMOCYmTDgoWCksTzg9WC5fX2N9O3ZhciB6OD13LmRpZmZlZDt3LmRpZmZlZD1mdW5jdGlvbihYKXt6OCYmejgoWCk7dmFye3Byb3BzOkcsX19lOkp9PVg7SiE9bnVsbCYmWC50eXBlPT09InRleHRhcmVhIiYmInZhbHVlImluIEcmJkcudmFsdWUhPT1KLnZhbHVlJiYoSi52YWx1ZT1HLnZhbHVlPT1udWxsPyIiOkcudmFsdWUpLE84PW51bGx9O3ZhciBDMD0zO2Z1bmN0aW9uIGUxKFgpe3JldHVybiBYPT09ImxhbmRzY2FwZV9sZWZ0Inx8WD09PSJsYW5kc2NhcGVfcmlnaHQifWZ1bmN0aW9uIFgxKFgpe3JldHVybiEhWCYmKGUxKFgub3JpZW50YXRpb24pfHxYLndpZHRoPlguaGVpZ2h0KX1mdW5jdGlvbiBQMShYKXtpZighWHx8WC53aWR0aDw9MHx8WC5oZWlnaHQ8PTApcmV0dXJuIG51bGw7bGV0IEc9ZTEoWC5vcmllbnRhdGlvbil8fFgud2lkdGg+WC5oZWlnaHQsSj1HP01hdGgubWF4KFgud2lkdGgsWC5oZWlnaHQpOk1hdGgubWluKFgud2lkdGgsWC5oZWlnaHQpLFk9Rz9NYXRoLm1pbihYLndpZHRoLFguaGVpZ2h0KTpNYXRoLm1heChYLndpZHRoLFguaGVpZ2h0KTtpZihKPT09WC53aWR0aCYmWT09PVguaGVpZ2h0KXJldHVybiBYO3JldHVybnsuLi5YLHdpZHRoOkosaGVpZ2h0Oll9fWZ1bmN0aW9uIEcxKFgpe2xldCBHPVAxKFgpLEo9QjgoWD8ub3JpZW50YXRpb24pLFk9TWF0aC5hYnMoSik9PT05MCxxPSEhWCYmWC53aWR0aD5YLmhlaWdodCxaPUo9PT0xODB8fFkmJiFxO3JldHVybntkaXNwbGF5Q29uZmlnOkcscm90YXRpb25EZWdyZWVzOlo/SjowLG5lZWRzQ3NzUm90YXRpb246WixpbnB1dE9yaWVudGF0aW9uOlo/WD8ub3JpZW50YXRpb246dm9pZCAwfX1mdW5jdGlvbiBCOChYKXtzd2l0Y2goWCl7Y2FzZSJsYW5kc2NhcGVfbGVmdCI6cmV0dXJuIDkwO2Nhc2UibGFuZHNjYXBlX3JpZ2h0IjpyZXR1cm4tOTA7Y2FzZSJwb3J0cmFpdF91cHNpZGVfZG93biI6cmV0dXJuIDE4MDtkZWZhdWx0OnJldHVybiAwfX1mdW5jdGlvbiBKMShYLEcsSil7c3dpdGNoKFgpe2Nhc2UibGFuZHNjYXBlX2xlZnQiOnJldHVybnt4OkoseToxLUd9O2Nhc2UibGFuZHNjYXBlX3JpZ2h0IjpyZXR1cm57eDoxLUoseTpHfTtjYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpyZXR1cm57eDoxLUcseToxLUp9O2RlZmF1bHQ6cmV0dXJue3g6Ryx5Okp9fX1mdW5jdGlvbiBYOShYLEcpe3N3aXRjaChYKXtjYXNlImxhbmRzY2FwZV9sZWZ0Ijpzd2l0Y2goRyl7Y2FzZSAxOnJldHVybiAzO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDI6cmV0dXJuIDE7Y2FzZSAzOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIEd9Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnN3aXRjaChHKXtjYXNlIDE6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiAzO2Nhc2UgMjpyZXR1cm4gNDtjYXNlIDM6cmV0dXJuIDE7ZGVmYXVsdDpyZXR1cm4gR31jYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpzd2l0Y2goRyl7Y2FzZSAxOnJldHVybiA0O2Nhc2UgNDpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDM7Y2FzZSAzOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIEd9ZGVmYXVsdDpyZXR1cm4gR319dmFyIEI0PTA7ZnVuY3Rpb24gUShYLEcsSixZLHEsWil7R3x8KEc9e30pO3ZhciBfLCQsej1HO2lmKCJyZWYiaW4geilmb3IoJCBpbiB6PXt9LEcpJD09InJlZiI/Xz1HWyRdOnpbJF09R1skXTt2YXIgTD17dHlwZTpYLHByb3BzOnosa2V5OkoscmVmOl8sX19rOm51bGwsX186bnVsbCxfX2I6MCxfX2U6bnVsbCxfX2M6bnVsbCxjb25zdHJ1Y3Rvcjp2b2lkIDAsX192Oi0tQjQsX19pOi0xLF9fdTowLF9fc291cmNlOnEsX19zZWxmOlp9O2lmKHR5cGVvZiBYPT0iZnVuY3Rpb24iJiYoXz1YLmRlZmF1bHRQcm9wcykpZm9yKCQgaW4gXyl6WyRdPT09dm9pZCAwJiYoelskXT1fWyRdKTtyZXR1cm4gdy52bm9kZSYmdy52bm9kZShMKSxMfXZhciBGOD1gdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyUzRSUzQ2NpcmNsZSBjeD0nMTInIGN5PScxMicgcj0nOScgZmlsbD0ncmdiYSgyNTUsMjU1LDI1NSwwLjQ1KScgc3Ryb2tlPSdyZ2JhKDAsMCwwLDAuNTUpJyBzdHJva2Utd2lkdGg9JzEuMjUnIGZpbHRlcj0nZHJvcC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwwLDAsMC40NSkpJy8lM0UlM0Mvc3ZnJTNFIikgMTIgMTIsIHBvaW50ZXJgLEY0PTMsTjQ9NCxQND01O2Z1bmN0aW9uIFUxKHt1cmw6WCx3c1VybDpHLHN0eWxlOkosaW1hZ2VTdHlsZTpZLGNsYXNzTmFtZTpxLG9uSG9tZVByZXNzOlosb25TdHJlYW1Ub3VjaDpfLG9uU3RyZWFtTXVsdGlUb3VjaDokLG9uU3RyZWFtQnV0dG9uOnosc3Vic2NyaWJlRnJhbWU6TCxzdHJlYW1GcmFtZTpCLHN0cmVhbUNvbmZpZzpWLG9uU2NyZWVuQ29uZmlnQ2hhbmdlOkgsaGlkZUNvbnRyb2xzOk8sb25TdHJlYW1pbmdDaGFuZ2U6VSxjb25uZWN0aW9uUXVhbGl0eTpQfSl7bGV0IEY9ISFfLEE9YihudWxsKSxJPWIobnVsbCkscz1iKG51bGwpLGg9YihudWxsKSxbYyxlXT1rKCExKSxbbixfMF09ayhudWxsKSxbZix5XT1rKG51bGwpLGQ9YihudWxsKSxZMT1iKEgpO1kxLmN1cnJlbnQ9SDtsZXQgYzA9YihudWxsKSxbUjAsYjFdPWsobnVsbCk7aigoKT0+e2xldCBEPWMwLmN1cnJlbnQ7aWYoIUR8fHR5cGVvZiBSZXNpemVPYnNlcnZlcj4idSIpcmV0dXJuO2xldCBXPW5ldyBSZXNpemVPYnNlcnZlcigoTik9PntsZXQgTT1OWzBdPy5jb250ZW50UmVjdDtpZihNKWIxKHt3aWR0aDpNLndpZHRoLGhlaWdodDpNLmhlaWdodH0pfSk7cmV0dXJuIFcub2JzZXJ2ZShEKSwoKT0+Vy5kaXNjb25uZWN0KCl9LFtdKTtsZXRbUDAsbDBdPWsoMCksVTA9YigwKSxbaDAsZzBdPWsoITEpLEwwPWIobnVsbCk7aigoKT0+e2lmKFA9PT0icG9vciIpe2lmKGcwKCEwKSxMMC5jdXJyZW50KWNsZWFyVGltZW91dChMMC5jdXJyZW50KTtMMC5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntnMCghMSksTDAuY3VycmVudD1udWxsfSwzMDAwKX1lbHNlIGlmKGcwKCExKSxMMC5jdXJyZW50KWNsZWFyVGltZW91dChMMC5jdXJyZW50KSxMMC5jdXJyZW50PW51bGw7cmV0dXJuKCk9PntpZihMMC5jdXJyZW50KWNsZWFyVGltZW91dChMMC5jdXJyZW50KX19LFtQXSk7bGV0IGEwPWAke1h9L3N0cmVhbS5tanBlZ2A7aigoKT0+e2QuY3VycmVudD1udWxsLHkobnVsbCl9LFtYXSk7bGV0IEkwPVIoKEQpPT57aWYoIUR8fEQud2lkdGg8PTB8fEQuaGVpZ2h0PD0wKXJldHVybjtsZXQgVz1kLmN1cnJlbnQsTj1ELm9yaWVudGF0aW9uPT09dm9pZCAwJiZXPy5vcmllbnRhdGlvbj97Li4uRCxvcmllbnRhdGlvbjpXLm9yaWVudGF0aW9ufTpEO2lmKFcmJlcud2lkdGg9PT1OLndpZHRoJiZXLmhlaWdodD09PU4uaGVpZ2h0JiZXLm9yaWVudGF0aW9uPT09Ti5vcmllbnRhdGlvbilyZXR1cm47ZC5jdXJyZW50PU4seShOKSxZMS5jdXJyZW50Py4oTil9LFtdKSxpMD1iKFUpO2kwLmN1cnJlbnQ9VSxqKCgpPT57aTAuY3VycmVudD8uKGMpfSxbY10pLGooKCk9PntpZihGJiZWKUkwKFYpfSxbRixWLEkwXSk7bGV0IE0wPWIoITEpO00wLmN1cnJlbnQ9YztsZXQgQTA9YihudWxsKTtqKCgpPT57aWYoIUZ8fCFMKXJldHVybjtsZXQgVz1zZXRUaW1lb3V0KCgpPT57aWYoIU0wLmN1cnJlbnQpXzAoIlN0cmVhbSBpcyBub3QgcHJvZHVjaW5nIGZyYW1lcy4gVGhlIHNpbXVsYXRvciBtYXkgaGF2ZSBzdG9wcGVkIOKAlCB0cnkgcmVjb25uZWN0aW5nLiIpfSw2MDAwKSxOPUwoKE0pPT57VTAuY3VycmVudCsrLEQwLmN1cnJlbnQ9RGF0ZS5ub3coKTtsZXQgRT1JLmN1cnJlbnQ7aWYoRSl7aWYoQTAuY3VycmVudClVUkwucmV2b2tlT2JqZWN0VVJMKEEwLmN1cnJlbnQpO0EwLmN1cnJlbnQ9TSxFLnNyYz1NfWlmKCFNMC5jdXJyZW50KWNsZWFyVGltZW91dChXKSxlKCEwKSxfMChudWxsKX0pO3JldHVybigpPT57aWYoY2xlYXJUaW1lb3V0KFcpLE4/LigpLEEwLmN1cnJlbnQpVVJMLnJldm9rZU9iamVjdFVSTChBMC5jdXJyZW50KSxBMC5jdXJyZW50PW51bGx9fSxbRixMXSk7bGV0IFgwPVIoKEQpPT57bGV0IFc9RzEoZC5jdXJyZW50KS5pbnB1dE9yaWVudGF0aW9uLE49SjEoVyxELngsRC55KSxNPUQuZWRnZT09PXZvaWQgMD92b2lkIDA6WDkoVyxELmVkZ2UpLEU9TT09PXZvaWQgMD97dHlwZTpELnR5cGUsLi4uTn06e3R5cGU6RC50eXBlLC4uLk4sZWRnZTpNfTtpZihGKXtfPy4oRSk7cmV0dXJufWxldCBtPWguY3VycmVudDtpZighbXx8bS5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pcmV0dXJuO2xldCBvPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeShFKSkscj1uZXcgVWludDhBcnJheSgxK28ubGVuZ3RoKTtyWzBdPUY0LHIuc2V0KG8sMSksbS5zZW5kKHIpfSxbRixfXSksYjA9UigoRCk9PntpZihGKXt6Py4oRCk7cmV0dXJufWxldCBXPWguY3VycmVudDtpZighV3x8Vy5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pcmV0dXJuO2xldCBOPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeSh7YnV0dG9uOkR9KSksTT1uZXcgVWludDhBcnJheSgxK04ubGVuZ3RoKTtNWzBdPU40LE0uc2V0KE4sMSksVy5zZW5kKE0pfSxbRix6XSksejA9UigoRCk9PntsZXQgVz1HMShkLmN1cnJlbnQpLmlucHV0T3JpZW50YXRpb24sTj1KMShXLEQueDEsRC55MSksTT1KMShXLEQueDIsRC55MiksRT17dHlwZTpELnR5cGUseDE6Ti54LHkxOk4ueSx4MjpNLngseTI6TS55fTtpZihGKXskPy4oRSk7cmV0dXJufWxldCBtPWguY3VycmVudDtpZighbXx8bS5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pcmV0dXJuO2xldCBvPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeShFKSkscj1uZXcgVWludDhBcnJheSgxK28ubGVuZ3RoKTtyWzBdPVA0LHIuc2V0KG8sMSksbS5zZW5kKHIpfSxbRiwkXSk7aigoKT0+e2lmKEYpcmV0dXJuO2xldCBEPW5ldyBBYm9ydENvbnRyb2xsZXIsVz0oKT0+e2ZldGNoKGAke1h9L2NvbmZpZ2Ase3NpZ25hbDpELnNpZ25hbH0pLnRoZW4oKFExKT0+UTEuanNvbigpKS50aGVuKChRMSk9PntJMChRMSl9KS5jYXRjaCgoKT0+e30pfTtXKCk7bGV0IE49c2V0SW50ZXJ2YWwoVywxMDAwKSxNPUc/P1gucmVwbGFjZSgvXmh0dHAvLCJ3cyIpKyIvd3MiLEU9bmV3IFdlYlNvY2tldChNKTtFLmJpbmFyeVR5cGU9ImFycmF5YnVmZmVyIixoLmN1cnJlbnQ9RSxFLm9ub3Blbj0oKT0+e2UoITApLF8wKG51bGwpfSxFLm9uY2xvc2U9KCk9PntlKCExKX0sRS5vbmVycm9yPSgpPT57XzAoIldlYlNvY2tldCBjb25uZWN0aW9uIGZhaWxlZCIpLGUoITEpfTtsZXQgbT1uZXcgQWJvcnRDb250cm9sbGVyLG89c2V0SW50ZXJ2YWwoKCk9PntsMChVMC5jdXJyZW50KSxVMC5jdXJyZW50PTB9LDEwMDApLHI9ITEsVzk9c2V0VGltZW91dCgoKT0+e2lmKCFyKV8wKCJTdHJlYW0gaXMgbm90IHByb2R1Y2luZyBmcmFtZXMuIFRoZSBzaW11bGF0b3IgbWF5IGhhdmUgc3RvcHBlZCDigJQgdHJ5IHJlY29ubmVjdGluZy4iKX0sNjAwMCk7cmV0dXJuKGFzeW5jKCk9Pnt0cnl7bGV0IEs5PShhd2FpdCBmZXRjaChhMCx7c2lnbmFsOm0uc2lnbmFsfSkpLmJvZHk/LmdldFJlYWRlcigpO2lmKCFLOSlyZXR1cm47bGV0IFMxPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSgiLS1mcmFtZSIpO3doaWxlKCEwKXtsZXR7ZG9uZTpnOCx2YWx1ZTp2MX09YXdhaXQgSzkucmVhZCgpO2lmKGc4KWJyZWFrO2lmKHYxKWZvcihsZXQgeTE9MDt5MTw9djEubGVuZ3RoLVMxLmxlbmd0aDt5MSsrKXtsZXQgSDk9ITA7Zm9yKGxldCBfMT0wO18xPFMxLmxlbmd0aDtfMSsrKWlmKHYxW3kxK18xXSE9PVMxW18xXSl7SDk9ITE7YnJlYWt9aWYoSDkpe2lmKFUwLmN1cnJlbnQrKywhcilyPSEwLGNsZWFyVGltZW91dChXOSl9fX19Y2F0Y2h7fX0pKCksKCk9PnttLmFib3J0KCksRC5hYm9ydCgpLGNsZWFySW50ZXJ2YWwoTiksY2xlYXJJbnRlcnZhbChvKSxjbGVhclRpbWVvdXQoVzkpLEUuY2xvc2UoKSxoLmN1cnJlbnQ9bnVsbH19LFtYLGEwLEYsSTAsR10pO2xldCBEMD1iKDApO2ooKCk9PntpZighRilyZXR1cm47bGV0IEQ9MjAwMCxXPSgpPT57bGV0IEU9RDAuY3VycmVudDtpZighRXx8IU0wLmN1cnJlbnQpcmV0dXJuO2lmKERhdGUubm93KCktRT5EKWUoITEpfSxOPXNldEludGVydmFsKCgpPT57bDAoVTAuY3VycmVudCksVTAuY3VycmVudD0wLFcoKX0sMTAwMCksTT0oKT0+e2lmKCFkb2N1bWVudC5oaWRkZW4pVygpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsTSksKCk9PntjbGVhckludGVydmFsKE4pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLE0pfX0sW0ZdKTtsZXQgbzA9UigoKT0+e3JldHVybiBGP0kuY3VycmVudDpBLmN1cnJlbnR9LFtGXSksJDA9UigoKT0+e3JldHVybiBzLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPz9vMCgpPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKT8/bnVsbH0sW28wXSksajA9UigoRCxXKT0+e2xldCBOPSQwKCk7aWYoIU4pcmV0dXJuO2xldCBNPShXLmNsaWVudFgtTi5sZWZ0KS9OLndpZHRoLEU9KFcuY2xpZW50WS1OLnRvcCkvTi5oZWlnaHQ7WDAoe3R5cGU6RCx4Ok0seTpFfSl9LFskMCxYMF0pLEcwPWIoITEpLEs9YighMSksVD1iKCExKSxTPWIoe2R4OjAsZHk6MH0pLHY9YighMSksW3UsaV09ayghMSksVzA9Yih7eDowLjUseTowLjV9KSxbcCxnXT1rKG51bGwpO2ooKCk9PntsZXQgRD0oTik9PntpZihOLmtleT09PSJBbHQiKWkoITApfSxXPShOKT0+e2lmKE4ua2V5PT09IkFsdCIpe2lmKGkoITEpLCFLLmN1cnJlbnQpZyhudWxsKX19O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsRCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixXKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixEKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLFcpfX0sW10pLGooKCk9PntpZih1JiYhSy5jdXJyZW50KXtsZXQgRD1XMC5jdXJyZW50O2coe3gxOkQueCx5MTpELnkseDI6MS1ELngseTI6MS1ELnl9KX1lbHNlIGlmKCF1JiYhSy5jdXJyZW50KWcobnVsbCl9LFt1XSk7bGV0IFkwPWIobnVsbCksUzA9YighMSksSzA9YigwKSxtMD1SKChELFcpPT57UzAuY3VycmVudD0hMDtsZXQgTj1ZMC5jdXJyZW50O2lmKE4pY2FuY2VsQW5pbWF0aW9uRnJhbWUoSzAuY3VycmVudCksSzAuY3VycmVudD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntOLnN0eWxlLmxlZnQ9YCR7RCoxMDB9JWAsTi5zdHlsZS50b3A9YCR7VyoxMDB9JWAsTi5zdHlsZS5kaXNwbGF5PSJibG9jayJ9KX0sW10pLHYwPVIoKEQsVyk9PntpZighUzAuY3VycmVudClyZXR1cm47bGV0IE49WTAuY3VycmVudDtpZihOKWNhbmNlbEFuaW1hdGlvbkZyYW1lKEswLmN1cnJlbnQpLEswLmN1cnJlbnQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Ti5zdHlsZS5sZWZ0PWAke0QqMTAwfSVgLE4uc3R5bGUudG9wPWAke1cqMTAwfSVgfSl9LFtdKSx3MD1SKCgpPT57UzAuY3VycmVudD0hMTtsZXQgRD1ZMC5jdXJyZW50O2lmKEQpY2FuY2VsQW5pbWF0aW9uRnJhbWUoSzAuY3VycmVudCksRC5zdHlsZS5kaXNwbGF5PSJub25lIn0sW10pLFoxPWIoMCkscjA9YihudWxsKSxoOD1SKCgpPT57bGV0IEQ9RGF0ZS5ub3coKSxXPUQtWjEuY3VycmVudDtpZihaMS5jdXJyZW50PUQsVzwzMDApe2lmKHIwLmN1cnJlbnQpY2xlYXJUaW1lb3V0KHIwLmN1cnJlbnQpLHIwLmN1cnJlbnQ9bnVsbDtpZihaKVooKTtlbHNlIGIwKCJhcHBfc3dpdGNoZXIiKX1lbHNlIHIwLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e2lmKFopWigpO2Vsc2UgYjAoImhvbWUiKTtyMC5jdXJyZW50PW51bGx9LDMwMCl9LFtiMCxaXSksajE9RzEoZiksczA9ajEuZGlzcGxheUNvbmZpZyxUMD0oKCk9PntpZighczB8fCFSMClyZXR1cm4gbnVsbDtpZihSMC53aWR0aD09PTB8fFIwLmhlaWdodD09PTApcmV0dXJuIG51bGw7bGV0IEQ9TWF0aC5taW4oUjAud2lkdGgvczAud2lkdGgsUjAuaGVpZ2h0L3MwLmhlaWdodCk7cmV0dXJue3dpZHRoOnMwLndpZHRoKkQsaGVpZ2h0OnMwLmhlaWdodCpEfX0pKCkscTE9ajEucm90YXRpb25EZWdyZWVzLFY5PWoxLm5lZWRzQ3NzUm90YXRpb24mJk1hdGguYWJzKHExKT09PTkwLEw5PVksejk9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiI1MCUiLGxlZnQ6IjUwJSIsd2lkdGg6VjkmJlQwP2Ake1QwLmhlaWdodH1weGA6IjEwMCUiLGhlaWdodDpWOSYmVDA/YCR7VDAud2lkdGh9cHhgOiIxMDAlIix0cmFuc2Zvcm06YHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSR7cTE9PT0wPyIiOmAgcm90YXRlKCR7cTF9ZGVnKWB9YCx0cmFuc2Zvcm1PcmlnaW46ImNlbnRlciBjZW50ZXIiLGN1cnNvcjpGOCxkaXNwbGF5OiJibG9jayIsdXNlclNlbGVjdDoibm9uZSIsV2Via2l0VXNlclNlbGVjdDoibm9uZSIsdG91Y2hBY3Rpb246Im5vbmUiLC4uLlksLi4ucTE9PT0wP3t9Ontib3JkZXJSYWRpdXM6MCxjb3JuZXJTaGFwZTp2b2lkIDB9fTtyZXR1cm4gUSgiZGl2Iix7c3R5bGU6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZmxleDoxLC4uLk8/e306e2JvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikifSxvdmVyZmxvdzoiaGlkZGVuIixtaW5XaWR0aDowLG1pbkhlaWdodDowLC4uLkp9LGNsYXNzTmFtZTpxLGNoaWxkcmVuOltRKCJkaXYiLHtyZWY6YzAsc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsZmxleDoxLG1pbkhlaWdodDowLG1pbldpZHRoOjAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIn0sY2hpbGRyZW46USgiZGl2Iix7cmVmOnMsc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsd2lkdGg6VDA/YCR7VDAud2lkdGh9cHhgOiIxMDAlIixoZWlnaHQ6VDA/YCR7VDAuaGVpZ2h0fXB4YDoiMTAwJSIsb3ZlcmZsb3c6ImhpZGRlbiIsYm9yZGVyUmFkaXVzOkw5Py5ib3JkZXJSYWRpdXMsY29ybmVyU2hhcGU6TDk/LmNvcm5lclNoYXBlfSxjaGlsZHJlbjpbUSgiaW1nIix7cmVmOkEsc3JjOkY/dm9pZCAwOmEwLGRyYWdnYWJsZTohMSxvbkxvYWQ6KEQpPT57bGV0IFc9RC5jdXJyZW50VGFyZ2V0O2lmKFcubmF0dXJhbFdpZHRoPjAmJlcubmF0dXJhbEhlaWdodD4wKUkwKHt3aWR0aDpXLm5hdHVyYWxXaWR0aCxoZWlnaHQ6Vy5uYXR1cmFsSGVpZ2h0fSl9LHN0eWxlOkY/e2Rpc3BsYXk6Im5vbmUifTp6OX0pLEYmJlEoImltZyIse3JlZjpJLGRyYWdnYWJsZTohMSxvbkxvYWQ6KEQpPT57bGV0IFc9RC5jdXJyZW50VGFyZ2V0O2lmKFcubmF0dXJhbFdpZHRoPjAmJlcubmF0dXJhbEhlaWdodD4wKUkwKHt3aWR0aDpXLm5hdHVyYWxXaWR0aCxoZWlnaHQ6Vy5uYXR1cmFsSGVpZ2h0fSl9LHN0eWxlOno5fSksUSgiZGl2Iix7c3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaW5zZXQ6MCxjdXJzb3I6RjgsdG91Y2hBY3Rpb246Im5vbmUifSxvbk1vdXNlRG93bjooRCk9PntELnByZXZlbnREZWZhdWx0KCk7bGV0IFc9JDAoKTtpZighVylyZXR1cm47bGV0IE49KEQuY2xpZW50WC1XLmxlZnQpL1cud2lkdGgsTT0oRC5jbGllbnRZLVcudG9wKS9XLmhlaWdodDtpZihELmFsdEtleSl7Sy5jdXJyZW50PSEwLFQuY3VycmVudD1ELnNoaWZ0S2V5O2xldCBFPXt4MTpOLHkxOk0seDI6MS1OLHkyOjEtTX07Uy5jdXJyZW50PXtkeDoxLU4tTixkeToxLU0tTX0sZyhFKSx6MCh7dHlwZToiYmVnaW4iLC4uLkV9KTtyZXR1cm59aWYobTAoTixNKSxNPjAuODgpRzAuY3VycmVudD0hMCxYMCh7dHlwZToiYmVnaW4iLHg6Tix5Ok0sZWRnZTpDMH0pO2Vsc2UgRzAuY3VycmVudD0hMSxqMCgiYmVnaW4iLEQpfSxvbk1vdXNlTW92ZTooRCk9PntsZXQgVz0kMCgpO2lmKCFXKXJldHVybjtsZXQgTj0oRC5jbGllbnRYLVcubGVmdCkvVy53aWR0aCxNPShELmNsaWVudFktVy50b3ApL1cuaGVpZ2h0O2lmKFcwLmN1cnJlbnQ9e3g6Tix5Ok19LEQuYnV0dG9ucz09PTApe2lmKEQuYWx0S2V5KWcoe3gxOk4seTE6TSx4MjoxLU4seTI6MS1NfSk7cmV0dXJufWlmKEsuY3VycmVudCl7bGV0IEU7aWYoVC5jdXJyZW50KXtsZXQgbT1TLmN1cnJlbnQ7RT17eDE6Tix5MTpNLHgyOk4rbS5keCx5MjpNK20uZHl9fWVsc2UgRT17eDE6Tix5MTpNLHgyOjEtTix5MjoxLU19O2coRSksejAoe3R5cGU6Im1vdmUiLC4uLkV9KTtyZXR1cm59aWYodjAoTixNKSxHMC5jdXJyZW50KVgwKHt0eXBlOiJtb3ZlIix4Ok4seTpNLGVkZ2U6QzB9KTtlbHNlIGowKCJtb3ZlIixEKX0sb25Nb3VzZVVwOihEKT0+e2lmKEsuY3VycmVudCl7bGV0IFc9JDAoKTtpZihXKXtsZXQgTj0oRC5jbGllbnRYLVcubGVmdCkvVy53aWR0aCxNPShELmNsaWVudFktVy50b3ApL1cuaGVpZ2h0O2lmKFQuY3VycmVudCl7bGV0IEU9Uy5jdXJyZW50O3owKHt0eXBlOiJlbmQiLHgxOk4seTE6TSx4MjpOK0UuZHgseTI6TStFLmR5fSl9ZWxzZSB6MCh7dHlwZToiZW5kIix4MTpOLHkxOk0seDI6MS1OLHkyOjEtTX0pfWlmKEsuY3VycmVudD0hMSwhRC5hbHRLZXkpZyhudWxsKTtyZXR1cm59aWYodzAoKSxHMC5jdXJyZW50KXtsZXQgVz0kMCgpO2lmKFcpe2xldCBOPShELmNsaWVudFgtVy5sZWZ0KS9XLndpZHRoLE09KEQuY2xpZW50WS1XLnRvcCkvVy5oZWlnaHQ7WDAoe3R5cGU6ImVuZCIseDpOLHk6TSxlZGdlOkMwfSl9RzAuY3VycmVudD0hMTtyZXR1cm59ajAoImVuZCIsRCl9LG9uTW91c2VMZWF2ZTooRCk9PntpZihLLmN1cnJlbnQpe2lmKHApejAoe3R5cGU6ImVuZCIsLi4ucH0pO0suY3VycmVudD0hMSxnKG51bGwpO3JldHVybn1pZih3MCgpLEcwLmN1cnJlbnQpe2xldCBXPSQwKCk7aWYoVyl7bGV0IE49KEQuY2xpZW50WC1XLmxlZnQpL1cud2lkdGgsTT0oRC5jbGllbnRZLVcudG9wKS9XLmhlaWdodDtYMCh7dHlwZToiZW5kIix4Ok4seTpNLGVkZ2U6QzB9KX1HMC5jdXJyZW50PSExO3JldHVybn1pZihELmJ1dHRvbnM+MClqMCgiZW5kIixEKTtnKG51bGwpfSxvblRvdWNoU3RhcnQ6KEQpPT57RC5wcmV2ZW50RGVmYXVsdCgpO2xldCBXPSQwKCk7aWYoIVcpcmV0dXJuO2lmKEQudG91Y2hlcy5sZW5ndGg+PTIpe3cwKCk7bGV0IG09RC50b3VjaGVzWzBdLG89RC50b3VjaGVzWzFdLHI9e3gxOihtLmNsaWVudFgtVy5sZWZ0KS9XLndpZHRoLHkxOihtLmNsaWVudFktVy50b3ApL1cuaGVpZ2h0LHgyOihvLmNsaWVudFgtVy5sZWZ0KS9XLndpZHRoLHkyOihvLmNsaWVudFktVy50b3ApL1cuaGVpZ2h0fTtpZighdi5jdXJyZW50JiYhRzAuY3VycmVudClYMCh7dHlwZToiZW5kIix4OnIueDEseTpyLnkxfSk7di5jdXJyZW50PSEwLEsuY3VycmVudD0hMCxHMC5jdXJyZW50PSExLGcociksejAoe3R5cGU6ImJlZ2luIiwuLi5yfSk7cmV0dXJufWxldCBOPUQudG91Y2hlc1swXTtpZighTilyZXR1cm47bGV0IE09KE4uY2xpZW50WC1XLmxlZnQpL1cud2lkdGgsRT0oTi5jbGllbnRZLVcudG9wKS9XLmhlaWdodDtpZihtMChNLEUpLEU+MC44OClHMC5jdXJyZW50PSEwLFgwKHt0eXBlOiJiZWdpbiIseDpNLHk6RSxlZGdlOkMwfSk7ZWxzZSBHMC5jdXJyZW50PSExLFgwKHt0eXBlOiJiZWdpbiIseDpNLHk6RX0pfSxvblRvdWNoTW92ZTooRCk9PntELnByZXZlbnREZWZhdWx0KCk7bGV0IFc9JDAoKTtpZighVylyZXR1cm47aWYodi5jdXJyZW50JiZELnRvdWNoZXMubGVuZ3RoPj0yKXtsZXQgbT1ELnRvdWNoZXNbMF0sbz1ELnRvdWNoZXNbMV0scj17eDE6KG0uY2xpZW50WC1XLmxlZnQpL1cud2lkdGgseTE6KG0uY2xpZW50WS1XLnRvcCkvVy5oZWlnaHQseDI6KG8uY2xpZW50WC1XLmxlZnQpL1cud2lkdGgseTI6KG8uY2xpZW50WS1XLnRvcCkvVy5oZWlnaHR9O2cociksejAoe3R5cGU6Im1vdmUiLC4uLnJ9KTtyZXR1cm59bGV0IE49RC50b3VjaGVzWzBdO2lmKCFOKXJldHVybjtsZXQgTT0oTi5jbGllbnRYLVcubGVmdCkvVy53aWR0aCxFPShOLmNsaWVudFktVy50b3ApL1cuaGVpZ2h0O2lmKHYwKE0sRSksRzAuY3VycmVudClYMCh7dHlwZToibW92ZSIseDpNLHk6RSxlZGdlOkMwfSk7ZWxzZSBYMCh7dHlwZToibW92ZSIseDpNLHk6RX0pfSxvblRvdWNoRW5kOihEKT0+e0QucHJldmVudERlZmF1bHQoKTtsZXQgVz0kMCgpO2lmKCFXKXJldHVybjtpZih2LmN1cnJlbnQpe2lmKEQudG91Y2hlcy5sZW5ndGg8Mil7bGV0IG09RC5jaGFuZ2VkVG91Y2hlc1swXSxvPXA7aWYobSYmbyl6MCh7dHlwZToiZW5kIix4MToobS5jbGllbnRYLVcubGVmdCkvVy53aWR0aCx5MToobS5jbGllbnRZLVcudG9wKS9XLmhlaWdodCx4MjpvLngyLHkyOm8ueTJ9KTtlbHNlIGlmKG8pejAoe3R5cGU6ImVuZCIsLi4ub30pO3YuY3VycmVudD0hMSxLLmN1cnJlbnQ9ITEsZyhudWxsKX1yZXR1cm59bGV0IE49RC5jaGFuZ2VkVG91Y2hlc1swXTtpZighTilyZXR1cm47bGV0IE09KE4uY2xpZW50WC1XLmxlZnQpL1cud2lkdGgsRT0oTi5jbGllbnRZLVcudG9wKS9XLmhlaWdodDtpZih3MCgpLEcwLmN1cnJlbnQpWDAoe3R5cGU6ImVuZCIseDpNLHk6RSxlZGdlOkMwfSksRzAuY3VycmVudD0hMTtlbHNlIFgwKHt0eXBlOiJlbmQiLHg6TSx5OkV9KX19KSxRKCJkaXYiLHtyZWY6WTAsImRhdGEtdGVzdGlkIjoidG91Y2gtaW5kaWNhdG9yIixzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIix3aWR0aDoyNCxoZWlnaHQ6MjQsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6InJnYmEoNTksMTMwLDI0NiwwLjUpIixib3hTaGFkb3c6IjAgMCA4cHggcmdiYSg1OSwxMzAsMjQ2LDAuMykiLHRyYW5zZm9ybToidHJhbnNsYXRlKC01MCUsIC01MCUpIixwb2ludGVyRXZlbnRzOiJub25lIn19KSxwJiZRKGwse2NoaWxkcmVuOltRKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJmaW5nZXItZG90IixzdHlsZTpVOChwLngxLHAueTEpfSksUSgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZmluZ2VyLWRvdCIsc3R5bGU6VTgocC54MixwLnkyKX0pXX0pLCFjJiYhbiYmUSgiZGl2Iix7c3R5bGU6ey4uLk44LC4uLll8fHt9fSxjaGlsZHJlbjpRKCJzcGFuIix7c3R5bGU6e2NvbG9yOiIjODg4Iixmb250U2l6ZToxNH0sY2hpbGRyZW46IkNvbm5lY3RpbmcuLi4ifSl9KSxuJiZRKCJkaXYiLHtzdHlsZTpOOCxjaGlsZHJlbjpRKCJzcGFuIix7c3R5bGU6e2NvbG9yOiIjZjQ0Iixmb250U2l6ZToxNCxwYWRkaW5nOjIwLHRleHRBbGlnbjoiY2VudGVyIn0sY2hpbGRyZW46bn0pfSksaDAmJlEoImRpdiIse3N0eWxlOlU0LGNoaWxkcmVuOlEoInNwYW4iLHtzdHlsZTp7Y29sb3I6IiNmYmJmMjQiLGZvbnRTaXplOjEzLGZvbnRGYW1pbHk6Im1vbm9zcGFjZSJ9LGNoaWxkcmVuOiJTbG93IGNvbm5lY3Rpb24ifSl9KV19KX0pLCFPJiZRKCJkaXYiLHtzdHlsZTp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIscGFkZGluZzoiNHB4IDhweCIsYm9yZGVyVG9wOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSJ9LGNoaWxkcmVuOltRKCJidXR0b24iLHtvbkNsaWNrOmg4LHN0eWxlOntiYWNrZ3JvdW5kOiJub25lIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMikiLGNvbG9yOiIjYWFhIixmb250U2l6ZToxMSxmb250RmFtaWx5OiJtb25vc3BhY2UiLHBhZGRpbmc6IjJweCAxMHB4IixjdXJzb3I6InBvaW50ZXIiLGJvcmRlclJhZGl1czo0fSxjaGlsZHJlbjoiSG9tZSJ9KSxRKCJzcGFuIix7c3R5bGU6e2NvbG9yOlAwPjA/IiM0ZjQiOiIjODg4Iixmb250U2l6ZToxMixmb250RmFtaWx5OiJtb25vc3BhY2UiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjZ9LGNoaWxkcmVuOltQJiZRKCJzcGFuIix7ImRhdGEtdGVzdGlkIjoicXVhbGl0eS1kb3QiLHN0eWxlOnt3aWR0aDo4LGhlaWdodDo4LGJvcmRlclJhZGl1czoiNTAlIixkaXNwbGF5OiJpbmxpbmUtYmxvY2siLGJhY2tncm91bmQ6UD09PSJnb29kIj8iIzRhZGU4MCI6UD09PSJkZWdyYWRlZCI/IiNmYWNjMTUiOiIjZWY0NDQ0In19KSxQMCwiIGZwcyJdfSldfSldfSl9dmFyIFU0PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDo4LGxlZnQ6IjUwJSIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVYKC01MCUpIixiYWNrZ3JvdW5kOiJyZ2JhKDAsMCwwLDAuNykiLGJvcmRlclJhZGl1czo2LHBhZGRpbmc6IjRweCAxMnB4Iixwb2ludGVyRXZlbnRzOiJub25lIn0sTjg9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaW5zZXQ6MCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGJhY2tncm91bmQ6InJnYmEoMCwwLDAsMC44KSJ9LFA4PTIwO2Z1bmN0aW9uIFU4KFgsRyl7cmV0dXJue3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDpgJHtYKjEwMH0lYCx0b3A6YCR7RyoxMDB9JWAsd2lkdGg6UDgsaGVpZ2h0OlA4LGJvcmRlclJhZGl1czoiNTAlIixiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNDUpIixib3JkZXI6IjEuMjVweCBzb2xpZCByZ2JhKDAsMCwwLDAuNTUpIixib3hTaGFkb3c6IjAgMXB4IDNweCByZ2JhKDAsMCwwLDAuNDUpIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgtNTAlLCAtNTAlKSIscG9pbnRlckV2ZW50czoibm9uZSJ9fWZ1bmN0aW9uIGQwKFgpe2lmKCFYKXJldHVybiJpcGhvbmUiO2xldCBHPVgudG9Mb3dlckNhc2UoKTtpZihHLmluY2x1ZGVzKCJpcGFkIikpcmV0dXJuImlwYWQiO2lmKEcuaW5jbHVkZXMoIndhdGNoIikpcmV0dXJuIndhdGNoIjtpZihHLmluY2x1ZGVzKCJ2aXNpb24iKSlyZXR1cm4idmlzaW9uIjtyZXR1cm4iaXBob25lIn12YXIgVjA9e2lwaG9uZTp7d2lkdGg6NDI3LGhlaWdodDo4ODEsYmV6ZWxYOjE4LGJlemVsWToxOCxpbm5lclJhZGl1czo1NX0saXBhZDp7d2lkdGg6NDMwLGhlaWdodDo2MDUsYmV6ZWxYOjE2LGJlemVsWToxNixpbm5lclJhZGl1czoxMn0sd2F0Y2g6e3dpZHRoOjI3NCxoZWlnaHQ6MzIyLGJlemVsWDoxMixiZXplbFk6MTIsaW5uZXJSYWRpdXM6Nzl9LHZpc2lvbjp7d2lkdGg6NjQwLGhlaWdodDo0MDAsYmV6ZWxYOjEyLGJlemVsWToxMixpbm5lclJhZGl1czozMn19LHM2PVYwLmlwaG9uZS53aWR0aCx0Nj1WMC5pcGhvbmUuaGVpZ2h0LG42PVYwLmlwaG9uZS5iZXplbFgsZTY9VjAuaXBob25lLmJlemVsWSxYWD1WMC5pcGhvbmUuaW5uZXJSYWRpdXMsSTg9eyJpUGhvbmUgMTcgUHJvIE1heCI6e3dpZHRoOjEzMjAsaGVpZ2h0OjI4Njh9LCJpUGhvbmUgMTcgUHJvIjp7d2lkdGg6MTIwNixoZWlnaHQ6MjYyMn0sImlQaG9uZSAxNyI6e3dpZHRoOjEyMDYsaGVpZ2h0OjI2MjJ9LCJpUGhvbmUgQWlyIjp7d2lkdGg6MTI2MCxoZWlnaHQ6MjczNn0sImlQaG9uZSAxNiBQcm8gTWF4Ijp7d2lkdGg6MTMyMCxoZWlnaHQ6Mjg2OH0sImlQaG9uZSAxNiBQcm8iOnt3aWR0aDoxMjA2LGhlaWdodDoyNjIyfSwiaVBob25lIDE2IFBsdXMiOnt3aWR0aDoxMjkwLGhlaWdodDoyNzk2fSwiaVBob25lIDE2Ijp7d2lkdGg6MTE3OSxoZWlnaHQ6MjU1Nn0sImlQaG9uZSAxNmUiOnt3aWR0aDoxMTcwLGhlaWdodDoyNTMyfSwiaVBob25lIDE1IFBybyBNYXgiOnt3aWR0aDoxMjkwLGhlaWdodDoyNzk2fSwiaVBob25lIDE1IFBybyI6e3dpZHRoOjExNzksaGVpZ2h0OjI1NTZ9LCJpUGhvbmUgMTUgUGx1cyI6e3dpZHRoOjEyOTAsaGVpZ2h0OjI3OTZ9LCJpUGhvbmUgMTUiOnt3aWR0aDoxMTc5LGhlaWdodDoyNTU2fSwiaVBhZCBQcm8gMTMtaW5jaCAoTTUpIjp7d2lkdGg6MjA2NCxoZWlnaHQ6Mjc1Mn0sImlQYWQgUHJvIDExLWluY2ggKE01KSI6e3dpZHRoOjE2NjgsaGVpZ2h0OjI0MjB9LCJpUGFkIFBybyAxMy1pbmNoIChNNCkiOnt3aWR0aDoyMDY0LGhlaWdodDoyNzUyfSwiaVBhZCBQcm8gMTEtaW5jaCAoTTQpIjp7d2lkdGg6MTY2OCxoZWlnaHQ6MjQyMH0sImlQYWQgQWlyIDEzLWluY2ggKE0zKSI6e3dpZHRoOjIwNDgsaGVpZ2h0OjI3MzJ9LCJpUGFkIEFpciAxMS1pbmNoIChNMykiOnt3aWR0aDoxNjQwLGhlaWdodDoyMzYwfSwiaVBhZCAoQTE2KSI6e3dpZHRoOjE2NDAsaGVpZ2h0OjIzNjB9LCJpUGFkIG1pbmkgKEExNyBQcm8pIjp7d2lkdGg6MTQ4OCxoZWlnaHQ6MjI2Nn0sIkFwcGxlIFdhdGNoIFVsdHJhIDMgKDQ5bW0pIjp7d2lkdGg6NDIyLGhlaWdodDo1MTR9LCJBcHBsZSBXYXRjaCBVbHRyYSAyICg0OW1tKSI6e3dpZHRoOjQxMCxoZWlnaHQ6NTAyfSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDExICg0Nm1tKSI6e3dpZHRoOjQxNixoZWlnaHQ6NDk2fSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDExICg0Mm1tKSI6e3dpZHRoOjM3NCxoZWlnaHQ6NDQ2fSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDEwICg0Nm1tKSI6e3dpZHRoOjQxNixoZWlnaHQ6NDk2fSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDEwICg0Mm1tKSI6e3dpZHRoOjM3NCxoZWlnaHQ6NDQ2fSwiQXBwbGUgV2F0Y2ggU0UgMyAoNDRtbSkiOnt3aWR0aDozNjgsaGVpZ2h0OjQ0OH0sIkFwcGxlIFdhdGNoIFNFIDMgKDQwbW0pIjp7d2lkdGg6MzI0LGhlaWdodDozOTR9LCJBcHBsZSBXYXRjaCBTRSAoNDRtbSkiOnt3aWR0aDozNjgsaGVpZ2h0OjQ0OH0sIkFwcGxlIFdhdGNoIFNFICg0MG1tKSI6e3dpZHRoOjMyNCxoZWlnaHQ6Mzk0fSwiQXBwbGUgVmlzaW9uIFBybyI6e3dpZHRoOjE5MjAsaGVpZ2h0OjEwODB9fTtmdW5jdGlvbiBJMShYLEcpe2xldCBKPVgmJlgud2lkdGg+MCYmWC5oZWlnaHQ+MD9YOkcsWT1QMShKKTtpZihZKXJldHVybmAke1kud2lkdGh9IC8gJHtZLmhlaWdodH1gO3JldHVybmAke1YwLmlwaG9uZS53aWR0aC0yKlYwLmlwaG9uZS5iZXplbFh9IC8gJHtWMC5pcGhvbmUuaGVpZ2h0LTIqVjAuaXBob25lLmJlemVsWX1gfWZ1bmN0aW9uIE0xKFg9ImlwaG9uZSIsRyl7bGV0IEo9Rz9JOFtHXTpudWxsO2lmKEopcmV0dXJuIEo7bGV0IFk9VjBbWF07cmV0dXJue3dpZHRoOlkud2lkdGgtMipZLmJlemVsWCxoZWlnaHQ6WS5oZWlnaHQtMipZLmJlemVsWX19ZnVuY3Rpb24gQTEoWD0iaXBob25lIixHKXtpZihYMShHKSlzd2l0Y2goWCl7Y2FzZSJpcGFkIjpyZXR1cm4gNzIwO2Nhc2UidmlzaW9uIjpyZXR1cm4gNTgwO2Nhc2Uid2F0Y2giOnJldHVybiAyMDA7ZGVmYXVsdDpyZXR1cm4gNjIwfXN3aXRjaChYKXtjYXNlImlwYWQiOnJldHVybiA0MDA7Y2FzZSJ3YXRjaCI6cmV0dXJuIDIwMDtjYXNlInZpc2lvbiI6cmV0dXJuIDU4MDtkZWZhdWx0OnJldHVybiAzMjB9fWZ1bmN0aW9uIHcxKFg9ImlwaG9uZSIsRyl7bGV0IEo9VjBbWF0sWT1KLndpZHRoLTIqSi5iZXplbFgscT1KLmhlaWdodC0yKkouYmV6ZWxZO2lmKFk8cSYmWDEoRykpcmV0dXJuYCR7Si5pbm5lclJhZGl1cy9xKjEwMH0lIC8gJHtKLmlubmVyUmFkaXVzL1kqMTAwfSVgO3JldHVybmAke0ouaW5uZXJSYWRpdXMvWSoxMDB9JSAvICR7Si5pbm5lclJhZGl1cy9xKjEwMH0lYH12YXIgRzk9RjAobnVsbCk7ZnVuY3Rpb24gVDEoWCl7bGV0IEc9RTAoRzkpO2lmKCFHKXRocm93IEVycm9yKGA8U2ltdWxhdG9yVG9vbGJhci4ke1h9PiBtdXN0IGJlIHJlbmRlcmVkIGluc2lkZSA8U2ltdWxhdG9yVG9vbGJhcj5gKTtyZXR1cm4gR312YXIgdzQ9e2Rpc3BsYXk6ImZsZXgiLGZsZXhXcmFwOiJ3cmFwIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixnYXA6IjRweCAxMnB4IixwYWRkaW5nOiI4cHggMTJweCIsYm9yZGVyUmFkaXVzOjI0LGJhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKSIsYm94U2hhZG93OiIwIDFweCAycHggcmdiYSgwLDAsMCwwLjIpIixtaW5XaWR0aDoyNDAsd2lkdGg6IjEwMCUifTtmdW5jdGlvbiBUNCh7ZXhlYzpYLG9uUm90YXRlOkcsb3JpZW50YXRpb246SixkZXZpY2VVZGlkOlksZGV2aWNlTmFtZTpxLGRldmljZVJ1bnRpbWU6WixzdHJlYW1pbmc6Xz0hMSxkaXNhYmxlZDokPSExLGNoaWxkcmVuOnosc3R5bGU6TCwuLi5CfSl7bGV0IFY9ZDAocSksTz17ZXhlYzpYLG9uUm90YXRlOkcsb3JpZW50YXRpb246SixkZXZpY2VVZGlkOlksZGV2aWNlTmFtZTpxLGRldmljZVJ1bnRpbWU6WixkZXZpY2VUeXBlOlYsc3RyZWFtaW5nOl8sZGlzYWJsZWQ6JHx8IVl8fCFffTtyZXR1cm4gUShHOS5Qcm92aWRlcix7dmFsdWU6TyxjaGlsZHJlbjpRKCJkaXYiLHsiZGF0YS1zaW11bGF0b3ItdG9vbGJhciI6ITAsc3R5bGU6ey4uLnc0LC4uLkx9LC4uLkIsY2hpbGRyZW46en0pfSl9dmFyIGs0PXtkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGFsaWduSXRlbXM6ImZsZXgtc3RhcnQiLHRleHRBbGlnbjoibGVmdCIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6IiNmZmYiLHBhZGRpbmc6IjJweCA0cHgiLG1hcmdpbjoiLTJweCAtNHB4Iixib3JkZXJSYWRpdXM6NixjdXJzb3I6InBvaW50ZXIiLG1pbldpZHRoOjAsbWF4V2lkdGg6IjEwMCUiLGxpbmVIZWlnaHQ6MS4yLGZvbnRGYW1pbHk6ImluaGVyaXQifSxFND1mMChmdW5jdGlvbih7bmFtZTpHLHN1YnRpdGxlOkosaGlkZUNoZXZyb246WSxzdHlsZTpxLG9uTW91c2VFbnRlcjpaLG9uTW91c2VMZWF2ZTpfLC4uLiR9LHope2xldCBMPVQxKCJUaXRsZSIpLFtCLFZdPWsoITEpLEg9Rz8/TC5kZXZpY2VOYW1lPz8iTm8gc2ltdWxhdG9yIixPPUo/PyhMLmRldmljZVJ1bnRpbWU/TC5kZXZpY2VSdW50aW1lLnJlcGxhY2UoL1wuLywiICIpOiLigJQiKTtyZXR1cm4gUSgiYnV0dG9uIix7cmVmOnosdHlwZToiYnV0dG9uIiwiZGF0YS1zaW11bGF0b3ItdG9vbGJhci10aXRsZSI6ITAsb25Nb3VzZUVudGVyOihVKT0+e1YoITApLFo/LihVKX0sb25Nb3VzZUxlYXZlOihVKT0+e1YoITEpLF8/LihVKX0sc3R5bGU6ey4uLms0LGJhY2tncm91bmQ6Qj8icmdiYSgyNTUsMjU1LDI1NSwwLjEpIjoidHJhbnNwYXJlbnQiLC4uLnF9LC4uLiQsY2hpbGRyZW46W1EoInNwYW4iLHtzdHlsZTp7ZGlzcGxheToiaW5saW5lLWZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjQsZm9udFNpemU6MTIsZm9udFdlaWdodDo2MDAsY29sb3I6IiNmZmYiLG1heFdpZHRoOiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjpbSCwhWSYmUSgic3ZnIix7d2lkdGg6IjEwIixoZWlnaHQ6IjEwIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixzdHlsZTp7Y29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC42KSIsZmxleFNocmluazowfSxjaGlsZHJlbjpRKCJwb2x5bGluZSIse3BvaW50czoiNiA5IDEyIDE1IDE4IDkifSl9KV19KSxRKCJzcGFuIix7c3R5bGU6e2ZvbnRTaXplOjEwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNSkiLG1heFdpZHRoOiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjpPfSldfSl9KSxDND17ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6NCxmbGV4U2hyaW5rOjB9O2Z1bmN0aW9uIFI0KHtzdHlsZTpYLC4uLkd9KXtyZXR1cm4gUSgiZGl2Iix7c3R5bGU6ey4uLkM0LC4uLlh9LC4uLkd9KX12YXIgYjQ9e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLHBhZGRpbmc6Nixib3JkZXJSYWRpdXM6NixjdXJzb3I6InBvaW50ZXIiLGRpc3BsYXk6ImlubGluZS1mbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOCkiLHRyYW5zaXRpb246ImJhY2tncm91bmQtY29sb3IgMC4xNXMsIGNvbG9yIDAuMTVzIn0sazE9ZjAoZnVuY3Rpb24oe2ZvcmNlRGlzYWJsZWQ6RyxzdHlsZTpKLGRpc2FibGVkOlksb25Nb3VzZUVudGVyOnEsb25Nb3VzZUxlYXZlOlosY2hpbGRyZW46XywuLi4kfSx6KXtsZXQgTD1FMChHOSksQj1ZfHxHfHxMPy5kaXNhYmxlZCxbVixIXT1rKCExKTtyZXR1cm4gUSgiYnV0dG9uIix7cmVmOnosdHlwZToiYnV0dG9uIixkaXNhYmxlZDpCLG9uTW91c2VFbnRlcjooTyk9PntIKCEwKSxxPy4oTyl9LG9uTW91c2VMZWF2ZTooTyk9PntIKCExKSxaPy4oTyl9LHN0eWxlOnsuLi5iNCxjb2xvcjpCPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMjUpIjoicmdiYSgyNTUsMjU1LDI1NSwwLjgpIixiYWNrZ3JvdW5kOlYmJiFCPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMSkiOiJ0cmFuc3BhcmVudCIsY3Vyc29yOkI/Im5vdC1hbGxvd2VkIjoicG9pbnRlciIsLi4uSn0sLi4uJCxjaGlsZHJlbjpffSl9KTtmdW5jdGlvbiBqNCgpe3JldHVyblsndGVsbCBhcHBsaWNhdGlvbiAiU3lzdGVtIEV2ZW50cyIgdG8gdGVsbCBwcm9jZXNzICJTaW11bGF0b3IiIHRvIHNldCBmcm9udG1vc3QgdG8gdHJ1ZScsJ3RlbGwgYXBwbGljYXRpb24gIlN5c3RlbSBFdmVudHMiIHRvIHRlbGwgcHJvY2VzcyAiU2ltdWxhdG9yIiB0byBwZXJmb3JtIGFjdGlvbiAiQVhSYWlzZSIgb2YgKGZpcnN0IHdpbmRvdyB3aG9zZSBuYW1lIGNvbnRhaW5zICJ3YXRjaE9TIiknLCd0ZWxsIGFwcGxpY2F0aW9uICJTeXN0ZW0gRXZlbnRzIiB0byB0ZWxsIHByb2Nlc3MgIlNpbXVsYXRvciIgdG8gY2xpY2sgbWVudSBpdGVtICJIb21lIiBvZiBtZW51ICJEZXZpY2UiIG9mIG1lbnUgYmFyIGl0ZW0gIkRldmljZSIgb2YgbWVudSBiYXIgMSddLm1hcCgoRyk9PmAtZSAnJHtHfSdgKS5yZWR1Y2UoKEcsSik9PmAke0d9ICR7Sn1gLCJvc2FzY3JpcHQiKX12YXIgUzQ9e3BvcnRyYWl0OiJsYW5kc2NhcGVfbGVmdCIsbGFuZHNjYXBlX2xlZnQ6InBvcnRyYWl0X3Vwc2lkZV9kb3duIixwb3J0cmFpdF91cHNpZGVfZG93bjoibGFuZHNjYXBlX3JpZ2h0IixsYW5kc2NhcGVfcmlnaHQ6InBvcnRyYWl0In0sdjQ9USgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46USgicGF0aCIse2Q6Ik0zIDEwLjUgMTIgM2w5IDcuNVYyMGExIDEgMCAwIDEtMSAxaC01di03aC02djdINGExIDEgMCAwIDEtMS0xeiJ9KX0pLHk0PVEoInN2ZyIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltRKCJwYXRoIix7ZDoiTTE0LjUgNGgtNUw3IDdINGEyIDIgMCAwIDAtMiAydjlhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0yVjlhMiAyIDAgMCAwLTItMmgtM3oifSksUSgiY2lyY2xlIix7Y3g6IjEyIixjeToiMTMiLHI6IjQifSldfSksaDQ9USgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMTIgMTMiLGZpbGw6ImN1cnJlbnRDb2xvciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpRKCJwYXRoIix7ZDoiTTEwLjIzMDUgMTIuODA3N0g0LjQyMzgzQzMuOTIzODMgMTIuODA3NyAzLjU0Njg4IDEyLjY4NDYgMy4yOTI5NyAxMi40Mzg1QzMuMDQyOTcgMTIuMTk2MyAyLjkxNzk3IDExLjgxOTQgMi45MTc5NyAxMS4zMDc3VjUuNTEyNzRDMi45MTc5NyA0Ljk5NzExIDMuMDQyOTcgNC42MTgyMSAzLjI5Mjk3IDQuMzc2MDJDMy41NDY4OCA0LjEyOTkzIDMuOTIzODMgNC4wMDY4OCA0LjQyMzgzIDQuMDA2ODhIMTAuMjMwNUMxMC43MzQ0IDQuMDA2ODggMTEuMTExMyA0LjEyOTkzIDExLjM2MTMgNC4zNzYwMkMxMS42MTEzIDQuNjE4MjEgMTEuNzM2MyA0Ljk5NzExIDExLjczNjMgNS41MTI3NFYxMS4zMDc3QzExLjczNjMgMTEuODE5NCAxMS42MTEzIDEyLjE5NjMgMTEuMzYxMyAxMi40Mzg1QzExLjExMTMgMTIuNjg0NiAxMC43MzQ0IDEyLjgwNzcgMTAuMjMwNSAxMi44MDc3Wk0xMC4yMTI5IDExLjg2NDNDMTAuNDE2IDExLjg2NDMgMTAuNTYyNSAxMS44MTk0IDEwLjY1MjMgMTEuNzI5NUMxMC43NDYxIDExLjY0MzYgMTAuNzkzIDExLjQ5NzEgMTAuNzkzIDExLjI5MDFWNS41MjQ0NkMxMC43OTMgNS4zMTc0MyAxMC43NDYxIDUuMTcwOTQgMTAuNjUyMyA1LjA4NTAxQzEwLjU2MjUgNC45OTUxNiAxMC40MTYgNC45NTAyNCAxMC4yMTI5IDQuOTUwMjRINC40NDE0MUM0LjI0MjE5IDQuOTUwMjQgNC4wOTU3IDQuOTk1MTYgNC4wMDE5NSA1LjA4NTAxQzMuOTA4MiA1LjE3MDk0IDMuODYxMzMgNS4zMTc0MyAzLjg2MTMzIDUuNTI0NDZWMTEuMjkwMUMzLjg2MTMzIDExLjQ5NzEgMy45MDgyIDExLjY0MzYgNC4wMDE5NSAxMS43Mjk1QzQuMDk1NyAxMS44MTk0IDQuMjQyMTkgMTEuODY0MyA0LjQ0MTQxIDExLjg2NDNIMTAuMjEyOVpNMi45MTc5NyAyLjU4MzA1VjAuNDE1MDgzQzIuOTE3OTcgMC4yMDAyNCAyLjk4NjMzIDAuMDY5MzgwMyAzLjEyMzA1IDAuMDIyNTA1M0MzLjI1OTc3IC0wLjAyODI3NTkgMy40MTAxNiAwLjAwNjg4MDMzIDMuNTc0MjIgMC4xMjc5NzRMNS4wNTA3OCAxLjIxMTk2QzUuMTc1NzggMS4zMDU3MSA1LjIzODI4IDEuNDAxNDEgNS4yMzgyOCAxLjQ5OTA3QzUuMjM4MjggMS41OTY3MiA1LjE3NTc4IDEuNjkyNDMgNS4wNTA3OCAxLjc4NjE4TDMuNTc0MjIgMi44NjQzQzMuNDEwMTYgMi45ODU0IDMuMjU5NzcgMy4wMjI1MSAzLjEyMzA1IDIuOTc1NjNDMi45ODYzMyAyLjkyNDg1IDIuOTE3OTcgMi43OTM5OSAyLjkxNzk3IDIuNTgzMDVaTTMuNTMzMiAxLjE1MzM2QzMuNjI2OTUgMS4xNTMzNiAzLjcwNzAzIDEuMTg2NTcgMy43NzM0NCAxLjI1Mjk3QzMuODQzNzUgMS4zMTkzOCAzLjg3ODkxIDEuMzk3NTEgMy44Nzg5MSAxLjQ4NzM1QzMuODc4OTEgMS41ODExIDMuODQzNzUgMS42NjMxMyAzLjc3MzQ0IDEuNzMzNDRDMy43MDcwMyAxLjc5OTg1IDMuNjI2OTUgMS44MzMwNSAzLjUzMzIgMS44MzMwNUgyLjgwNjY0QzIuMzgwODYgMS44MzMwNSAyLjAxMTcyIDEuOTI0ODUgMS42OTkyMiAyLjEwODQ0QzEuMzkwNjIgMi4yODgxMyAxLjE1MjM0IDIuNTM4MTMgMC45ODQzNzUgMi44NTg0NEMwLjgxNjQwNiAzLjE3ODc2IDAuNzMyNDIyIDMuNTQ1OTQgMC43MzI0MjIgMy45NjAwMVY0LjgzODkxQzAuNzMyNDIyIDQuOTM2NTcgMC42OTcyNjYgNS4wMjI1MSAwLjYyNjk1MyA1LjA5NjcyQzAuNTUyNzM0IDUuMTY3MDQgMC40NjQ4NDQgNS4yMDIxOSAwLjM2MzI4MSA1LjIwMjE5QzAuMjY1NjI1IDUuMjAyMTkgMC4xODE2NDEgNS4xNjcwNCAwLjExMTMyOCA1LjA5NjcyQzAuMDM3MTA5NCA1LjAyMjUxIDAgNC45MzY1NyAwIDQuODM4OTFWMy45NjAwMUMwIDMuNDAxNDEgMC4xMTcxODggMi45MTExOCAwLjM1MTU2MiAyLjQ4OTNDMC41ODIwMzEgMi4wNjc0MyAwLjkwODIwMyAxLjczOTMgMS4zMzAwOCAxLjUwNDkzQzEuNzQ4MDUgMS4yNzA1NSAyLjIzODI4IDEuMTUzMzYgMi44MDA3OCAxLjE1MzM2SDMuNTMzMloifSl9KSxnND1mMChmdW5jdGlvbih7b25DbGljazpHLC4uLkp9LFkpe2xldCBxPVQxKCJIb21lQnV0dG9uIik7cmV0dXJuIFEoazEse3JlZjpZLCJhcmlhLWxhYmVsIjoiSG9tZSIsb25DbGljazooWik9PntpZihHPy4oWiksWi5kZWZhdWx0UHJldmVudGVkKXJldHVybjtpZihxLmRldmljZVR5cGU9PT0id2F0Y2giKXEuZXhlYyhqNCgpKTtlbHNlIHEuZXhlYygic2VydmUtc2ltIGJ1dHRvbiBob21lIil9LC4uLkosY2hpbGRyZW46djR9KX0pLG00PWYwKGZ1bmN0aW9uKHtvbkNsaWNrOkcsLi4uSn0sWSl7bGV0IHE9VDEoIlNjcmVlbnNob3RCdXR0b24iKTtyZXR1cm4gUShrMSx7cmVmOlksImFyaWEtbGFiZWwiOiJTY3JlZW5zaG90IixvbkNsaWNrOihaKT0+e2lmKEc/LihaKSxaLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2lmKHEuZGV2aWNlVWRpZClxLmV4ZWMoYHhjcnVuIHNpbWN0bCBpbyAke3EuZGV2aWNlVWRpZH0gc2NyZWVuc2hvdCB+L0Rlc2t0b3Avc2VydmUtc2ltLXNjcmVlbnNob3QtJChkYXRlICslcykucG5nYCl9LC4uLkosY2hpbGRyZW46eTR9KX0pLHg0PWYwKGZ1bmN0aW9uKHtvbkNsaWNrOkcsZm9yY2VEaXNhYmxlZDpKLC4uLll9LHEpe2xldCBaPVQxKCJSb3RhdGVCdXR0b24iKSxfPVouZGV2aWNlVHlwZT09PSJ3YXRjaCJ8fFouZGV2aWNlVHlwZT09PSJ2aXNpb24iLFskLHpdPWsoInBvcnRyYWl0Iik7cmV0dXJuIGooKCk9Pnt6KFoub3JpZW50YXRpb24/PyJwb3J0cmFpdCIpfSxbWi5kZXZpY2VVZGlkLFoub3JpZW50YXRpb25dKSxRKGsxLHtyZWY6cSwiYXJpYS1sYWJlbCI6IlJvdGF0ZSBkZXZpY2UiLGZvcmNlRGlzYWJsZWQ6Snx8XyxvbkNsaWNrOihMKT0+e2lmKEc/LihMKSxMLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2lmKCFaLmRldmljZVVkaWR8fF8pcmV0dXJuO2xldCBCPVM0W1oub3JpZW50YXRpb24/PyRdO2lmKHooQiksWi5vblJvdGF0ZSlaLm9uUm90YXRlKEIpO2Vsc2UgWi5leGVjKGBzZXJ2ZS1zaW0gcm90YXRlICR7Qn0gLWQgJHtaLmRldmljZVVkaWR9YCl9LC4uLlksY2hpbGRyZW46aDR9KX0pLEowPVQ0O0owLlRpdGxlPUU0O0owLkFjdGlvbnM9UjQ7SjAuQnV0dG9uPWsxO0owLkhvbWVCdXR0b249ZzQ7SjAuU2NyZWVuc2hvdEJ1dHRvbj1tNDtKMC5Sb3RhdGVCdXR0b249eDQ7ZnVuY3Rpb24gcDQoWCl7bGV0W0csSl09ayhudWxsKSxZPWIobmV3IFNldCkscT1SKChaKT0+e3JldHVybiBZLmN1cnJlbnQuYWRkKFopLCgpPT57WS5jdXJyZW50LmRlbGV0ZShaKX19LFtdKTtyZXR1cm4gaigoKT0+e2lmKCFYKXJldHVybjtsZXQgWj1uZXcgQWJvcnRDb250cm9sbGVyLF89ITEsJD1udWxsLHo9WC5yZXBsYWNlKC9cL3N0cmVhbVwubWpwZWckLywiIiksTD0oRik9PntpZihGLndpZHRoPD0wfHxGLmhlaWdodDw9MClyZXR1cm47SigoQSk9PkEmJkEud2lkdGg9PT1GLndpZHRoJiZBLmhlaWdodD09PUYuaGVpZ2h0JiZBLm9yaWVudGF0aW9uPT09Ri5vcmllbnRhdGlvbj9BOkYpfSxCPSgpPT57ZmV0Y2goYCR7en0vY29uZmlnYCx7c2lnbmFsOlouc2lnbmFsfSkudGhlbigoRik9PkYuanNvbigpKS50aGVuKEwpLmNhdGNoKCgpPT57fSl9O0IoKTtsZXQgVj1zZXRJbnRlcnZhbChCLDEwMDApLEg9bmV3IFVSTChYKTtILnNlYXJjaFBhcmFtcy5zZXQoInJhdyIsIjEiKTtsZXQgTz1ILnRvU3RyaW5nKCksVT0oKT0+e2lmKF98fFouc2lnbmFsLmFib3J0ZWR8fCQpcmV0dXJuOyQ9c2V0VGltZW91dCgoKT0+eyQ9bnVsbCxQKCl9LDEwMDApfSxQPWFzeW5jKCk9Pnt0cnl7bGV0IEE9KGF3YWl0IGZldGNoKE8se3NpZ25hbDpaLnNpZ25hbH0pKS5ib2R5Py5nZXRSZWFkZXIoKTtpZighQSl7VSgpO3JldHVybn1sZXQgST1uZXcgVWludDhBcnJheSgwKTt3aGlsZSghMCl7bGV0e2RvbmU6cyx2YWx1ZTpofT1hd2FpdCBBLnJlYWQoKTtpZihzKWJyZWFrO2xldCBjPW5ldyBVaW50OEFycmF5KEkubGVuZ3RoK2gubGVuZ3RoKTtjLnNldChJKSxjLnNldChoLEkubGVuZ3RoKSxJPWM7d2hpbGUoITApe2xldCBlPS0xO2ZvcihsZXQgZD0wO2Q8SS5sZW5ndGgtMTtkKyspaWYoSVtkXT09PTI1NSYmSVtkKzFdPT09MjE2KXtlPWQ7YnJlYWt9aWYoZT09PS0xKWJyZWFrO2xldCBuPS0xO2ZvcihsZXQgZD1lKzI7ZDxJLmxlbmd0aC0xO2QrKylpZihJW2RdPT09MjU1JiZJW2QrMV09PT0yMTcpe249ZCsyO2JyZWFrfWlmKG49PT0tMSlicmVhaztsZXQgXzA9SS5zbGljZShlLG4pO0k9SS5zbGljZShuKTtsZXQgZj1uZXcgQmxvYihbXzBdLHt0eXBlOiJpbWFnZS9qcGVnIn0pLHk9VVJMLmNyZWF0ZU9iamVjdFVSTChmKTtpZihZLmN1cnJlbnQuc2l6ZT09PTApe1VSTC5yZXZva2VPYmplY3RVUkwoeSk7Y29udGludWV9Zm9yKGxldCBkIG9mIFkuY3VycmVudClkKHkpfX19Y2F0Y2h7fWZpbmFsbHl7VSgpfX07cmV0dXJuIFAoKSwoKT0+e2lmKF89ITAsJCljbGVhclRpbWVvdXQoJCk7Wi5hYm9ydCgpLGNsZWFySW50ZXJ2YWwoVil9fSxbWF0pLHtzdWJzY3JpYmVGcmFtZTpxLGZyYW1lOm51bGwsY29uZmlnOkd9fXZhciBmND17S2V5QTo0LEtleUI6NSxLZXlDOjYsS2V5RDo3LEtleUU6OCxLZXlGOjksS2V5RzoxMCxLZXlIOjExLEtleUk6MTIsS2V5SjoxMyxLZXlLOjE0LEtleUw6MTUsS2V5TToxNixLZXlOOjE3LEtleU86MTgsS2V5UDoxOSxLZXlROjIwLEtleVI6MjEsS2V5UzoyMixLZXlUOjIzLEtleVU6MjQsS2V5VjoyNSxLZXlXOjI2LEtleVg6MjcsS2V5WToyOCxLZXlaOjI5LERpZ2l0MTozMCxEaWdpdDI6MzEsRGlnaXQzOjMyLERpZ2l0NDozMyxEaWdpdDU6MzQsRGlnaXQ2OjM1LERpZ2l0NzozNixEaWdpdDg6MzcsRGlnaXQ5OjM4LERpZ2l0MDozOSxFbnRlcjo0MCxFc2NhcGU6NDEsQmFja3NwYWNlOjQyLFRhYjo0MyxTcGFjZTo0NCxNaW51czo0NSxFcXVhbDo0NixCcmFja2V0TGVmdDo0NyxCcmFja2V0UmlnaHQ6NDgsQmFja3NsYXNoOjQ5LFNlbWljb2xvbjo1MSxRdW90ZTo1MixCYWNrcXVvdGU6NTMsQ29tbWE6NTQsUGVyaW9kOjU1LFNsYXNoOjU2LENhcHNMb2NrOjU3LEYxOjU4LEYyOjU5LEYzOjYwLEY0OjYxLEY1OjYyLEY2OjYzLEY3OjY0LEY4OjY1LEY5OjY2LEYxMDo2NyxGMTE6NjgsRjEyOjY5LFByaW50U2NyZWVuOjcwLFNjcm9sbExvY2s6NzEsUGF1c2U6NzIsSW5zZXJ0OjczLEhvbWU6NzQsUGFnZVVwOjc1LERlbGV0ZTo3NixFbmQ6NzcsUGFnZURvd246NzgsQXJyb3dSaWdodDo3OSxBcnJvd0xlZnQ6ODAsQXJyb3dEb3duOjgxLEFycm93VXA6ODIsTnVtTG9jazo4MyxOdW1wYWREaXZpZGU6ODQsTnVtcGFkTXVsdGlwbHk6ODUsTnVtcGFkU3VidHJhY3Q6ODYsTnVtcGFkQWRkOjg3LE51bXBhZEVudGVyOjg4LE51bXBhZDE6ODksTnVtcGFkMjo5MCxOdW1wYWQzOjkxLE51bXBhZDQ6OTIsTnVtcGFkNTo5MyxOdW1wYWQ2Ojk0LE51bXBhZDc6OTUsTnVtcGFkODo5NixOdW1wYWQ5Ojk3LE51bXBhZDA6OTgsTnVtcGFkRGVjaW1hbDo5OSxDb250cm9sTGVmdDoyMjQsU2hpZnRMZWZ0OjIyNSxBbHRMZWZ0OjIyNixNZXRhTGVmdDoyMjcsQ29udHJvbFJpZ2h0OjIyOCxTaGlmdFJpZ2h0OjIyOSxBbHRSaWdodDoyMzAsTWV0YVJpZ2h0OjIzMX07ZnVuY3Rpb24gZDQoWCl7cmV0dXJuIGY0W1hdPz9udWxsfWZ1bmN0aW9uIFE5KFgpe2xldCBHPXdpbmRvdy5fX1NJTV9QUkVWSUVXX18/LmJhc2VQYXRoPz8iLyI7cmV0dXJuIEc9PT0iLyI/YC8ke1h9YDpgJHtHfS8ke1h9YH1mdW5jdGlvbiBBOChYKXtyZXR1cm4gWD8uZXJyb3JzPy5pbmNsdWRlcyhZOCk/PyExfWZ1bmN0aW9uIHU0KFgpe2xldFtHLEpdPWsobnVsbCksW1kscV09aygiQVggb2ZmIik7cmV0dXJuIGooKCk9PntpZighWCl7SihudWxsKSxxKCJBWCBvZmYiKTtyZXR1cm59SihudWxsKSxxKCJBWCB3YWl0aW5nIik7bGV0IFo9bmV3IEV2ZW50U291cmNlKFgpO3JldHVybiBaLm9ubWVzc2FnZT0oXyk9Pnt0cnl7bGV0ICQ9SlNPTi5wYXJzZShfLmRhdGEpO0ooJCkscShBOCgkKT8iQVggdW5hdmFpbGFibGU6IGluc3RhbGwgQVhlIjpgJHskLmVsZW1lbnRzLmxlbmd0aH0gQVggZWxlbWVudHNgKX1jYXRjaHtxKCJBWCBwYXJzZSBlcnJvciIpfX0sWi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PntxKCJBWCByZWNvbm5lY3RpbmciKX0pLCgpPT5aLmNsb3NlKCl9LFtYXSkse3NuYXBzaG90Okcsc3RhdHVzOll9fXZhciB3OD1GMCh7c25hcHNob3Q6bnVsbCxzdGF0dXM6IkFYIG9mZiJ9KSxUOD1GMChudWxsKTtmdW5jdGlvbiBfOSgpe3JldHVybiBFMCh3OCl9ZnVuY3Rpb24gazgoKXtsZXQgWD1FMChUOCk7aWYoIVgpdGhyb3cgRXJyb3IoIkFYIHNlbGVjdGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIik7cmV0dXJuIFh9ZnVuY3Rpb24gYzQoe2VuZHBvaW50OlgsY2hpbGRyZW46R30pe2xldHtzbmFwc2hvdDpKLHN0YXR1czpZfT11NChYKSxbcSxaXT1rKG51bGwpLFtfLCRdPWsobnVsbCk7aigoKT0+e2lmKCFYKVoobnVsbCksJChudWxsKX0sW1hdKTtsZXQgej15MCgoKT0+KHtzbmFwc2hvdDpKLHN0YXR1czpZfSksW0osWV0pLEw9eTAoKCk9Pih7aGlnaGxpZ2h0ZWRLZXk6cSxzZWxlY3RlZEtleTpfLHNldEhpZ2hsaWdodGVkS2V5Olosc2V0U2VsZWN0ZWRLZXk6JH0pLFtxLF9dKTtyZXR1cm4gUSh3OC5Qcm92aWRlcix7dmFsdWU6eixjaGlsZHJlbjpRKFQ4LlByb3ZpZGVyLHt2YWx1ZTpMLGNoaWxkcmVuOkd9KX0pfWFzeW5jIGZ1bmN0aW9uIHEwKFgpe3JldHVybihhd2FpdCBmZXRjaChROSgiZXhlYyIpLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpKU09OLnN0cmluZ2lmeSh7Y29tbWFuZDpYfSl9KSkuanNvbigpfWZ1bmN0aW9uIGw0KFgpe3RyeXtsZXQgRz1KU09OLnBhcnNlKFgpLEo9W107Zm9yKGxldFtZLHFdb2YgT2JqZWN0LmVudHJpZXMoRy5kZXZpY2VzPz97fSkpe2xldCBaPVkucmVwbGFjZSgvXmNvbVwuYXBwbGVcLkNvcmVTaW11bGF0b3JcLlNpbVJ1bnRpbWVcLi8sIiIpLnJlcGxhY2UoLy0vZywiLiIpO2ZvcihsZXQgXyBvZiBxKWlmKF8uaXNBdmFpbGFibGUpSi5wdXNoKHt1ZGlkOl8udWRpZCxuYW1lOl8ubmFtZSxzdGF0ZTpfLnN0YXRlLHJ1bnRpbWU6Wn0pfXJldHVybiBKfWNhdGNoe3JldHVybltdfX1mdW5jdGlvbiBFMShYKXtsZXQgRz1YLnRvTG93ZXJDYXNlKCk7aWYoRy5pbmNsdWRlcygiaXBob25lIikpcmV0dXJuIDA7aWYoRy5pbmNsdWRlcygiaXBhZCIpKXJldHVybiAxO2lmKEcuaW5jbHVkZXMoIndhdGNoIikpcmV0dXJuIDI7aWYoRy5pbmNsdWRlcygidmlzaW9uIikpcmV0dXJuIDM7cmV0dXJuIDR9ZnVuY3Rpb24gQzEoWCl7bGV0IEc9WC50b0xvd2VyQ2FzZSgpO2lmKEcuc3RhcnRzV2l0aCgiaW9zIikpcmV0dXJuIDA7aWYoRy5zdGFydHNXaXRoKCJpcGFkb3MiKSlyZXR1cm4gMTtpZihHLnN0YXJ0c1dpdGgoIndhdGNob3MiKSlyZXR1cm4gMjtpZihHLnN0YXJ0c1dpdGgoInZpc2lvbm9zIil8fEcuc3RhcnRzV2l0aCgieHJvcyIpKXJldHVybiAzO3JldHVybiA0fWZ1bmN0aW9uIGE0KHtkZXZpY2VzOlgsc2VsZWN0ZWRVZGlkOkcsbG9hZGluZzpKLGVycm9yOlksc3RvcHBpbmdVZGlkczpxLG9uUmVmcmVzaDpaLG9uU2VsZWN0Ol8sb25TdG9wOiQsdHJpZ2dlcjp6fSl7bGV0W0wsQl09ayghMSksVj1iKG51bGwpO2ooKCk9PntpZighTClyZXR1cm47bGV0IFA9KEYpPT57aWYoIVYuY3VycmVudD8uY29udGFpbnMoRi50YXJnZXQpKUIoITEpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsUCksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLFApfSxbTF0pO2xldCBIPW5ldyBNYXA7Zm9yKGxldCBQIG9mIFgpe2lmKFAudWRpZD09PUcpY29udGludWU7bGV0IEY9SC5nZXQoUC5ydW50aW1lKTtpZighRilGPVtdLEguc2V0KFAucnVudGltZSxGKTtGLnB1c2goUCl9Zm9yKGxldCBQIG9mIEgudmFsdWVzKCkpUC5zb3J0KChGLEEpPT5FMShGLm5hbWUpLUUxKEEubmFtZSl8fEYubmFtZS5sb2NhbGVDb21wYXJlKEEubmFtZSkpO2xldCBPPVsuLi5ILmVudHJpZXMoKV0uc29ydCgoW1BdLFtGXSk9PkMxKFApLUMxKEYpfHxQLmxvY2FsZUNvbXBhcmUoRikpLFU9WC5maW5kKChQKT0+UC51ZGlkPT09Ryk/P251bGw7cmV0dXJuIFEoImRpdiIse3JlZjpWLHN0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUifSxjaGlsZHJlbjpbUSgiZGl2Iix7b25DbGljazooKT0+e2lmKCFMKVooKTtCKChQKT0+IVApfSxjaGlsZHJlbjp6fSksTCYmUSgiZGl2Iix7c3R5bGU6RDYsY2hpbGRyZW46W1EoImRpdiIse3N0eWxlOmI4LGNoaWxkcmVuOltRKCJzcGFuIix7c3R5bGU6e2ZvbnRXZWlnaHQ6NjAwfSxjaGlsZHJlbjoiU2ltdWxhdG9ycyJ9KSxRKCJidXR0b24iLHtvbkNsaWNrOihQKT0+e1Auc3RvcFByb3BhZ2F0aW9uKCksWigpfSxkaXNhYmxlZDpKLHN0eWxlOmo4LGNoaWxkcmVuOko/Ii4uLiI6IlJlZnJlc2gifSldfSksWSYmUSgiZGl2Iix7c3R5bGU6WjksY2hpbGRyZW46WX0pLFUmJlEobCx7Y2hpbGRyZW46W1EoImRpdiIse3N0eWxlOnsuLi5xOSxjb2xvcjoiI2E1YjRmYyJ9LGNoaWxkcmVuOltRKCJzcGFuIix7c3R5bGU6WTkoVS5zdGF0ZT09PSJCb290ZWQiPyIjNGFkZTgwIjoiIzQ0NCIpfSksUSgic3BhbiIse3N0eWxlOntmbGV4OjF9LGNoaWxkcmVuOlUubmFtZX0pXX0pLFEoImRpdiIse3N0eWxlOk82fSldfSksWC5sZW5ndGg9PT0wJiYhSiYmIVkmJlEoImRpdiIse3N0eWxlOlM4LGNoaWxkcmVuOiJObyBhdmFpbGFibGUgc2ltdWxhdG9ycyBmb3VuZCJ9KSxPLm1hcCgoW1AsRl0pPT5RKCJkaXYiLHtjaGlsZHJlbjpbUSgiZGl2Iix7c3R5bGU6djgsY2hpbGRyZW46UH0pLEYubWFwKChBKT0+e2xldCBJPXEuaGFzKEEudWRpZCkscz1BLnN0YXRlPT09IkJvb3RlZCI7cmV0dXJuIFEoImRpdiIse3N0eWxlOnE5LG9uTW91c2VFbnRlcjooaCk9PmguY3VycmVudFRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kPSJyZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixvbk1vdXNlTGVhdmU6KGgpPT5oLmN1cnJlbnRUYXJnZXQuc3R5bGUuYmFja2dyb3VuZD0idHJhbnNwYXJlbnQiLG9uQ2xpY2s6KCk9PntfKEEpLEIoITEpfSxjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOlk5KHM/IiM0YWRlODAiOiIjNDQ0Iil9KSxRKCJzcGFuIix7c3R5bGU6e2ZsZXg6MX0sY2hpbGRyZW46QS5uYW1lfSkscyYmUSgic3BhbiIse3JvbGU6ImJ1dHRvbiIsb25DbGljazooaCk9PntpZihoLnN0b3BQcm9wYWdhdGlvbigpLCFJKSQoQS51ZGlkKX0sc3R5bGU6e2ZvbnRTaXplOjEwLHBhZGRpbmc6IjFweCA2cHgiLGJvcmRlclJhZGl1czo0LGNvbG9yOkk/IiM4ODgiOiIjZjg3MTcxIixiYWNrZ3JvdW5kOkk/InRyYW5zcGFyZW50IjoicmdiYSgyNDgsMTEzLDExMywwLjEpIixjdXJzb3I6ST8iZGVmYXVsdCI6InBvaW50ZXIifSxjaGlsZHJlbjpJPyJTdG9wcGluZy4uLiI6IlN0b3AifSldfSxBLnVkaWQpfSldfSxQKSldfSldfSl9ZnVuY3Rpb24gWTkoWCl7cmV0dXJue3dpZHRoOjYsaGVpZ2h0OjYsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6WCxmbGV4U2hyaW5rOjB9fXZhciBpND1uZXcgU2V0KFsiaW1hZ2UvanBlZyIsImltYWdlL3BuZyIsImltYWdlL2dpZiIsImltYWdlL2hlaWMiLCJpbWFnZS9oZWlmIiwiaW1hZ2Uvd2VicCIsInZpZGVvL21wNCIsInZpZGVvL3F1aWNrdGltZSJdKSxNOD0yNjIxNDQsbzQ9NTI0Mjg4MDAwO2Z1bmN0aW9uIHI0KFgpe2lmKCQ5KFgpPT09ImlwYSIpcmV0dXJuImlwYSI7aWYoaTQuaGFzKFgudHlwZSkpcmV0dXJuIm1lZGlhIjtyZXR1cm4gbnVsbH1mdW5jdGlvbiBzNChYKXtsZXQgRz1uZXcgVWludDhBcnJheShYKSxKPSIiO2ZvcihsZXQgWT0wO1k8Ry5sZW5ndGg7WSsrKUorPVN0cmluZy5mcm9tQ2hhckNvZGUoR1tZXSk7cmV0dXJuIGJ0b2EoSil9ZnVuY3Rpb24gJDkoWCl7bGV0IEc9WC5uYW1lLEo9Ry5sYXN0SW5kZXhPZigiLiIpO2lmKEo+PTApcmV0dXJuIEcuc2xpY2UoSisxKS50b0xvd2VyQ2FzZSgpO2lmKFgudHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iKSlyZXR1cm4ibXA0IjtyZXR1cm4ianBnIn1hc3luYyBmdW5jdGlvbiB0NChYLEcsSixZKXtpZihYLnNpemU+bzQpdGhyb3cgRXJyb3IoIkZpbGUgdG9vIGxhcmdlIChtYXggNTAwTUIpIik7bGV0IHE9Rz09PSJpcGEiPyJpcGEiOiQ5KFgpLF89YC90bXAvJHtHPT09ImlwYSI/InNlcnZlLXNpbS1pbnN0YWxsIjoic2VydmUtc2ltLXVwbG9hZCJ9LSR7Y3J5cHRvLnJhbmRvbVVVSUQoKX0uJHtxfWA7dHJ5e2xldCAkPWF3YWl0IFguYXJyYXlCdWZmZXIoKSx6PXM0KCQpO2ZvcihsZXQgVj0wO1Y8ei5sZW5ndGg7Vis9TTgpe2xldCBIPXouc2xpY2UoVixWK004KSxVPWF3YWl0IEooYGJhc2ggLWMgJ2VjaG8gJHtIfSB8IGJhc2U2NCAtZCAke1Y9PT0wPyI+IjoiPj4ifSAke199J2ApO2lmKFUuZXhpdENvZGUhPT0wKXRocm93IEVycm9yKFUuc3RkZXJyfHxgV3JpdGUgZmFpbGVkIChleGl0ICR7VS5leGl0Q29kZX0pYCl9bGV0IEw9Rz09PSJpcGEiP2B4Y3J1biBzaW1jdGwgaW5zdGFsbCAke1l9ICR7X31gOmB4Y3J1biBzaW1jdGwgYWRkbWVkaWEgJHtZfSAke199YCxCPWF3YWl0IEooTCk7aWYoQi5leGl0Q29kZSE9PTApe2xldCBWPUc9PT0iaXBhIj8iaW5zdGFsbCI6ImFkZG1lZGlhIjt0aHJvdyBFcnJvcihCLnN0ZGVycnx8YCR7Vn0gZmFpbGVkIChleGl0ICR7Qi5leGl0Q29kZX0pYCl9fWZpbmFsbHl7SihgYmFzaCAtYyAncm0gLWYgJHtffSdgKS5jYXRjaCgoKT0+e30pfX1mdW5jdGlvbiBuNCgpe2xldFtYLEddPWsoW10pLEo9UigocSxaKT0+e2xldCBfPWNyeXB0by5yYW5kb21VVUlEKCk7cmV0dXJuIEcoKCQpPT5bLi4uJCx7aWQ6XyxuYW1lOnEsa2luZDpaLHN0YXR1czoidXBsb2FkaW5nIn1dKSxffSxbXSksWT1SKChxLFopPT57aWYoRygoXyk9Pl8ubWFwKCgkKT0+JC5pZD09PXE/ey4uLiQsLi4uWn06JCkpLFouc3RhdHVzPT09InN1Y2Nlc3MifHxaLnN0YXR1cz09PSJlcnJvciIpc2V0VGltZW91dCgoKT0+e0coKF8pPT5fLmZpbHRlcigoJCk9PiQuaWQhPT1xKSl9LDMwMDApfSxbXSk7cmV0dXJue3RvYXN0czpYLGFkZDpKLHVwZGF0ZTpZfX1mdW5jdGlvbiBlNCh7ZXhlYzpYLHVkaWQ6RyxlbmFibGVkOkosb25VcGxvYWRTdGFydDpZLG9uVXBsb2FkRW5kOnEsb25VbnN1cHBvcnRlZDpafSl7bGV0W18sJF09ayghMSksej1iKDApLEw9Uihhc3luYyhPKT0+e2lmKE8ucHJldmVudERlZmF1bHQoKSxPLnN0b3BQcm9wYWdhdGlvbigpLHouY3VycmVudD0wLCQoITEpLCFKfHwhRylyZXR1cm47bGV0IFU9QXJyYXkuZnJvbShPLmRhdGFUcmFuc2Zlci5maWxlcyk7aWYoVS5sZW5ndGg9PT0wKXJldHVybjtmb3IobGV0IFAgb2YgVSl7bGV0IEY9cjQoUCk7aWYoIUYpe1ooUCk7Y29udGludWV9bGV0IEE9WShQLm5hbWUsRik7dDQoUCxGLFgsRykudGhlbigoKT0+cShBLCEwKSkuY2F0Y2goKEkpPT5xKEEsITEsSSBpbnN0YW5jZW9mIEVycm9yP0kubWVzc2FnZToiVXBsb2FkIGZhaWxlZCIpKX19LFtKLEcsWCxZLHEsWl0pLEI9UigoTyk9PntpZihPLnByZXZlbnREZWZhdWx0KCksSilPLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0PSJjb3B5In0sW0pdKSxWPVIoKE8pPT57aWYoTy5wcmV2ZW50RGVmYXVsdCgpLCFKKXJldHVybjtpZih6LmN1cnJlbnQrKyx6LmN1cnJlbnQ9PT0xKSQoITApfSxbSl0pLEg9UigoTyk9PntpZihPLnByZXZlbnREZWZhdWx0KCksei5jdXJyZW50LS0sei5jdXJyZW50PD0wKXouY3VycmVudD0wLCQoITEpfSxbXSk7cmV0dXJue2lzRHJhZ092ZXI6Xyxkcm9wWm9uZVByb3BzOntvbkRyYWdPdmVyOkIsb25EcmFnRW50ZXI6VixvbkRyYWdMZWF2ZTpILG9uRHJvcDpMfX19ZnVuY3Rpb24gTjAoWCl7cmV0dXJuYCcke1gucmVwbGFjZSgvJy9nLCInXFwnJyIpfSdgfWFzeW5jIGZ1bmN0aW9uIFg2KFgsRyxKKXtsZXQgWT1hd2FpdCBYKGB4Y3J1biBzaW1jdGwgZ2V0X2FwcF9jb250YWluZXIgJHtHfSAke04wKEopfSBhcHBgKTtpZihZLmV4aXRDb2RlIT09MClyZXR1cm57ZXJyb3I6WS5zdGRlcnIudHJpbSgpfHwiQXBwIG5vdCBmb3VuZCBvbiBzaW11bGF0b3IifTtsZXQgcT1ZLnN0ZG91dC50cmltKCk7aWYoIXEpcmV0dXJue2Vycm9yOiJFbXB0eSBhcHAgcGF0aCJ9O2xldCBaPWF3YWl0IFgoYHBsdXRpbCAtY29udmVydCBqc29uIC1vIC0gJHtOMChxKyIvSW5mby5wbGlzdCIpfWApLF89e307aWYoWi5leGl0Q29kZT09PTApdHJ5e189SlNPTi5wYXJzZShaLnN0ZG91dCl9Y2F0Y2h7fWxldCAkLEw9KF8/LkNGQnVuZGxlSWNvbnM/LkNGQnVuZGxlUHJpbWFyeUljb24/P18/LlsiQ0ZCdW5kbGVJY29uc35pcGFkIl0/LkNGQnVuZGxlUHJpbWFyeUljb24pPy5DRkJ1bmRsZUljb25GaWxlcz8/Xz8uQ0ZCdW5kbGVJY29uRmlsZXM7aWYoTCYmTC5sZW5ndGg+MCkkPUxbTC5sZW5ndGgtMV07ZWxzZSBpZih0eXBlb2YgXz8uQ0ZCdW5kbGVJY29uRmlsZT09PSJzdHJpbmciKSQ9Xy5DRkJ1bmRsZUljb25GaWxlO2xldCBCPW51bGw7aWYoJCl7bGV0IFY9W2AkeyR9QDN4LnBuZ2AsYCR7JH1AMngucG5nYCxgJHskfS5wbmdgLGAkeyR9NjB4NjBAM3gucG5nYCxgJHskfTYweDYwQDJ4LnBuZ2BdLE89KGF3YWl0IFgoYGJhc2ggLWMgJHtOMChWLm1hcCgoVSk9PmBbIC1mICR7TjAocSsiLyIrVSl9IF0gJiYgZWNobyAke04wKHErIi8iK1UpfSAmJiBleGl0IDBgKS5qb2luKCI7ICIpKyI7IGV4aXQgMSIpfWApKS5zdGRvdXQudHJpbSgpO2lmKE8pe2xldCBVPWF3YWl0IFgoYGJhc2U2NCAtaSAke04wKE8pfWApO2lmKFUuZXhpdENvZGU9PT0wKUI9YGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwke1Uuc3Rkb3V0LnJlcGxhY2UoL1xzKy9nLCIiKX1gfX1yZXR1cm57YXBwUGF0aDpxLGRpc3BsYXlOYW1lOl8uQ0ZCdW5kbGVEaXNwbGF5TmFtZT8/Xy5DRkJ1bmRsZU5hbWUsc2hvcnRWZXJzaW9uOl8uQ0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmcsYnVuZGxlVmVyc2lvbjpfLkNGQnVuZGxlVmVyc2lvbixtaW5PUzpfLk1pbmltdW1PU1ZlcnNpb24sZXhlY3V0YWJsZTpfLkNGQnVuZGxlRXhlY3V0YWJsZSxpY29uRGF0YVVybDpCfX1mdW5jdGlvbiBHNih7dWRpZDpYLGN1cnJlbnRBcHA6R30pe2xldFtKLFldPWsobnVsbCk7aWYoaigoKT0+e2lmKCFHKXtZKG51bGwpO3JldHVybn1sZXQgcT0hMTtyZXR1cm4gWSh7YnVuZGxlSWQ6Ry5idW5kbGVJZCxpc1JlYWN0TmF0aXZlOkcuaXNSZWFjdE5hdGl2ZSxwaWQ6Ry5waWQsbG9hZGluZzohMH0pLFg2KHEwLFgsRy5idW5kbGVJZCkudGhlbigoWik9PntpZihxKXJldHVybjtZKHtidW5kbGVJZDpHLmJ1bmRsZUlkLGlzUmVhY3ROYXRpdmU6Ry5pc1JlYWN0TmF0aXZlLHBpZDpHLnBpZCxsb2FkaW5nOiExLC4uLlp9KX0pLCgpPT57cT0hMH19LFtYLEc/LmJ1bmRsZUlkLEc/LnBpZCxHPy5pc1JlYWN0TmF0aXZlXSksIUopcmV0dXJuIFEoImRpdiIse3N0eWxlOkMuZW1wdHksY2hpbGRyZW46IldhaXRpbmcgZm9yIGFuIGFwcCB0byBjb21lIHRvIHRoZSBmb3JlZ3JvdW5k4oCmIn0pO3JldHVybiBRKCJkaXYiLHtzdHlsZTpDLnNlY3Rpb24sY2hpbGRyZW46W1EoImRpdiIse3N0eWxlOkMuYXBwSGVhZGVyLGNoaWxkcmVuOltKLmljb25EYXRhVXJsP1EoImltZyIse3NyYzpKLmljb25EYXRhVXJsLHN0eWxlOkMuYXBwSWNvbixhbHQ6IiJ9KTpRKCJkaXYiLHtzdHlsZTp7Li4uQy5hcHBJY29uLGJhY2tncm91bmQ6IiMyYTJhMmMifX0pLFEoImRpdiIse3N0eWxlOnttaW5XaWR0aDowLGZsZXg6MX0sY2hpbGRyZW46W1EoImRpdiIse3N0eWxlOkMuYXBwTmFtZSxjaGlsZHJlbjpbSi5kaXNwbGF5TmFtZT8/Si5idW5kbGVJZCxKLmxvYWRpbmcmJlEoInNwYW4iLHtzdHlsZTpDLnNwaW5uZXIsY2hpbGRyZW46IiDigKYifSldfSksUSgiZGl2Iix7c3R5bGU6Qy5hcHBCdW5kbGUsdGl0bGU6Si5idW5kbGVJZCxjaGlsZHJlbjpKLmJ1bmRsZUlkfSldfSldfSksSi5lcnJvciYmUSgiZGl2Iix7c3R5bGU6Qy5lcnJvcixjaGlsZHJlbjpKLmVycm9yfSksUSgiZGwiLHtzdHlsZTpDLmRsLGNoaWxkcmVuOltRKHUwLHtsYWJlbDoiVmVyc2lvbiIsdmFsdWU6Si5zaG9ydFZlcnNpb24/YCR7Si5zaG9ydFZlcnNpb259ICgke0ouYnVuZGxlVmVyc2lvbj8/IuKAlCJ9KWA6Si5sb2FkaW5nPyLigKYiOiLigJQifSksUSh1MCx7bGFiZWw6Ik1pbiBpT1MiLHZhbHVlOkoubWluT1M/PyhKLmxvYWRpbmc/IuKApiI6IuKAlCIpfSksUSh1MCx7bGFiZWw6IkV4ZWN1dGFibGUiLHZhbHVlOkouZXhlY3V0YWJsZT8/KEoubG9hZGluZz8i4oCmIjoi4oCUIil9KSxRKHUwLHtsYWJlbDoiUElEIix2YWx1ZTpKLnBpZCE9bnVsbD9TdHJpbmcoSi5waWQpOiLigJQifSksSi5pc1JlYWN0TmF0aXZlJiZRKHUwLHtsYWJlbDoiUmVhY3QgTmF0aXZlIix2YWx1ZToiWWVzIn0pLFEodTAse2xhYmVsOiJBcHAgcGF0aCIsdmFsdWU6Si5hcHBQYXRoPz8oSi5sb2FkaW5nPyLigKYiOiLigJQiKSxtb25vOiEwLGFjdGlvbjpKLmFwcFBhdGg/e3RpdGxlOiJSZXZlYWwgaW4gRmluZGVyIixvbkNsaWNrOigpPT57cTAoYG9wZW4gLVIgJHtOMChKLmFwcFBhdGgpfWApfSxpY29uOlEoInN2ZyIse3dpZHRoOiIxMSIsaGVpZ2h0OiIxMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIuMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1EoImxpbmUiLHt4MToiNyIseTE6IjE3Iix4MjoiMTciLHkyOiI3In0pLFEoInBvbHlsaW5lIix7cG9pbnRzOiIxMCA3IDE3IDcgMTcgMTQifSldfSl9OnZvaWQgMH0pXX0pXX0pfWZ1bmN0aW9uIHUwKHtsYWJlbDpYLHZhbHVlOkcsbW9ubzpKLGFjdGlvbjpZfSl7bGV0W3EsWl09ayghMSk7cmV0dXJuIFEoImRpdiIse3N0eWxlOkMucm93LG9uTW91c2VFbnRlcjooKT0+WighMCksb25Nb3VzZUxlYXZlOigpPT5aKCExKSxjaGlsZHJlbjpbUSgiZHQiLHtzdHlsZTpDLmR0LGNoaWxkcmVuOlh9KSxRKCJkZCIse3N0eWxlOnsuLi5DLmRkLGZvbnRGYW1pbHk6Sj8idWktbW9ub3NwYWNlLCBtb25vc3BhY2UiOnZvaWQgMCxmb250U2l6ZTpKPzExOjEyLHBvc2l0aW9uOiJyZWxhdGl2ZSJ9LHRpdGxlOkcsY2hpbGRyZW46W0csWSYmUSgiZGl2Iix7c3R5bGU6ey4uLkMucm93QWN0aW9uV3JhcCxvcGFjaXR5OnE/MTowLHRyYW5zZm9ybTpxPyJ0cmFuc2xhdGVYKDApIjoidHJhbnNsYXRlWCg0cHgpIixwb2ludGVyRXZlbnRzOnE/ImF1dG8iOiJub25lIn0sY2hpbGRyZW46USgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOlkub25DbGljayx0aXRsZTpZLnRpdGxlLCJhcmlhLWxhYmVsIjpZLnRpdGxlLHN0eWxlOkMucm93QWN0aW9uLGNoaWxkcmVuOlkuaWNvbn0pfSldfSldfSl9dmFyIEo2PVt7a2V5OiJjYW1lcmEiLGxhYmVsOiJDYW1lcmEifSx7a2V5OiJtaWNyb3Bob25lIixsYWJlbDoiTWljcm9waG9uZSJ9LHtrZXk6InBob3RvcyIsbGFiZWw6IlBob3RvcyJ9LHtrZXk6InBob3Rvcy1hZGQiLGxhYmVsOiJBZGQgdG8gUGhvdG9zIn0se2tleToiY29udGFjdHMiLGxhYmVsOiJDb250YWN0cyJ9LHtrZXk6ImNhbGVuZGFyIixsYWJlbDoiQ2FsZW5kYXIifSx7a2V5OiJyZW1pbmRlcnMiLGxhYmVsOiJSZW1pbmRlcnMifSx7a2V5OiJsb2NhdGlvbiIsbGFiZWw6IkxvY2F0aW9uIn0se2tleToibG9jYXRpb24tYWx3YXlzIixsYWJlbDoiTG9jYXRpb24gKEFsd2F5cykifSx7a2V5OiJtb3Rpb24iLGxhYmVsOiJNb3Rpb24ifSx7a2V5OiJtZWRpYS1saWJyYXJ5IixsYWJlbDoiTWVkaWEgTGlicmFyeSJ9LHtrZXk6InNpcmkiLGxhYmVsOiJTaXJpIn1dO2Z1bmN0aW9uIFk2KHt1ZGlkOlgsYnVuZGxlSWQ6R30pe2xldFtKLFldPWsoe30pLFtxLFpdPWsobnVsbCksW18sJF09ayhudWxsKSxbeixMXT1rKCExKTtqKCgpPT57WSh7fSksJChudWxsKX0sW0ddKTtsZXQgQj1SKGFzeW5jKEgsTyk9PntpZighRylyZXR1cm47bGV0IFU9YCR7SH06JHtPfWA7WihVKSwkKG51bGwpO3RyeXtsZXQgUD1hd2FpdCBxMChgeGNydW4gc2ltY3RsIHByaXZhY3kgJHtYfSAke099ICR7SH0gJHtOMChHKX1gKTtpZihQLmV4aXRDb2RlIT09MCl7JChQLnN0ZGVyci50cmltKCl8fGBzaW1jdGwgcHJpdmFjeSBmYWlsZWQgKGV4aXQgJHtQLmV4aXRDb2RlfSlgKTtyZXR1cm59WSgoRik9Pih7Li4uRixbSF06Tz09PSJyZXNldCI/dm9pZCAwOk99KSl9ZmluYWxseXtaKG51bGwpfX0sW1gsR10pLFY9Uihhc3luYygpPT57aWYoIUcpcmV0dXJuO1ooIl9fYWxsX18iKSwkKG51bGwpO3RyeXtsZXQgSD1hd2FpdCBxMChgeGNydW4gc2ltY3RsIHByaXZhY3kgJHtYfSByZXNldCBhbGwgJHtOMChHKX1gKTtpZihILmV4aXRDb2RlIT09MCl7JChILnN0ZGVyci50cmltKCl8fGBzaW1jdGwgcHJpdmFjeSBmYWlsZWQgKGV4aXQgJHtILmV4aXRDb2RlfSlgKTtyZXR1cm59WSh7fSl9ZmluYWxseXtaKG51bGwpfX0sW1gsR10pO2lmKCFHKXJldHVybiBRKCJkaXYiLHtzdHlsZTpDLmVtcHR5LGNoaWxkcmVuOiJQZXJtaXNzaW9ucyBhcHBlYXIgb25jZSBhbiBhcHAgaXMgaW4gdGhlIGZvcmVncm91bmQuIn0pO3JldHVybiBRKCJkaXYiLHtzdHlsZTp7Li4uQy5zZWN0aW9uLHBhZGRpbmc6IjhweCAxMnB4In0sY2hpbGRyZW46W1EoImJ1dHRvbiIse29uQ2xpY2s6KCk9PkwoKEgpPT4hSCksc3R5bGU6Qy5wZXJtc1RvZ2dsZSwiYXJpYS1leHBhbmRlZCI6eixjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOnsuLi5DLnNlY3Rpb25UaXRsZSxtYXJnaW46MH0sY2hpbGRyZW46IlBlcm1pc3Npb25zIn0pLFEoInN2ZyIse3dpZHRoOiIxMSIsaGVpZ2h0OiIxMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIuNSIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsc3R5bGU6e3RyYW5zZm9ybTp6PyJyb3RhdGUoOTBkZWcpIjoicm90YXRlKDBkZWcpIix0cmFuc2l0aW9uOiJ0cmFuc2Zvcm0gMC4xNXMiLGZsZXhTaHJpbms6MH0sY2hpbGRyZW46USgicG9seWxpbmUiLHtwb2ludHM6IjkgMTggMTUgMTIgOSA2In0pfSldfSkseiYmXyYmUSgiZGl2Iix7c3R5bGU6ey4uLkMuZXJyb3IsbWFyZ2luVG9wOjh9LGNoaWxkcmVuOl99KSx6JiZRKCJkaXYiLHtzdHlsZTpDLnBlcm1zU2Nyb2xsV3JhcCxjaGlsZHJlbjpbUSgiZGl2Iix7c3R5bGU6Qy5wZXJtc1Njcm9sbCxjaGlsZHJlbjpKNi5tYXAoKHtrZXk6SCxsYWJlbDpPfSk9PntsZXQgVT1KW0hdO3JldHVybiBRKCJkaXYiLHtzdHlsZTpDLnBlcm1Sb3csY2hpbGRyZW46W1EoInNwYW4iLHtzdHlsZTpDLnBlcm1MYWJlbCxjaGlsZHJlbjpPfSksUSgiZGl2Iix7c3R5bGU6Qy5wZXJtU2VnLHJvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbCI6TyxjaGlsZHJlbjpbUShKOSx7YWN0aXZlOlU9PT0iZ3JhbnQiLHBlbmRpbmc6cT09PWAke0h9OmdyYW50YCxvbkNsaWNrOigpPT5CKEgsImdyYW50IiksdmFyaWFudDoiZ3JhbnQiLHRpdGxlOiJBbGxvdyIsY2hpbGRyZW46USgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMyIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46USgicG9seWxpbmUiLHtwb2ludHM6IjUgMTIgMTAgMTcgMTkgNyJ9KX0pfSksUShKOSx7YWN0aXZlOlU9PT0icmV2b2tlIixwZW5kaW5nOnE9PT1gJHtIfTpyZXZva2VgLG9uQ2xpY2s6KCk9PkIoSCwicmV2b2tlIiksdmFyaWFudDoicmV2b2tlIix0aXRsZToiRGVueSIsY2hpbGRyZW46USgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMyIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1EoImxpbmUiLHt4MToiNiIseTE6IjYiLHgyOiIxOCIseTI6IjE4In0pLFEoImxpbmUiLHt4MToiMTgiLHkxOiI2Iix4MjoiNiIseTI6IjE4In0pXX0pfSksUShKOSx7YWN0aXZlOiExLHBlbmRpbmc6cT09PWAke0h9OnJlc2V0YCxvbkNsaWNrOigpPT5CKEgsInJlc2V0IiksdmFyaWFudDoicmVzZXQiLHRpdGxlOiJSZXNldCIsY2hpbGRyZW46USgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi40IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbUSgicGF0aCIse2Q6Ik0zIDEyYTkgOSAwIDEgMCAzLjUtNy4xIn0pLFEoInBvbHlsaW5lIix7cG9pbnRzOiIzIDMgMyA5IDkgOSJ9KV19KX0pXX0pXX0sSCl9KX0pLFEoImRpdiIse3N0eWxlOkMucGVybXNGYWRlVG9wfSksUSgiZGl2Iix7c3R5bGU6Qy5wZXJtc0ZhZGVCb3R0b219KV19KSx6JiZRKCJkaXYiLHtzdHlsZTpDLnBlcm1zRm9vdGVyLGNoaWxkcmVuOlEoImJ1dHRvbiIse29uQ2xpY2s6VixkaXNhYmxlZDpxPT09Il9fYWxsX18iLHN0eWxlOkMucmVzZXRBbGxCdG4sdGl0bGU6InhjcnVuIHNpbWN0bCBwcml2YWN5IHJlc2V0IGFsbCIsY2hpbGRyZW46cT09PSJfX2FsbF9fIj8i4oCmIjoiUmVzZXQgYWxsIn0pfSldfSl9ZnVuY3Rpb24gWjYoe2RldmljZXM6WCxsb2FkaW5nOkcsZXJyb3I6SixvblJlZnJlc2g6WX0pe2xldFtxLFpdPWsobnVsbCksW18sJF09ayhudWxsKSx6PVIoYXN5bmMoVik9PntpZihxKXJldHVybjtaKFYudWRpZCksJChudWxsKTt0cnl7aWYoVi5zdGF0ZSE9PSJCb290ZWQiKXtsZXQgUD1hd2FpdCBxMChgeGNydW4gc2ltY3RsIGJvb3QgJHtWLnVkaWR9YCk7aWYoUC5leGl0Q29kZSE9PTApdGhyb3cgRXJyb3IoUC5zdGRlcnJ8fCJGYWlsZWQgdG8gYm9vdCBzaW11bGF0b3IiKX1sZXQgSD1hd2FpdCBxMChgYnVueCBzZXJ2ZS1zaW0gLS1kZXRhY2ggJHtWLnVkaWR9YCk7aWYoSC5leGl0Q29kZSE9PTApdGhyb3cgRXJyb3IoSC5zdGRlcnJ8fCJGYWlsZWQgdG8gc3RhcnQgc2VydmUtc2ltIik7bGV0IE89RGF0ZS5ub3coKSsxNTAwMCxVPWAke1E5KCJhcGkiKX0/ZGV2aWNlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KFYudWRpZCl9YDt3aGlsZShEYXRlLm5vdygpPE8pe3RyeXtsZXQgUD1hd2FpdCBmZXRjaChVLHtjYWNoZToibm8tc3RvcmUifSk7aWYoUC5vayYmYXdhaXQgUC5qc29uKCkpe2xldCBGPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO0Yuc2VhcmNoUGFyYW1zLnNldCgiZGV2aWNlIixWLnVkaWQpLHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oRi50b1N0cmluZygpKTtyZXR1cm59fWNhdGNoe31hd2FpdCBuZXcgUHJvbWlzZSgoUCk9PnNldFRpbWVvdXQoUCw0MDApKX10aHJvdyBFcnJvcigic2VydmUtc2ltIHN0YXJ0ZWQgYnV0IG5vIHN0cmVhbSBzdGF0ZSBhcHBlYXJlZCIpfWNhdGNoKEgpeyQoSCBpbnN0YW5jZW9mIEVycm9yP0gubWVzc2FnZToiRmFpbGVkIHRvIHN0YXJ0IHN0cmVhbSIpLFoobnVsbCl9fSxbcV0pLEw9bmV3IE1hcDtmb3IobGV0IFYgb2YgWCl7bGV0IEg9TC5nZXQoVi5ydW50aW1lKTtpZighSClIPVtdLEwuc2V0KFYucnVudGltZSxIKTtILnB1c2goVil9Zm9yKGxldCBWIG9mIEwudmFsdWVzKCkpVi5zb3J0KChILE8pPT57bGV0IFU9SC5zdGF0ZT09PSJCb290ZWQiPzA6MSxQPU8uc3RhdGU9PT0iQm9vdGVkIj8wOjE7aWYoVSE9PVApcmV0dXJuIFUtUDtyZXR1cm4gRTEoSC5uYW1lKS1FMShPLm5hbWUpfHxILm5hbWUubG9jYWxlQ29tcGFyZShPLm5hbWUpfSk7bGV0IEI9Wy4uLkwuZW50cmllcygpXS5zb3J0KChbVl0sW0hdKT0+QzEoViktQzEoSCl8fFYubG9jYWxlQ29tcGFyZShIKSk7cmV0dXJuIFEoImRpdiIse3N0eWxlOlowLnBhZ2UsY2hpbGRyZW46USgiZGl2Iix7c3R5bGU6WjAuZW1wdHksY2hpbGRyZW46W1EoImgxIix7c3R5bGU6WjAuZW1wdHlUaXRsZSxjaGlsZHJlbjoiTm8gc2VydmUtc2ltIHN0cmVhbSBydW5uaW5nIn0pLFEoInAiLHtzdHlsZTpaMC5lbXB0eUhpbnQsY2hpbGRyZW46WyJQaWNrIGEgc2ltdWxhdG9yIHRvIGJvb3QsIG9yIHN0YXJ0IG9uZSB5b3Vyc2VsZiB3aXRoIiwiICIsUSgiY29kZSIse3N0eWxlOlowLmNvZGUsY2hpbGRyZW46ImJ1bnggc2VydmUtc2ltIC0tZGV0YWNoIn0pLCIuIl19KSxRKCJkaXYiLHtzdHlsZTpLNixjaGlsZHJlbjpbUSgiZGl2Iix7c3R5bGU6YjgsY2hpbGRyZW46W1EoInNwYW4iLHtzdHlsZTp7Zm9udFdlaWdodDo2MDB9LGNoaWxkcmVuOiJTaW11bGF0b3JzIn0pLFEoImJ1dHRvbiIse29uQ2xpY2s6WSxkaXNhYmxlZDpHLHN0eWxlOmo4LGNoaWxkcmVuOkc/Ii4uLiI6IlJlZnJlc2gifSldfSksSiYmUSgiZGl2Iix7c3R5bGU6WjksY2hpbGRyZW46Sn0pLF8mJlEoImRpdiIse3N0eWxlOlo5LGNoaWxkcmVuOl99KSwhRyYmIUomJlgubGVuZ3RoPT09MCYmUSgiZGl2Iix7c3R5bGU6UzgsY2hpbGRyZW46Ik5vIGF2YWlsYWJsZSBzaW11bGF0b3JzIGZvdW5kIn0pLEIubWFwKChbVixIXSk9PlEoImRpdiIse2NoaWxkcmVuOltRKCJkaXYiLHtzdHlsZTp2OCxjaGlsZHJlbjpWfSksSC5tYXAoKE8pPT57bGV0IFU9cT09PU8udWRpZCxQPXEhPT1udWxsJiYhVSxGPU8uc3RhdGU9PT0iQm9vdGVkIjtyZXR1cm4gUSgiZGl2Iix7c3R5bGU6ey4uLnE5LGN1cnNvcjpQPyJkZWZhdWx0IjoicG9pbnRlciIsb3BhY2l0eTpQPzAuNToxfSxvbk1vdXNlRW50ZXI6KEEpPT57aWYoIVApQS5jdXJyZW50VGFyZ2V0LnN0eWxlLmJhY2tncm91bmQ9InJnYmEoMjU1LDI1NSwyNTUsMC4wOCkifSxvbk1vdXNlTGVhdmU6KEEpPT5BLmN1cnJlbnRUYXJnZXQuc3R5bGUuYmFja2dyb3VuZD0idHJhbnNwYXJlbnQiLG9uQ2xpY2s6KCk9PntpZighUCl6KE8pfSxjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOlk5KEY/IiM0YWRlODAiOiIjNDQ0Iil9KSxRKCJzcGFuIix7c3R5bGU6e2ZsZXg6MSx0ZXh0QWxpZ246ImxlZnQifSxjaGlsZHJlbjpPLm5hbWV9KSxRKCJzcGFuIix7c3R5bGU6e2ZvbnRTaXplOjEwLGNvbG9yOlU/IiNhNWI0ZmMiOiIjODg4In0sY2hpbGRyZW46VT9GPyJTdGFydGluZy4uLiI6IkJvb3RpbmcuLi4iOkY/IlN0YXJ0IHN0cmVhbSI6IkJvb3QgJiBzdHJlYW0ifSldfSxPLnVkaWQpfSldfSxWKSldfSldfSl9KX1mdW5jdGlvbiBKOSh7YWN0aXZlOlgscGVuZGluZzpHLG9uQ2xpY2s6Six2YXJpYW50OlksdGl0bGU6cSxjaGlsZHJlbjpafSl7bGV0IF89WT09PSJncmFudCI/IiM0YWRlODAiOlk9PT0icmV2b2tlIj8iI2Y4NzE3MSI6IiNhNWI0ZmMiO3JldHVybiBRKCJidXR0b24iLHtvbkNsaWNrOkosZGlzYWJsZWQ6Ryx0aXRsZTpxLCJhcmlhLWxhYmVsIjpxLHN0eWxlOnsuLi5DLnBlcm1CdG4sYmFja2dyb3VuZDpYP2Ake199MjJgOiJ0cmFuc3BhcmVudCIsY29sb3I6WD9fOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTUpIixvcGFjaXR5Okc/MC41OjF9LGNoaWxkcmVuOlp9KX1mdW5jdGlvbiBFOChYLEcpe2lmKFg9PT1HKXJldHVybiEwO2lmKFguaWQhPT1HLmlkfHxYLnBhdGghPT1HLnBhdGh8fFgubGFiZWwhPT1HLmxhYmVsfHxYLnZhbHVlIT09Ry52YWx1ZXx8WC5yb2xlIT09Ry5yb2xlfHxYLnR5cGUhPT1HLnR5cGV8fFguZW5hYmxlZCE9PUcuZW5hYmxlZClyZXR1cm4hMTtsZXQgSj1YLmZyYW1lLFk9Ry5mcmFtZTtyZXR1cm4gSj09PVl8fEoueD09PVkueCYmSi55PT09WS55JiZKLndpZHRoPT09WS53aWR0aCYmSi5oZWlnaHQ9PT1ZLmhlaWdodH12YXIgcTY9bjEoZnVuY3Rpb24oe2VsZW1lbnQ6RyxpbmRleDpKLHNjcmVlbjpZLGhpZ2hsaWdodGVkOnEsc2VsZWN0ZWQ6WixvbkhpZ2hsaWdodDpfLG9uU2VsZWN0OiR9KXtsZXQgej1SMShHKSxMPUM4KEcsSiksQj1WNihHLmZyYW1lLFkpO2lmKCFCKXJldHVybiBudWxsO2xldCBWPUw2KEwpO3JldHVybiBRKCJidXR0b24iLHt0eXBlOiJidXR0b24iLCJkYXRhLWF4LWtleSI6eiwiZGF0YS1heC1pZCI6TC5pZCwiZGF0YS1heC1wYXRoIjpMLnBhdGgsImRhdGEtYXgtbGFiZWwiOkwubGFiZWwsImRhdGEtYXgtdmFsdWUiOkwudmFsdWUsImRhdGEtYXgtcm9sZSI6TC5yb2xlLCJkYXRhLWF4LXR5cGUiOkwudHlwZSwiZGF0YS1heC1lbmFibGVkIjpTdHJpbmcoTC5lbmFibGVkKSwiZGF0YS1heC1mcmFtZSI6UjgoTC5mcmFtZSksImRhdGEtYXgtc2VsZWN0ZWQiOlN0cmluZyhaKSwiYXJpYS1sYWJlbCI6Ry5sYWJlbHx8Vix0aXRsZTpWLG9uQ2xpY2s6KCk9PiQoeiksb25Nb3VzZUVudGVyOigpPT5fKHopLG9uTW91c2VMZWF2ZTooKT0+XyhudWxsKSxzdHlsZTp7Li4uUTAudGFyZ2V0LGxlZnQ6YCR7Qi54L1kud2lkdGgqMTAwfSVgLHRvcDpgJHtCLnkvWS5oZWlnaHQqMTAwfSVgLHdpZHRoOmAke0Iud2lkdGgvWS53aWR0aCoxMDB9JWAsaGVpZ2h0OmAke0IuaGVpZ2h0L1kuaGVpZ2h0KjEwMH0lYCxib3JkZXJDb2xvcjpaPyIjNjBhNWZhIjpxPyIjZmJiZjI0IjoiIzM0ZDM5OSIsYmFja2dyb3VuZDpaPyJyZ2JhKDk2LDE2NSwyNTAsMC4yNCkiOnE/InJnYmEoMjQ1LDE1OCwxMSwwLjI4KSI6InJnYmEoMTYsMTg1LDEyOSwwLjEyKSJ9fSl9LChYLEcpPT5YLmluZGV4PT09Ry5pbmRleCYmWC5oaWdobGlnaHRlZD09PUcuaGlnaGxpZ2h0ZWQmJlguc2VsZWN0ZWQ9PT1HLnNlbGVjdGVkJiZYLm9uSGlnaGxpZ2h0PT09Ry5vbkhpZ2hsaWdodCYmWC5vblNlbGVjdD09PUcub25TZWxlY3QmJlguc2NyZWVuLndpZHRoPT09Ry5zY3JlZW4ud2lkdGgmJlguc2NyZWVuLmhlaWdodD09PUcuc2NyZWVuLmhlaWdodCYmRTgoWC5lbGVtZW50LEcuZWxlbWVudCkpO2Z1bmN0aW9uIFE2KCl7bGV0e3NuYXBzaG90Olh9PV85KCkse2hpZ2hsaWdodGVkS2V5Okcsc2VsZWN0ZWRLZXk6SixzZXRIaWdobGlnaHRlZEtleTpZLHNldFNlbGVjdGVkS2V5OnF9PWs4KCk7aWYoIVg/LnNjcmVlbi53aWR0aHx8IVg/LnNjcmVlbi5oZWlnaHQpcmV0dXJuIG51bGw7cmV0dXJuIFEoImRpdiIse3N0eWxlOlEwLnRhcmdldHMsY2hpbGRyZW46WC5lbGVtZW50cy5tYXAoKFosXyk9PntsZXQgJD1SMShaKTtyZXR1cm4gUShxNix7ZWxlbWVudDpaLGluZGV4Ol8sc2NyZWVuOlguc2NyZWVuLGhpZ2hsaWdodGVkOiQ9PT1HLHNlbGVjdGVkOiQ9PT1KLG9uSGlnaGxpZ2h0Olksb25TZWxlY3Q6cX0sJCl9KX0pfXZhciBfNj1uMShmdW5jdGlvbih7ZWxlbWVudDpHLGluZGV4OkosYWN0aXZlOlksb25IaWdobGlnaHQ6cX0pe2xldCBaPVIxKEcpLF89QzgoRyxKKSwkPWAke01hdGgucm91bmQoRy5mcmFtZS53aWR0aCl9eCR7TWF0aC5yb3VuZChHLmZyYW1lLmhlaWdodCl9YCx6PVtfLmxhYmVsLF8ucm9sZXx8Xy50eXBlfHwiZWxlbWVudCIsJF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKTtyZXR1cm4gUSgiZGl2Iix7cm9sZToibGlzdGl0ZW0iLHRhYkluZGV4OjAsImRhdGEtYXgta2V5IjpaLHRpdGxlOnosb25Nb3VzZUVudGVyOigpPT5xKFopLG9uTW91c2VMZWF2ZTooKT0+cShudWxsKSxvbkZvY3VzOigpPT5xKFopLG9uQmx1cjooKT0+cShudWxsKSxzdHlsZTp7Li4uUTAubGlzdEl0ZW0sLi4uWT9RMC5saXN0SXRlbUFjdGl2ZTp7fX0sY2hpbGRyZW46W1EoInNwYW4iLHtzdHlsZTpRMC5pdGVtVGV4dCxjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOlEwLml0ZW1MYWJlbCxjaGlsZHJlbjpHLmxhYmVsfHxHLnJvbGV8fCJVbmxhYmVsZWQifSksUSgic3BhbiIse3N0eWxlOlEwLml0ZW1NZXRhLGNoaWxkcmVuOkcucm9sZXx8Ry50eXBlfHwiZWxlbWVudCJ9KV19KSxRKCJjb2RlIix7c3R5bGU6UTAuaXRlbVNpemUsY2hpbGRyZW46JH0pXX0pfSwoWCxHKT0+WC5pbmRleD09PUcuaW5kZXgmJlguYWN0aXZlPT09Ry5hY3RpdmUmJlgub25IaWdobGlnaHQ9PT1HLm9uSGlnaGxpZ2h0JiZFOChYLmVsZW1lbnQsRy5lbGVtZW50KSk7ZnVuY3Rpb24gJDYoe292ZXJsYXlFbmFibGVkOlgsb25Ub2dnbGVPdmVybGF5Okd9KXtsZXR7c25hcHNob3Q6Sn09XzkoKSx7aGlnaGxpZ2h0ZWRLZXk6WSxzZXRIaWdobGlnaHRlZEtleTpxfT1rOCgpLFo9Sj8uZWxlbWVudHM/P1tdLF89QTgoSiksJD1KPy5lcnJvcnM/LlswXT8/bnVsbDtyZXR1cm4gUSgiZGl2Iix7c3R5bGU6ey4uLkMuc2VjdGlvbixwYWRkaW5nOiI4cHggMTJweCJ9LGNoaWxkcmVuOltRKCJkaXYiLHtzdHlsZTpRMC5wYW5lbEhlYWRlcixjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOnsuLi5DLnNlY3Rpb25UaXRsZSxtYXJnaW46MH0sY2hpbGRyZW46IkFYIFRyZWUifSksUSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOkcsImFyaWEtcHJlc3NlZCI6WCxzdHlsZTpRMC5vdmVybGF5VG9nZ2xlLGNoaWxkcmVuOlg/Ik92ZXJsYXkgb24iOiJFbmFibGUgb3ZlcmxheSJ9KV19KSwhWD9udWxsOl8/USgiZGl2Iix7c3R5bGU6ey4uLkMuZW1wdHkscGFkZGluZzoxMn0sY2hpbGRyZW46WyJBWCB1bmF2YWlsYWJsZToiLCIgIixRKCJhIix7aHJlZjpKOCxzdHlsZTpRMC5lbXB0eUxpbmssY2hpbGRyZW46Imluc3RhbGwgQVhlIn0pXX0pOloubGVuZ3RoPT09MD9RKCJkaXYiLHtzdHlsZTp7Li4uQy5lbXB0eSxwYWRkaW5nOjEyfSxjaGlsZHJlbjokPz8iV2FpdGluZyBmb3IgYWNjZXNzaWJpbGl0eSBkYXRh4oCmIn0pOlEoImRpdiIse3N0eWxlOlEwLmxpc3Qscm9sZToibGlzdCIsY2hpbGRyZW46Wi5tYXAoKHosTCk9PntsZXQgQj1SMSh6KTtyZXR1cm4gUShfNix7ZWxlbWVudDp6LGluZGV4OkwsYWN0aXZlOkI9PT1ZLG9uSGlnaGxpZ2h0OnF9LEIpfSl9KV19KX1mdW5jdGlvbiBDOChYLEcpe2xldCBKPVgubGFiZWx8fFgucm9sZXx8YGVsZW1lbnQgJHtHKzF9YCxZPVgucm9sZXx8WC50eXBlO3JldHVybntpZDpYLmlkLHBhdGg6WC5wYXRoLGxhYmVsOkosdmFsdWU6WC52YWx1ZSxyb2xlOlksdHlwZTpYLnR5cGUsZW5hYmxlZDpYLmVuYWJsZWQsZnJhbWU6WC5mcmFtZX19ZnVuY3Rpb24gVjYoWCxHKXtsZXQgSj1NYXRoLm1heCgwLFgueCksWT1NYXRoLm1heCgwLFgueSkscT1NYXRoLm1pbihHLndpZHRoLFgueCtYLndpZHRoKSxaPU1hdGgubWluKEcuaGVpZ2h0LFgueStYLmhlaWdodCksXz1NYXRoLm1heCgwLHEtSiksJD1NYXRoLm1heCgwLFotWSk7cmV0dXJuIF8+MCYmJD4wP3t4OkoseTpZLHdpZHRoOl8saGVpZ2h0OiR9Om51bGx9ZnVuY3Rpb24gUjEoWCl7cmV0dXJuIFguaWR9ZnVuY3Rpb24gTDYoWCl7cmV0dXJuW2BBWCBsYWJlbDogJHtYLmxhYmVsfHwiVW5sYWJlbGVkIn1gLFgucm9sZT9gcm9sZTogJHtYLnJvbGV9YDoiIixYLnR5cGU/YHR5cGU6ICR7WC50eXBlfWA6IiIsWC52YWx1ZT9gdmFsdWU6ICR7WC52YWx1ZX1gOiIiLFguaWQ/YGlkOiAke1guaWR9YDoiIixgcGF0aDogJHtYLnBhdGh9YCxgZnJhbWU6ICR7UjgoWC5mcmFtZSl9YF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIjsgIil9ZnVuY3Rpb24gUjgoWCl7cmV0dXJuYCR7WC54fSwke1gueX0gJHtYLndpZHRofXgke1guaGVpZ2h0fWB9ZnVuY3Rpb24gejYoe292ZXJsYXlFbmFibGVkOlgsc3RyZWFtaW5nOkcsb25Ub2dnbGVPdmVybGF5Okp9KXtsZXR7c3RhdHVzOll9PV85KCksW3EsWl09ayghMSk7cmV0dXJuIFEoSjAuQnV0dG9uLHsiYXJpYS1sYWJlbCI6WD8iSGlkZSBhY2Nlc3NpYmlsaXR5IG92ZXJsYXkiOiJTaG93IGFjY2Vzc2liaWxpdHkgb3ZlcmxheSIsImFyaWEtcHJlc3NlZCI6WCx0aXRsZTpZLG9uQ2xpY2s6Sixvbk1vdXNlRW50ZXI6KCk9PlooITApLG9uTW91c2VMZWF2ZTooKT0+WighMSksc3R5bGU6WCYmRz97Li4uUTAudG9vbGJhckJ1dHRvbkFjdGl2ZSwuLi5xP1EwLnRvb2xiYXJCdXR0b25BY3RpdmVIb3Zlcjp7fX06dm9pZCAwLGNoaWxkcmVuOlEoInN2ZyIse3dpZHRoOiIxOSIsaGVpZ2h0OiIxOSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltRKCJwYXRoIix7ZDoiTTMgOFY1YTIgMiAwIDAgMSAyLTJoMyJ9KSxRKCJwYXRoIix7ZDoiTTE2IDNoM2EyIDIgMCAwIDEgMiAydjMifSksUSgicGF0aCIse2Q6Ik0yMSAxNnYzYTIgMiAwIDAgMS0yIDJoLTMifSksUSgicGF0aCIse2Q6Ik04IDIxSDVhMiAyIDAgMCAxLTItMnYtMyJ9KSxRKCJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMy41In0pXX0pfSl9ZnVuY3Rpb24gVzYoe29wZW46WCxvbkNsb3NlOkcsdWRpZDpKLGN1cnJlbnRBcHA6WSxheE92ZXJsYXlFbmFibGVkOnEsb25Ub2dnbGVBeE92ZXJsYXk6Wn0pe3JldHVybiBRKCJhc2lkZSIse3N0eWxlOnsuLi5DLnBhbmVsLHRyYW5zZm9ybTpYPyJ0cmFuc2xhdGVYKDApIjoidHJhbnNsYXRlWChjYWxjKDEwMCUgKyAyNHB4KSkiLG9wYWNpdHk6WD8xOjAscG9pbnRlckV2ZW50czpYPyJhdXRvIjoibm9uZSJ9LCJhcmlhLWhpZGRlbiI6IVgsY2hpbGRyZW46W1EoImhlYWRlciIse3N0eWxlOkMuaGVhZGVyLGNoaWxkcmVuOltRKCJzcGFuIix7c3R5bGU6Qy5oZWFkZXJUaXRsZSxjaGlsZHJlbjoiVG9vbHMifSksUSgiYnV0dG9uIix7b25DbGljazpHLHN0eWxlOkMuY2xvc2VCdG4sImFyaWEtbGFiZWwiOiJDbG9zZSBwYW5lbCIsY2hpbGRyZW46USgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1EoImxpbmUiLHt4MToiMTgiLHkxOiI2Iix4MjoiNiIseTI6IjE4In0pLFEoImxpbmUiLHt4MToiNiIseTE6IjYiLHgyOiIxOCIseTI6IjE4In0pXX0pfSldfSksWCYmUSgiZGl2Iix7c3R5bGU6Qy5ib2R5LGNoaWxkcmVuOltRKCQ2LHtvdmVybGF5RW5hYmxlZDpxLG9uVG9nZ2xlT3ZlcmxheTpafSksUShHNix7dWRpZDpKLGN1cnJlbnRBcHA6WX0pLFEoWTYse3VkaWQ6SixidW5kbGVJZDpZPy5idW5kbGVJZD8/bnVsbH0pXX0pXX0pfXZhciBLNj17d2lkdGg6IjEwMCUiLG1heFdpZHRoOjM2MCxtYXJnaW5Ub3A6OCxiYWNrZ3JvdW5kOiIjMWMxYzFlIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIixib3JkZXJSYWRpdXM6MTAscGFkZGluZzo0LGZvbnRGYW1pbHk6InVpLW1vbm9zcGFjZSwgbW9ub3NwYWNlIixmb250U2l6ZToxMyxjb2xvcjoiI2VlZSIsdGV4dEFsaWduOiJsZWZ0IixtYXhIZWlnaHQ6IjcwdmgiLG92ZXJmbG93WToiYXV0byIsbWluSGVpZ2h0OjB9O2Z1bmN0aW9uIEg2KCl7bGV0IFg9d2luZG93Ll9fU0lNX1BSRVZJRVdfXyxbRyxKXT1rKCExKSxbWSxxXT1rKFtdKSxbWixfXT1rKCExKSxbJCx6XT1rKG51bGwpLFtMLEJdPWsobmV3IFNldCksW1YsSF09ayghMSksW08sVV09ayghMSksUD1SKGFzeW5jKCk9PntfKCEwKSx6KG51bGwpO3RyeXtsZXQgSz1hd2FpdCBxMCgieGNydW4gc2ltY3RsIGxpc3QgZGV2aWNlcyBhdmFpbGFibGUgLWoiKTtpZihLLmV4aXRDb2RlIT09MCl0aHJvdyBFcnJvcihLLnN0ZGVycnx8InNpbWN0bCBsaXN0IGZhaWxlZCIpO3EobDQoSy5zdGRvdXQpKX1jYXRjaChLKXt6KEsgaW5zdGFuY2VvZiBFcnJvcj9LLm1lc3NhZ2U6IkZhaWxlZCB0byBsaXN0IGRldmljZXMiKX1maW5hbGx5e18oITEpfX0sW10pO2lmKGooKCk9PntQKCl9LFtQXSksaigoKT0+e2lmKCFYPy5sb2dzRW5kcG9pbnQpcmV0dXJuO2xldCBLPW5ldyBFdmVudFNvdXJjZShYLmxvZ3NFbmRwb2ludCksVD1uZXcgTWFwLFM9WyIjOGJlOWZkIiwiIzUwZmE3YiIsIiNmZmI4NmMiLCIjZmY3OWM2IiwiI2JkOTNmOSIsIiNmMWZhOGMiLCIjNjI3MmE0IiwiI2ZmNTU1NSIsIiM2OWZmOTQiLCIjZDZhY2ZmIiwiI2ZmZmZhNSIsIiNhNGZmZmYiLCIjZmY2ZTZlIiwiI2NhYTlmYSIsIiM1YWY3OGUiXTtmdW5jdGlvbiB2KFcwKXtsZXQgcD1ULmdldChXMCk7aWYoIXApe2xldCBnPTA7Zm9yKGxldCBZMD0wO1kwPFcwLmxlbmd0aDtZMCsrKWc9KGc8PDUpLWcrVzAuY2hhckNvZGVBdChZMCl8MDtwPVNbTWF0aC5hYnMoZyklUy5sZW5ndGhdLFQuc2V0KFcwLHApfXJldHVybiBwfWxldCB1PSIiLGk9ITE7cmV0dXJuIEsub25tZXNzYWdlPShXMCk9Pnt0cnl7bGV0IHA9SlNPTi5wYXJzZShXMC5kYXRhKSxnPXAucHJvY2Vzc0ltYWdlUGF0aD8uc3BsaXQoIi8iKS5wb3AoKT8/cC5zZW5kZXJJbWFnZVBhdGg/LnNwbGl0KCIvIikucG9wKCk/PyIiLFkwPXAuc3Vic3lzdGVtPz8iIixTMD1wLmNhdGVnb3J5Pz8iIixLMD1wLmV2ZW50TWVzc2FnZT8/IiI7aWYoIUswKXJldHVybjtpZihnIT09dSl7aWYoaSljb25zb2xlLmdyb3VwRW5kKCk7bGV0IFoxPXYoZyk7Y29uc29sZS5ncm91cENvbGxhcHNlZChgJWMke2d9JHtZMD9gICVjJHtZMH0ke1MwPyI6IitTMDoiIn1gOiIifWAsYGNvbG9yOiR7WjF9O2ZvbnQtd2VpZ2h0OmJvbGRgLC4uLlkwP1siY29sb3I6Izg4ODtmb250LXdlaWdodDpub3JtYWwiXTpbXSksaT0hMCx1PWd9bGV0IG0wPShwLm1lc3NhZ2VUeXBlPz8iIikudG9Mb3dlckNhc2UoKSx2MD1ZMCYmZz09PXU/YCVjJHtTMHx8WTB9JWMgYDoiIix3MD12MD9bImNvbG9yOiM4ODg7Zm9udC1zdHlsZTppdGFsaWMiLCJjb2xvcjppbmhlcml0Il06W107aWYobTA9PT0iZmF1bHQifHxtMD09PSJlcnJvciIpY29uc29sZS5sb2coYCR7djB9JWMke0swfWAsLi4udzAsImNvbG9yOiNmZjU1NTUiKTtlbHNlIGlmKG0wPT09ImRlYnVnIiljb25zb2xlLmxvZyhgJHt2MH0lYyR7SzB9YCwuLi53MCwiY29sb3I6IzYyNzJhNCIpO2Vsc2UgY29uc29sZS5sb2coYCR7djB9JWMke0swfWAsLi4udzAsImNvbG9yOmluaGVyaXQiKX1jYXRjaHt9fSwoKT0+e2lmKGkpY29uc29sZS5ncm91cEVuZCgpO0suY2xvc2UoKX19LFtYPy5sb2dzRW5kcG9pbnRdKSwhWClyZXR1cm4gUShaNix7ZGV2aWNlczpZLGxvYWRpbmc6WixlcnJvcjokLG9uUmVmcmVzaDpQfSk7bGV0IEY9WS5maW5kKChLKT0+Sy51ZGlkPT09WC5kZXZpY2UpPz9udWxsO2ooKCk9Pntkb2N1bWVudC50aXRsZT1GPy5uYW1lP2BTaW11bGF0b3IgLSAke0YubmFtZX1gOiJTaW11bGF0b3IgUHJldmlldyJ9LFtGPy5uYW1lXSk7bGV0IEE9ZDAoRj8ubmFtZSksST1wNChYLnN0cmVhbVVybCksW3MsaF09ayhudWxsKSxjPXM/P0kuY29uZmlnPz9NMShBLEY/Lm5hbWUpLGU9dzEoQSxjKSxuPUExKEEsYyksXzA9STEoYyksZj1iKG51bGwpO2ooKCk9PntsZXQgSz0hMSxUPW51bGwsUz1udWxsLHY9KCk9PntpZihLfHxUKXJldHVybjtUPXNldFRpbWVvdXQoKCk9PntUPW51bGwsdSgpfSwxMDAwKX0sdT0oKT0+e2xldCBpPW5ldyBXZWJTb2NrZXQoWC53c1VybCk7aS5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciIsUz1pLGYuY3VycmVudD1pLGkub25jbG9zZT0oKT0+e2lmKGYuY3VycmVudD09PWkpZi5jdXJyZW50PW51bGw7digpfSxpLm9uZXJyb3I9KCk9PntpLmNsb3NlKCl9fTtyZXR1cm4gdSgpLCgpPT57aWYoSz0hMCxUKWNsZWFyVGltZW91dChUKTtpZihmLmN1cnJlbnQ9PT1TKWYuY3VycmVudD1udWxsO1M/LmNsb3NlKCl9fSxbWC53c1VybF0pO2xldCB5PVIoKEssVCk9PntsZXQgUz1mLmN1cnJlbnQ7aWYoIVN8fFMucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5PUEVOKXJldHVybjtsZXQgdj1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoVCkpLHU9bmV3IFVpbnQ4QXJyYXkoMSt2Lmxlbmd0aCk7dVswXT1LLHUuc2V0KHYsMSksUy5zZW5kKHUpfSxbXSksZD1SKChLKT0+eSgzLEspLFt5XSksWTE9UigoSyk9PnkoNSxLKSxbeV0pLGMwPVIoKEspPT55KDQse2J1dHRvbjpLfSksW3ldKSxSMD1SKChLKT0+e2goKFQpPT5UJiZULndpZHRoPT09Sy53aWR0aCYmVC5oZWlnaHQ9PT1LLmhlaWdodCYmVC5vcmllbnRhdGlvbj09PUsub3JpZW50YXRpb24/VDpLKX0sW10pLGIxPVIoKEspPT57eSg3LHtvcmllbnRhdGlvbjpLfSl9LFt5XSk7aigoKT0+e2gobnVsbCl9LFtYLnN0cmVhbVVybF0pLGooKCk9PntsZXQgSz1JLmNvbmZpZztpZighSylyZXR1cm47aCgoVCk9PlQmJlQud2lkdGg9PT1LLndpZHRoJiZULmhlaWdodD09PUsuaGVpZ2h0JiZULm9yaWVudGF0aW9uPT09Sy5vcmllbnRhdGlvbj9UOm51bGwpfSxbSS5jb25maWc/LndpZHRoLEkuY29uZmlnPy5oZWlnaHQsSS5jb25maWc/Lm9yaWVudGF0aW9uXSk7bGV0IFAwPVIoKEssVCk9Pnt5KDYse3R5cGU6Syx1c2FnZTpUfSl9LFt5XSksW2wwLFUwXT1rKG51bGwpLFtoMCxnMF09ayghMSksW0wwLGEwXT1rKCgpPT50eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cuaW5uZXJXaWR0aDowKTtqKCgpPT57bGV0IEs9KCk9PmEwKHdpbmRvdy5pbm5lcldpZHRoKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsSyksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLEspfSxbXSksaigoKT0+e2xldCBLPW5ldyBFdmVudFNvdXJjZShYLmFwcFN0YXRlRW5kcG9pbnQ/P1E5KCJhcHBzdGF0ZSIpKSxUPW51bGw7cmV0dXJuIEsub25tZXNzYWdlPShTKT0+e3RyeXtsZXQgdj1KU09OLnBhcnNlKFMuZGF0YSk7aWYoVCljbGVhclRpbWVvdXQoVCk7bGV0IHU9dj8uaXNSZWFjdE5hdGl2ZT8wOjYwMDtUPXNldFRpbWVvdXQoKCk9PlUwKHYpLHUpfWNhdGNoe319LCgpPT57aWYoVCljbGVhclRpbWVvdXQoVCk7Sy5jbG9zZSgpfX0sW1guYXBwU3RhdGVFbmRwb2ludF0pO2xldCBJMD1SKGFzeW5jKCk9PntQMCgiZG93biIsMjI3KSxhd2FpdCBuZXcgUHJvbWlzZSgoUyk9PnNldFRpbWVvdXQoUywzMCkpLFAwKCJkb3duIiwyMSksYXdhaXQgbmV3IFByb21pc2UoKFMpPT5zZXRUaW1lb3V0KFMsMzApKSxQMCgidXAiLDIxKSxhd2FpdCBuZXcgUHJvbWlzZSgoUyk9PnNldFRpbWVvdXQoUywzMCkpLFAwKCJ1cCIsMjI3KX0sW1AwXSksaTA9YihudWxsKSxbTTAsQTBdPWsoITApLFgwPWIoITApO1gwLmN1cnJlbnQ9TTA7bGV0IGIwPWIobmV3IFNldCk7aigoKT0+e2xldCBLPShUKT0+e2xldCBTPSEhaTAuY3VycmVudD8uY29udGFpbnMoVC50YXJnZXQpO0EwKFMpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLEssITApLCgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsSywhMCl9LFtdKSxqKCgpPT57aWYoTTApcmV0dXJuO2xldCBLPWIwLmN1cnJlbnQ7aWYoSy5zaXplPT09MClyZXR1cm47Zm9yKGxldCBUIG9mIEspeSg2LHt0eXBlOiJ1cCIsdXNhZ2U6VH0pO0suY2xlYXIoKX0sW00wLHldKSxqKCgpPT57bGV0IEs9KHYsdSk9PntpZighWDAuY3VycmVudClyZXR1cm47aWYodi5jb2RlPT09IktleUgiJiZ2Lm1ldGFLZXkmJnYuc2hpZnRLZXkpe2lmKHYucHJldmVudERlZmF1bHQoKSx1PT09ImRvd24iJiYhdi5yZXBlYXQpeSg0LHtidXR0b246ImhvbWUifSk7cmV0dXJufWlmKHYuY29kZT09PSJLZXlBIiYmdi5tZXRhS2V5JiZ2LnNoaWZ0S2V5KXtpZih2LnByZXZlbnREZWZhdWx0KCksdT09PSJkb3duIiYmIXYucmVwZWF0KXEwKGB4Y3J1biBzaW1jdGwgdWkgJHtYLmRldmljZX0gYXBwZWFyYW5jZWApLnRoZW4oKFcwKT0+e2xldCBwPVcwLnN0ZG91dC50cmltKCk9PT0iZGFyayI/ImxpZ2h0IjoiZGFyayI7cmV0dXJuIHEwKGB4Y3J1biBzaW1jdGwgdWkgJHtYLmRldmljZX0gYXBwZWFyYW5jZSAke3B9YCl9KS5jYXRjaCgoKT0+e30pO3JldHVybn1sZXQgaT1kNCh2LmNvZGUpO2lmKGk9PW51bGwpcmV0dXJuO2lmKHYucHJldmVudERlZmF1bHQoKSx1PT09ImRvd24iKWIwLmN1cnJlbnQuYWRkKGkpO2Vsc2UgYjAuY3VycmVudC5kZWxldGUoaSk7eSg2LHt0eXBlOnUsdXNhZ2U6aX0pfSxUPSh2KT0+Syh2LCJkb3duIiksUz0odik9PksodiwidXAiKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLFQpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsUyksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsVCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIixTKX19LFt5LFguZGV2aWNlXSk7bGV0IHowPVIoYXN5bmMoSyk9PntpZihWfHxLLnVkaWQ9PT1YLmRldmljZSlyZXR1cm47SCghMCk7dHJ5e2lmKEsuc3RhdGUhPT0iQm9vdGVkIilhd2FpdCBxMChgeGNydW4gc2ltY3RsIGJvb3QgJHtLLnVkaWR9YCk7bGV0IFQ9YXdhaXQgcTAoYGJ1bnggc2VydmUtc2ltIC0tZGV0YWNoICR7Sy51ZGlkfWApO2lmKFQuZXhpdENvZGUhPT0wKXRocm93IEVycm9yKFQuc3RkZXJyfHwiRmFpbGVkIHRvIHN0YXJ0IHNlcnZlLXNpbSIpO2xldCBTPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1Muc2VhcmNoUGFyYW1zLnNldCgiZGV2aWNlIixLLnVkaWQpLHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oUy50b1N0cmluZygpKX1jYXRjaHtIKCExKX19LFtWLFguZGV2aWNlXSksRDA9bjQoKSxvMD1lNCh7ZXhlYzpxMCx1ZGlkOlguZGV2aWNlLGVuYWJsZWQ6RyxvblVwbG9hZFN0YXJ0OkQwLmFkZCxvblVwbG9hZEVuZDooSyxULFMpPT5EMC51cGRhdGUoSyx7c3RhdHVzOlQ/InN1Y2Nlc3MiOiJlcnJvciIsbWVzc2FnZTpTfSksb25VbnN1cHBvcnRlZDooSyk9PntsZXQgVD1EMC5hZGQoSy5uYW1lLCJtZWRpYSIpO0QwLnVwZGF0ZShULHtzdGF0dXM6ImVycm9yIixtZXNzYWdlOmBVbnN1cHBvcnRlZDogJHtLLnR5cGV8fCQ5KEspfWB9KX19KSwkMD1SKGFzeW5jKEspPT57QigoVCk9Pm5ldyBTZXQoVCkuYWRkKEspKTt0cnl7YXdhaXQgcTAoYHhjcnVuIHNpbWN0bCBzaHV0ZG93biAke0t9YCksYXdhaXQgUCgpfWZpbmFsbHl7QigoVCk9PntsZXQgUz1uZXcgU2V0KFQpO3JldHVybiBTLmRlbGV0ZShLKSxTfSl9fSxbUF0pLGowPXk4KzI0LEcwPWgwJiZMMD49bitqMCs2ND9qMDowO3JldHVybiBRKGM0LHtlbmRwb2ludDpPP1g/LmF4RW5kcG9pbnQ6dm9pZCAwLGNoaWxkcmVuOlEoImRpdiIse3N0eWxlOnsuLi5aMC5wYWdlLHBhZGRpbmdSaWdodDoyNCtHMCx0cmFuc2l0aW9uOiJwYWRkaW5nLXJpZ2h0IDAuMjVzIGVhc2UifSxjaGlsZHJlbjpbUSgiZGl2Iix7c3R5bGU6ey4uLlowLnNpbXVsYXRvclN0YWNrLG1heFdpZHRoOm59LGNoaWxkcmVuOltRKEowLHtleGVjOnEwLG9uUm90YXRlOmIxLG9yaWVudGF0aW9uOmMub3JpZW50YXRpb24/P251bGwsZGV2aWNlVWRpZDpYLmRldmljZSxkZXZpY2VOYW1lOkY/Lm5hbWU/P251bGwsZGV2aWNlUnVudGltZTpGPy5ydW50aW1lPz9udWxsLHN0cmVhbWluZzpHLGNoaWxkcmVuOltRKGE0LHtkZXZpY2VzOlksc2VsZWN0ZWRVZGlkOlguZGV2aWNlLGxvYWRpbmc6WixlcnJvcjokLHN0b3BwaW5nVWRpZHM6TCxvblJlZnJlc2g6UCxvblNlbGVjdDp6MCxvblN0b3A6JDAsdHJpZ2dlcjpRKEowLlRpdGxlLHt9KX0pLFEoSjAuQWN0aW9ucyx7Y2hpbGRyZW46W2wwPy5pc1JlYWN0TmF0aXZlJiZRKEowLkJ1dHRvbix7ImFyaWEtbGFiZWwiOiJSZWxvYWQgUmVhY3QgTmF0aXZlIGJ1bmRsZSIsdGl0bGU6IlJlbG9hZCAoQ21kK1IpIixvbkNsaWNrOigpPT52b2lkIEkwKCksY2hpbGRyZW46USgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1EoInBhdGgiLHtkOiJNMyAxMmE5IDkgMCAxIDAgMy41LTcuMSJ9KSxRKCJwb2x5bGluZSIse3BvaW50czoiMyAzIDMgOSA5IDkifSldfSl9KSxRKEowLkhvbWVCdXR0b24se29uQ2xpY2s6KEspPT57Sy5wcmV2ZW50RGVmYXVsdCgpLGMwKCJob21lIil9fSksUSh6Nix7b3ZlcmxheUVuYWJsZWQ6TyxzdHJlYW1pbmc6RyxvblRvZ2dsZU92ZXJsYXk6KCk9PlUoKEspPT4hSyl9KSxRKEowLlJvdGF0ZUJ1dHRvbix7dGl0bGU6IlJvdGF0ZSBkZXZpY2UifSldfSldfSksUSgiZGl2Iix7cmVmOmkwLHN0eWxlOnttYXhXaWR0aDpuLG1heEhlaWdodDoiMTAwJSIsd2lkdGg6IjEwMCUiLGFzcGVjdFJhdGlvOl8wLHBvc2l0aW9uOiJyZWxhdGl2ZSJ9LC4uLm8wLmRyb3Bab25lUHJvcHMsY2hpbGRyZW46W1EoVTEse3VybDpYLnVybCxzdHlsZTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsYm9yZGVyOiJub25lIn0saW1hZ2VTdHlsZTp7Ym9yZGVyUmFkaXVzOmUsY29ybmVyU2hhcGU6InN1cGVyZWxsaXBzZSgxLjMpIn0saGlkZUNvbnRyb2xzOiEwLG9uU3RyZWFtaW5nQ2hhbmdlOkosb25TdHJlYW1Ub3VjaDpkLG9uU3RyZWFtTXVsdGlUb3VjaDpZMSxvblN0cmVhbUJ1dHRvbjpjMCxzdWJzY3JpYmVGcmFtZTpJLnN1YnNjcmliZUZyYW1lLHN0cmVhbUZyYW1lOkkuZnJhbWUsc3RyZWFtQ29uZmlnOmMsb25TY3JlZW5Db25maWdDaGFuZ2U6UjB9KSxPJiZRKFE2LHt9KSxvMC5pc0RyYWdPdmVyJiZRKCJkaXYiLHtzdHlsZTp7Li4uWjAuZHJvcE92ZXJsYXksYm9yZGVyUmFkaXVzOmV9LGNoaWxkcmVuOltRKCJzdmciLHt3aWR0aDoiMzIiLGhlaWdodDoiMzIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIxLjUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltRKCJwYXRoIix7ZDoiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQifSksUSgicG9seWxpbmUiLHtwb2ludHM6IjE3IDggMTIgMyA3IDgifSksUSgibGluZSIse3gxOiIxMiIseTE6IjMiLHgyOiIxMiIseTI6IjE1In0pXX0pLFEoInNwYW4iLHtzdHlsZTp7Zm9udFNpemU6MTMsZm9udFdlaWdodDo1MDB9LGNoaWxkcmVuOiJEcm9wIG1lZGlhIG9yIC5pcGEifSldfSldfSldfSksRDAudG9hc3RzLmxlbmd0aD4wJiZRKCJkaXYiLHtzdHlsZTpaMC50b2FzdFN0YWNrLGNoaWxkcmVuOkQwLnRvYXN0cy5tYXAoKEspPT5RKCJkaXYiLHtzdHlsZTpaMC50b2FzdCxjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOnsuLi5aMC5kb3QsYmFja2dyb3VuZDpLLnN0YXR1cz09PSJ1cGxvYWRpbmciPyIjYTViNGZjIjpLLnN0YXR1cz09PSJzdWNjZXNzIj8iIzRhZGU4MCI6IiNmODcxNzEifX0pLFEoInNwYW4iLHtzdHlsZTp7ZmxleDoxLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LGNoaWxkcmVuOltLLnN0YXR1cz09PSJ1cGxvYWRpbmciJiYoSy5raW5kPT09ImlwYSI/YEluc3RhbGxpbmcgJHtLLm5hbWV94oCmYDpgVXBsb2FkaW5nICR7Sy5uYW1lfeKApmApLEsuc3RhdHVzPT09InN1Y2Nlc3MiJiYoSy5raW5kPT09ImlwYSI/YEluc3RhbGxlZCAke0submFtZX1gOmBBZGRlZCAke0submFtZX0gdG8gUGhvdG9zYCksSy5zdGF0dXM9PT0iZXJyb3IiJiZgJHtLLm5hbWV9OiAke0subWVzc2FnZT8/IlVwbG9hZCBmYWlsZWQifWBdfSldfSxLLmlkKSl9KSxRKCJidXR0b24iLHtvbkNsaWNrOigpPT5nMCgoSyk9PiFLKSxzdHlsZTp7Li4uQy50b2dnbGUsb3BhY2l0eTpoMD8wOjEscG9pbnRlckV2ZW50czpoMD8ibm9uZSI6ImF1dG8ifSwiYXJpYS1sYWJlbCI6Ik9wZW4gdG9vbHMgcGFuZWwiLHRpdGxlOiJPcGVuIHRvb2xzIixjaGlsZHJlbjpRKCJzdmciLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIxLjc1IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbUSgicmVjdCIse3g6IjMiLHk6IjQiLHdpZHRoOiIxOCIsaGVpZ2h0OiIxNiIscng6IjIuNSJ9KSxRKCJsaW5lIix7eDE6IjE1Iix5MToiNCIseDI6IjE1Iix5MjoiMjAifSldfSl9KSxRKFc2LHtvcGVuOmgwLG9uQ2xvc2U6KCk9PmcwKCExKSx1ZGlkOlguZGV2aWNlLGN1cnJlbnRBcHA6bDAsYXhPdmVybGF5RW5hYmxlZDpPLG9uVG9nZ2xlQXhPdmVybGF5OigpPT5VKChLKT0+IUspfSksUSgiZGl2Iix7c3R5bGU6WjAuYmFyLGNoaWxkcmVuOlEoInNwYW4iLHtzdHlsZTp7Li4uWjAubGl2ZSxjb2xvcjpHPyIjNGFkZTgwIjoiIzY2NiJ9LGNoaWxkcmVuOltRKCJzcGFuIix7c3R5bGU6ey4uLlowLmRvdCxiYWNrZ3JvdW5kOkc/IiM0YWRlODAiOiIjNjY2In19KSxHPyJsaXZlIjoiY29ubmVjdGluZyJdfSl9KV19KX0pfXZhciBaMD17cGFnZTp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGhlaWdodDoiMTAwdmgiLGJhY2tncm91bmQ6IiMwYTBhMGEiLHBhZGRpbmc6MjQsZ2FwOjEyLGZvbnRGYW1pbHk6Ii1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgc2Fucy1zZXJpZiIsYm94U2l6aW5nOiJib3JkZXItYm94In0sc2ltdWxhdG9yU3RhY2s6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6MTIsd2lkdGg6IjEwMCUiLG1pbldpZHRoOjAsdHJhbnNpdGlvbjoibWF4LXdpZHRoIDAuMjVzIGVhc2UifSxiYXI6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjEwLGZvbnRTaXplOjEyLGZvbnRGYW1pbHk6InVpLW1vbm9zcGFjZSwgbW9ub3NwYWNlIixjb2xvcjoiIzY2NiJ9LGxpdmU6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjUsdHJhbnNpdGlvbjoiY29sb3IgMC4zcyJ9LGRvdDp7d2lkdGg6NixoZWlnaHQ6Nixib3JkZXJSYWRpdXM6IjUwJSIsdHJhbnNpdGlvbjoiYmFja2dyb3VuZCAwLjNzIn0sZW1wdHk6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6MTIsdGV4dEFsaWduOiJjZW50ZXIifSxlbXB0eVRpdGxlOntmb250U2l6ZToxOCxtYXJnaW46MCxjb2xvcjoiI2VlZSJ9LGVtcHR5SGludDp7Y29sb3I6IiM4ODgiLGZvbnRTaXplOjE0LG1heFdpZHRoOjQ4MH0sY29kZTp7YmFja2dyb3VuZDoiIzIyMiIscGFkZGluZzoiMnB4IDZweCIsYm9yZGVyUmFkaXVzOjQsZm9udFNpemU6MTN9LGRyb3BPdmVybGF5Ontwb3NpdGlvbjoiYWJzb2x1dGUiLGluc2V0OjAsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGdhcDo4LGJvcmRlcjoiMnB4IGRhc2hlZCAjYTViNGZjIixiYWNrZ3JvdW5kOiJyZ2JhKDk5LDEwMiwyNDEsMC4xMikiLGJhY2tkcm9wRmlsdGVyOiJibHVyKDJweCkiLGNvbG9yOiIjYTViNGZjIixwb2ludGVyRXZlbnRzOiJub25lIix6SW5kZXg6MjB9LHRvYXN0U3RhY2s6e3Bvc2l0aW9uOiJmaXhlZCIsYm90dG9tOjE2LHJpZ2h0OjE2LGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjYsbWF4V2lkdGg6MzIwLHpJbmRleDozMH0sdG9hc3Q6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjgscGFkZGluZzoiOHB4IDEycHgiLGJhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czo4LGNvbG9yOiIjZWVlIixmb250U2l6ZToxMixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsYm94U2hhZG93OiIwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC40KSJ9fSxENj17cG9zaXRpb246ImFic29sdXRlIix0b3A6ImNhbGMoMTAwJSArIDZweCkiLGxlZnQ6MCxtaW5XaWR0aDoyNjAsbWF4SGVpZ2h0OjM2MCxvdmVyZmxvd1k6ImF1dG8iLGJhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czoxMCxwYWRkaW5nOjQsYm94U2hhZG93OiIwIDhweCAyNHB4IHJnYmEoMCwwLDAsMC41KSIsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGZvbnRTaXplOjEzLGNvbG9yOiIjZWVlIix6SW5kZXg6MjB9LGI4PXtkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixwYWRkaW5nOiI2cHggMTBweCIsZm9udFNpemU6MTEsY29sb3I6IiNhYWEifSxqOD17YmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6IiNhNWI0ZmMiLGZvbnRTaXplOjExLGN1cnNvcjoicG9pbnRlciIscGFkZGluZzowfSxaOT17cGFkZGluZzoiNnB4IDEwcHgiLGNvbG9yOiIjZjg3MTcxIixmb250U2l6ZToxMX0scTk9e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjgscGFkZGluZzoiNnB4IDEwcHgiLGJvcmRlclJhZGl1czo2LGN1cnNvcjoicG9pbnRlciIsdHJhbnNpdGlvbjoiYmFja2dyb3VuZCAwLjE1cyJ9LE82PXtoZWlnaHQ6MSxiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixtYXJnaW46IjRweCAwIn0sUzg9e3BhZGRpbmc6MTIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC40KSIsZm9udFNpemU6MTEsdGV4dEFsaWduOiJjZW50ZXIifSx2OD17cGFkZGluZzoiNnB4IDEwcHggMnB4Iixmb250U2l6ZToxMCxmb250V2VpZ2h0OjYwMCxjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjQpIix0ZXh0VHJhbnNmb3JtOiJ1cHBlcmNhc2UiLGxldHRlclNwYWNpbmc6IjAuMDhlbSJ9LHk4PTMyMCxDPXt0b2dnbGU6e3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjE2LHJpZ2h0OjE2LHdpZHRoOjMwLGhlaWdodDozMCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLGJvcmRlclJhZGl1czo2LGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNikiLGN1cnNvcjoicG9pbnRlciIsdHJhbnNpdGlvbjoiYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlIix6SW5kZXg6NDB9LHBhbmVsOntwb3NpdGlvbjoiZml4ZWQiLHRvcDoxMixyaWdodDoxMixib3R0b206MTIsd2lkdGg6eTgsYmFja2dyb3VuZDoicmdiYSgyMCwyMCwyMiwwLjkyKSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjE0LGNvbG9yOiIjZWVlIixkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLG92ZXJmbG93OiJoaWRkZW4iLHRyYW5zaXRpb246InRyYW5zZm9ybSAwLjI1cyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZSIsYm94U2hhZG93OiIwIDEycHggNDBweCByZ2JhKDAsMCwwLDAuNTUpIixiYWNrZHJvcEZpbHRlcjoiYmx1cigxOHB4KSIsV2Via2l0QmFja2Ryb3BGaWx0ZXI6ImJsdXIoMThweCkiLGZvbnRGYW1pbHk6Ii1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgc2Fucy1zZXJpZiIsekluZGV4OjM1fSxoZWFkZXI6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLHBhZGRpbmc6IjZweCAxMHB4IDZweCAxMnB4In0saGVhZGVyVGl0bGU6e2ZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NTAwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTUpIn0sY2xvc2VCdG46e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLGNvbG9yOiIjYWFhIixjdXJzb3I6InBvaW50ZXIiLHBhZGRpbmc6NCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGJvcmRlclJhZGl1czo0fSxib2R5OntwYWRkaW5nOjE0LG92ZXJmbG93WToiYXV0byIsZmxleDoxLGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjEyfSxzZWN0aW9uVGl0bGU6e2ZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NjAwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNSkiLHRleHRUcmFuc2Zvcm06InVwcGVyY2FzZSIsbGV0dGVyU3BhY2luZzoiMC4wOGVtIixtYXJnaW46IjAgMCAxMHB4In0sc2VjdGlvbjp7YmFja2dyb3VuZDoiIzFjMWMxZSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjEwLHBhZGRpbmc6MTJ9LGVtcHR5OntiYWNrZ3JvdW5kOiIjMWMxYzFlIixib3JkZXI6IjFweCBkYXNoZWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpIixib3JkZXJSYWRpdXM6MTAscGFkZGluZzoxNixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjUpIixmb250U2l6ZToxMix0ZXh0QWxpZ246ImNlbnRlciJ9LGFwcEhlYWRlcjp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6MTIsbWFyZ2luQm90dG9tOjEwfSxhcHBJY29uOnt3aWR0aDo0NCxoZWlnaHQ6NDQsYm9yZGVyUmFkaXVzOjEwLGZsZXhTaHJpbms6MCxvYmplY3RGaXQ6ImNvdmVyIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIn0sYXBwTmFtZTp7Zm9udFNpemU6MTQsZm9udFdlaWdodDo2MDAsb3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIn0sYXBwQnVuZGxlOntmb250U2l6ZToxMSxjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjUpIixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsb3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIn0sc3Bpbm5lcjp7Y29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC40KSIsZm9udFdlaWdodDo0MDB9LGVycm9yOntiYWNrZ3JvdW5kOiJyZ2JhKDI0OCwxMTMsMTEzLDAuMDgpIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI0OCwxMTMsMTEzLDAuMikiLGNvbG9yOiIjZmNhNWE1Iixmb250U2l6ZToxMSxwYWRkaW5nOiI2cHggOHB4Iixib3JkZXJSYWRpdXM6NixtYXJnaW5Cb3R0b206MTB9LGRsOnttYXJnaW46MCxkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDo2fSxyb3c6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImJhc2VsaW5lIixnYXA6OCxtaW5XaWR0aDowfSxkdDp7bWFyZ2luOjAsZm9udFNpemU6MTEsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIsd2lkdGg6ODQsZmxleFNocmluazowfSxkZDp7bWFyZ2luOjAsZm9udFNpemU6MTIsY29sb3I6IiNlZWUiLGZsZXg6MSxtaW5XaWR0aDowLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LHJvd0FjdGlvbldyYXA6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAscmlnaHQ6MCxib3R0b206MCxwYWRkaW5nTGVmdDoyOCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJmbGV4LWVuZCIsYmFja2dyb3VuZDoibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI4LDI4LDMwLDApIDAlLCAjMWMxYzFlIDU1JSkiLHRyYW5zaXRpb246Im9wYWNpdHkgMC4xNXMgZWFzZSwgdHJhbnNmb3JtIDAuMTVzIGVhc2UifSxwZXJtc1RvZ2dsZTp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIsZ2FwOjYsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIscGFkZGluZzowLG1hcmdpbjowLGN1cnNvcjoicG9pbnRlciIsd2lkdGg6IjEwMCUiLHRleHRBbGlnbjoibGVmdCIsbGluZUhlaWdodDoxfSxwZXJtc1Njcm9sbFdyYXA6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsbWFyZ2luVG9wOjh9LHBlcm1zU2Nyb2xsOnttYXhIZWlnaHQ6MjYwLG92ZXJmbG93WToiYXV0byIsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixnYXA6NCxwYWRkaW5nOiI4cHggMCIsc2Nyb2xsYmFyV2lkdGg6InRoaW4ifSxwZXJtc0ZhZGVUb3A6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowLHJpZ2h0OjAsaGVpZ2h0OjE0LHBvaW50ZXJFdmVudHM6Im5vbmUiLGJhY2tncm91bmQ6ImxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMxYzFjMWUgMCUsIHJnYmEoMjgsMjgsMzAsMCkgMTAwJSkiLGJvcmRlclRvcExlZnRSYWRpdXM6MTAsYm9yZGVyVG9wUmlnaHRSYWRpdXM6MTB9LHBlcm1zRmFkZUJvdHRvbTp7cG9zaXRpb246ImFic29sdXRlIixib3R0b206MCxsZWZ0OjAscmlnaHQ6MCxoZWlnaHQ6MTQscG9pbnRlckV2ZW50czoibm9uZSIsYmFja2dyb3VuZDoibGluZWFyLWdyYWRpZW50KHRvIHRvcCwgIzFjMWMxZSAwJSwgcmdiYSgyOCwyOCwzMCwwKSAxMDAlKSJ9LHBlcm1zRm9vdGVyOntkaXNwbGF5OiJmbGV4IixqdXN0aWZ5Q29udGVudDoiZmxleC1lbmQiLHBhZGRpbmdUb3A6OH0scmVzZXRBbGxCdG46e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjcpIixmb250U2l6ZToxMCxwYWRkaW5nOiIzcHggOHB4Iixib3JkZXJSYWRpdXM6NSxjdXJzb3I6InBvaW50ZXIiLHRleHRUcmFuc2Zvcm06InVwcGVyY2FzZSIsbGV0dGVyU3BhY2luZzoiMC4wNGVtIn0scGVybXNMaXN0OntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDo0LG1hcmdpblRvcDo0fSxwZXJtUm93OntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixnYXA6OCxwYWRkaW5nOiI0cHggMnB4In0scGVybUxhYmVsOntmb250U2l6ZToxMixjb2xvcjoiI2VlZSIsb3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIixmbGV4OjEsbWluV2lkdGg6MH0scGVybVNlZzp7ZGlzcGxheToiZmxleCIsZ2FwOjIsYmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjA0KSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjYscGFkZGluZzoyfSxwZXJtQnRuOnt3aWR0aDoyNCxoZWlnaHQ6MjIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixib3JkZXI6Im5vbmUiLGJvcmRlclJhZGl1czo0LGN1cnNvcjoicG9pbnRlciIscGFkZGluZzowLHRyYW5zaXRpb246ImJhY2tncm91bmQgMC4xMnMsIGNvbG9yIDAuMTJzIn0scm93QWN0aW9uOnt3aWR0aDoyMCxoZWlnaHQ6MjAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixib3JkZXJSYWRpdXM6NCxjb2xvcjoiI2ZmZiIsY3Vyc29yOiJwb2ludGVyIixwYWRkaW5nOjB9fSxRMD17dGFyZ2V0czp7cG9zaXRpb246ImFic29sdXRlIixpbnNldDowLG92ZXJmbG93OiJoaWRkZW4iLHBvaW50ZXJFdmVudHM6Im5vbmUiLHpJbmRleDoxMH0sdGFyZ2V0Ontwb3NpdGlvbjoiYWJzb2x1dGUiLGJveFNpemluZzoiYm9yZGVyLWJveCIsbWluV2lkdGg6MSxtaW5IZWlnaHQ6MSxwYWRkaW5nOjAsYm9yZGVyOiIxcHggc29saWQgIzM0ZDM5OSIsYm9yZGVyUmFkaXVzOjMsY3Vyc29yOiJwb2ludGVyIixwb2ludGVyRXZlbnRzOiJhdXRvIn0scGFuZWxIZWFkZXI6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLGdhcDo4fSxvdmVybGF5VG9nZ2xlOntib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIixib3JkZXJSYWRpdXM6NSxiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC43KSIsY3Vyc29yOiJwb2ludGVyIixmb250U2l6ZToxMCxwYWRkaW5nOiIzcHggN3B4In0sZW1wdHlMaW5rOntjb2xvcjoiI2E1YjRmYyIsdGV4dERlY29yYXRpb246Im5vbmUifSx0b29sYmFyQnV0dG9uQWN0aXZlOntiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjk1KSJ9LHRvb2xiYXJCdXR0b25BY3RpdmVIb3Zlcjp7YmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjEyKSJ9LGxpc3Q6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjQsbWFyZ2luVG9wOjgscGFkZGluZzoiOHB4IDAiLG1heEhlaWdodDoyNjAsb3ZlcmZsb3dZOiJhdXRvIixzY3JvbGxiYXJXaWR0aDoidGhpbiJ9LGxpc3RJdGVtOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixnYXA6OCxib3JkZXJSYWRpdXM6NixwYWRkaW5nOiI0cHggMnB4IixtaW5XaWR0aDowfSxsaXN0SXRlbUFjdGl2ZTp7YmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjA2KSJ9LGl0ZW1UZXh0OntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDoyLGZsZXg6MSxtaW5XaWR0aDowfSxpdGVtTGFiZWw6e292ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCIsY29sb3I6IiNlZWUiLGZvbnRTaXplOjEyLGZvbnRXZWlnaHQ6NTAwfSxpdGVtTWV0YTp7b3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjQ1KSIsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGZvbnRTaXplOjEwfSxpdGVtU2l6ZTp7ZmxleFNocmluazowLGJhY2tncm91bmQ6InJnYmEoMjU1LDI1NSwyNTUsMC4wNCkiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCkiLGJvcmRlclJhZGl1czo2LGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTUpIixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsZm9udFNpemU6MTAscGFkZGluZzoiM3B4IDZweCJ9fTtHOChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9vdCIpKS5yZW5kZXIoUShINix7fSkpOwo8L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=","base64").toString("utf-8");return R}function R$(J){let $=(J?.basePath??"/.sim").replace(/\/+$/,"");return(Z,Q,z)=>{let K=Z.url??"",V=K.indexOf("?"),Y=V===-1?K:K.slice(0,V),W=P$(K)??J?.device??null;if(Y===$||Y===$+"/"){let X=O(),G=F(X,W),H=B$();if(G){let C=`<script>window.__SIM_PREVIEW__=${JSON.stringify({...G,basePath:$,logsEndpoint:U($,"/logs",G.device),appStateEndpoint:U($,"/appstate",G.device),axEndpoint:U($,"/ax",G.device)})}</script>`;H=H.replace("<!--__SIM_PREVIEW_CONFIG__-->",C)}Q.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store"}),Q.end(H);return}if(Y===$+"/api"){let X=O(),G=F(X,W);Q.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify(G||null));return}if(Y===$+"/ax"){let X=O(),G=F(X,W);if(!G){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"}),Q.write(`:
38
+ `}function MQ({udid:$}){let J=new Set,Q=null,Z=null,X=HJ,Y=!1,G=()=>{if(J.size===0||Q)return;Q=setTimeout(U,X)},U=async()=>{if(Q=null,Y||J.size===0){G();return}Y=!0;try{let z=await CQ($),P=jQ(z);if(P!==Z){for(let O of J)O.write(P);X=HJ}else X=Math.min(X*2,HQ);if(Z=P,OQ(z))X=KQ}finally{Y=!1,G()}};return{addClient(z){if(J.add(z),Z)z.write(Z);return U(),()=>{if(J.delete(z),J.size===0&&Q)clearTimeout(Q),Q=null}}}}function KJ(){let $=new Map;return{get(J){let Q=$.get(J);if(Q)return Q;let Z=MQ({udid:J});return $.set(J,Z),Z}}}var mJ=s$(K0(),"serve-sim"),A0="854a02be78c7ffea104cb523636efa991bef5c5b",C$=9222,F0=KJ(),J$=null,L0=new Set(["host.exp.Exponent","dev.expo.Exponent"]),D0=["Frameworks/React.framework","Frameworks/hermes.framework","Frameworks/Hermes.framework","Frameworks/ExpoModulesCore.framework","main.jsbundle"],P0=/(WidgetRenderer|ExtensionHost|\.extension(\.|$)|Service|PlaceholderApp|InCallService|CallUI|InCallUI|com\.apple\.Preferences\.Cellular|com\.apple\.purplebuddy|com\.apple\.chrono|com\.apple\.shuttle|com\.apple\.usernotificationsui)/i;function R0($){return!P0.test($)}function O0($,J){if(L0.has(J))return Promise.resolve(!0);return new Promise((Q)=>{H0("xcrun",["simctl","get_app_container",$,J,"app"],{timeout:2000},(Z,X)=>{if(Z)return Q(!1);let Y=X.trim();if(!Y)return Q(!1);for(let G of D0)if(z0(s$(Y,G)))return Q(!0);Q(!1)})})}var j$={at:0,booted:null};function _0(){let $=Date.now();if(j$.booted&&$-j$.at<1500)return j$.booted;try{let J=U0("xcrun simctl list devices booted -j",{encoding:"utf-8",stdio:["ignore","pipe","pipe"],timeout:3000}),Q=JSON.parse(J),Z=new Set;for(let X of Object.values(Q.devices))for(let Y of X)if(Y.state==="Booted")Z.add(Y.udid);return j$={at:$,booted:Z},Z}catch{return null}}function V$(){let $;try{$=G0(mJ).filter((Z)=>Z.startsWith("server-")&&Z.endsWith(".json"))}catch{return[]}let J=_0(),Q=[];for(let Z of $){let X=s$(mJ,Z);try{let Y=JSON.parse(V0(X,"utf-8"));try{process.kill(Y.pid,0)}catch{try{nJ(X)}catch{}continue}if(J&&!J.has(Y.device)){try{process.kill(Y.pid,"SIGTERM")}catch{}try{nJ(X)}catch{}continue}Q.push(Y)}catch{}}return Q}function z$($,J){if(J)return $.find((Q)=>Q.device===J)??null;return $[0]??null}function C0($){let J=$.indexOf("?");if(J===-1)return null;return new URLSearchParams($.slice(J+1)).get("device")}function M$($,J,Q){return`${`${$}${J}`}?device=${encodeURIComponent(Q)}`}async function j0($){return new Promise((J)=>{let Q=N0();Q.once("error",()=>J(!1)),Q.once("listening",()=>Q.close(()=>J(!0))),Q.listen($,"localhost")})}async function aJ($){let J=`http://localhost:${$}`;try{let Q=await fetch(`${J}/json/version`);if(!Q.ok)return null;if((await Q.json()).Browser!=="Safari/inspect-webkit")return null;return{port:$,cdpUrl:J,async listTargets(){return(await(await fetch(`${J}/json/list`)).json()).filter((G)=>G.id.startsWith("sim:")).map((G)=>{let z=G.id.split(":")[1],P=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:z,bundleId:P}})}}}catch{return null}}async function r$(){if(J$)try{return await(await J$).listTargets(),J$}catch{J$=null}return J$=(async()=>{let{startCdpServer:$}=await Promise.resolve().then(() => (dJ(),iJ));for(let J=C$;J<C$+50;J++){if(!await j0(J)){let Q=await aJ(J);if(Q)return Q;continue}try{let Q=await $({host:"localhost",port:J});return{port:J,cdpUrl:`http://localhost:${J}`,async listTargets(){return Q.getTargets().filter((Z)=>Z.source?.kind==="simulator").map((Z)=>({id:Z.targetId,title:Z.title||Z.appName||Z.url||"Untitled",url:/^https?:/i.test(Z.url)?Z.url:"about:blank",type:Z.type||"page",appName:Z.appName,bundleId:Z.bundleId,udid:Z.source?.id,inUseByOtherInspector:!!Z.inUseByOtherInspector}))},highlightTarget:Q.highlightTarget?.bind(Q),releaseHighlight:Q.releaseHighlight?.bind(Q)}}catch(Q){if(Q?.code==="EADDRINUSE"){let Z=await aJ(J);if(Z)return Z;continue}throw Q}}throw Error(`No available inspect-webkit port found in ${C$}-${C$+49}`)})().catch(($)=>{throw J$=null,$}),J$}function M0($,J,Q){let Z=new URL(`${$}/inspector.html`,"http://serve-sim.local");return Z.searchParams.set("ws",`${J}/devtools/page/${Q}`),`${Z.pathname}${Z.search}`}function E0($,J){let Q=($??"localhost").split(":")[0];return`${Q==="localhost"||Q==="127.0.0.1"||Q==="::1"?Q:"localhost"}:${J}`}var t$=null;function B0(){if(!t$)t$=Buffer.from("PCFkb2N0eXBlIGh0bWw+CjxodG1sPjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj4KPHRpdGxlPlNpbXVsYXRvciBQcmV2aWV3PC90aXRsZT4KPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFVQUVCQUFBQUVBSUFBNEJnQUFWZ0FBQUNBZ0FBQUJBQ0FBUEFvQUFJNEdBQUF3TUFBQUFRQWdBS0VQQUFES0VBQUFnSUFBQUFFQUlBQ2NPQUFBYXlBQUFBQUFBQUFCQUNBQS9wb0FBQWRaQUFDSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUFRb0FNQUJBQUFBQUVBQUFBUUFBQUFBT2JZeVZNQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUFvSkpSRUZVT0JHbFVzOXJFMEVVL21abWs5MU5paVd4MHRvcVZSRHhvQ0NtSUhnVVdpaWV2UFRrU2NHVENJSUhFUS8xRC9BaWluK0NKdzhxZUZERVMrMUZnZ0VWV3l5MDBDYllObW1iNXNkbXM3c3pmck90cGZjK2RuYmY3SHZ2ZTkvN1pvQWptamhjYndEMWJIZTNVRzA2N2tZdkVBR0RXMTB1T2x1ZWIzUWNoN1dKWS9YRE5RY0FkNVo2NTc1MW5PZk5VSlFTcmQxWUE0WlJUZFNFdnJhWlVvWUNwdXlZK1A3bU5XL0pBcVVBNXN1c2M4bC85R0ZGdUpNNk1QeHBZRmdvNUY1QzZqUFRScVRIMVEwL05UZmZUV05tSm5Fc3l0UGlyV0tyTGt2OVVHT2lZSEJqUkNLeDg2UkZUS0NmSWRqbkRZMjVob0FqWkduWXVYSjhIZGhJQVdvdDRTVmRPQ01zbUM0S1hQVU5hcDBFemI2QXNCeEp3WFVraGpnS3V1U2g0S2kyOExoREN0Q2pTSjFkNE1GRmdTZm5iUVV3VjR2d2FqbUJiMXNUd0ZFSzFSYjlEdU1xVFVsZktVRFE0Nnc5ZHJFZGFGYkFJVTlpY2xTZzZOdHNnNGdxanUwQXl3Mmd6WHpFTm5PZndmWTJ2YTVBMUdlRHlLVEtEeWlEVTVrRWl0MnRpRW9LVEExTHhLSEV5N0pCUWZ1b0hRYXc2b2NjcGRIUkZFeGd2YVh4ZlMyQ2w3RWtMU2hucHlBNnpNTHRhM2dwOS84YWtBSGxRa0lHOVRibmxScTFIWU9mVmY1WDdNcVI4bVJqcmRyV2tJSEE2QW1nekgySzArMTNRektPRjFZTnlqbnlaY2NmYXhxVkZRZDFKc2QyL2tGN2ZCcXJUWWxjRnZGQTBBZ3RZQW93UHYrbThhZjBzUEoxTVg5OS9oYzdFU05Lc2xEc3pnZVMreW9QM2ZCcUtsY2luM1FxTjBkLzExOFRZTy9NNkp5NXUzZ2g5c2RlUUdRdUcyTmNLNXk5QTVRai9UcEVVWTRNZlJWVnhnYzI3NzEvZkhiQk1qZ0FzQnVhT0gzNzQwa0Izek1KYnhITmRZRkJya0krYTNKZTBIczdPL1dYZ2YwRHR4bEh0SDg0aWhRSmZTYXpqUUFBQUFCSlJVNUVya0pnZ29sUVRrY05DaG9LQUFBQURVbElSRklBQUFBZ0FBQUFJQWdHQUFBQWMzcDY5QUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZBQUFBZ09nQUFIVXdBQURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBSGhsV0VsbVRVMEFLZ0FBQUFnQUJBRWFBQVVBQUFBQkFBQUFQZ0ViQUFVQUFBQUJBQUFBUmdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFUZ0FBQUFBQUFBQ1FBQUFBQVFBQUFKQUFBQUFCQUFPZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBQ0NnQXdBRUFBQUFBUUFBQUNBQUFBQUFmZ3ZhVWdBQUFBbHdTRmx6QUFBV0pRQUFGaVVCU1ZJazhBQUFBcHhwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNldGSmxjMjlzZFhScGIyNCtNVFEwUEM5MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0eE5EUThMM1JwWm1ZNldWSmxjMjlzZFhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGpJOEwzUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0eU5UWThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtNalUyUEM5bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNHhQQzlsZUdsbU9rTnZiRzl5VTNCaFkyVStDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhSaFBncnAvc2x4QUFBR2hrbEVRVlJZQ2UxV3pZOFVSUlIvVlYwOTNiUExmbVVYa0JESTdvVUVSU1ZySUFvbTNreU1GeEtQbmpRbXhJTlhUTlNMQ1RHR2kvNEZHaE1UalViQ3djQkJFMDFBQ0pKZEVrRUlBbUVGQVlGZGxtVm1kcVkvcXN2ZnIyYUc2VmtXcm5yd0pkWFZYZjNxdmQvN3JCTDVuLzVsRDZoSDZYZUgzNGtPN056LzdKKzE0TWtrTUJPdFhFVlpManJIaHJ3UVNUQUtMWkppWGs0eFk3MkZueTE4NXdxL2pFdXlMSjgzeXA1YlAvdjE2Wm05ZTdQVmRLMEs0T1ByQzd1T0xvOGN1RnhUTDlSRmF4ZEFxSVZDMXhiaE9yUEdPbDh0RkhQdURnV3BBZmRBcGJKRllZdzdVY21XOXQzWU5YNThKWWlIQU95ZnU3WHJjR1BpK3pNMVBXWmJWclJ5WW93U2E1MTBGVk1JTndhQjhrb0wvQ3RURzRDU1BPZTZFaFVGWXFSWXJOcDdyMTdmUFg2aXpBc245dWo0OFcrcXgycWpuL3kycE1lS0p2eE5qWEFwaDFzeENueHpjTDM3WHA1Ny9FNG9LeTMwV0t0WTgrbms1ei9GUFkwQ1lDVTZNanc5UFZjek8yemRDb3p6NURFQVIwQXNaUmZncjBlUGRkZU5UVWVXeGw0UERLSGh1eWZFMElabVI3cDJhaHJmRDBMUkIrQjJNdkpVM1dxbEVUenVnM0V5Q0k0M3BnSlpXMEdzb2F4TWREVnBCUzRQL2o1eTVvdUx1ZHhwQWJ6blF3aE5xS3dNYnNPVzFRRWtFa3dnNUZLQlpPNWh0bThjVURLOVJvbEdtaGY4U2VMa2hmS0JqODdFWDN6bnA0NlVURldWTERTZGhCMDNjREk2bVBCOG5VZWZCNUxNUlRrUUYwazc0UnJJNGlZc24yOWlEUW1KaFBiV2hqQ0pTbFRIQlc2RkN6UTBtVEFRQ3psRkM2T3JCVEd6cVlzZUNjQW15RHRhbWlvWlFORGYzNmJsdVhFbG13ZGhwNFZLcCtWR3M1Q2pONEVNTmFpN0FPaUZMZ2lzYWEwbFJQd3RLeC9ERllTTEdhVXAyWU9zOEd0ZGJQNGp4eVp1eU9DRkZ6Y3AyYmVWTzdyVUxwZ3RJNEdjdXRHU0t6V1J5TFQvdHozUUNRL1kwVGtrcXNCeXlGSWNUQ2FRZ2piZnlkcWYvdGtQQU5ZckQ4SUp3dTZKWWt2R2VkZmZiMXE1ZGs5SlhFRWY4TVo3cnZZR2NMQUpEY1RPTnlqS1V4MEJCQ09VWDZLSEFEZ3dPVEFWSFVZbVlqZkdqQzB6T29TYnA0WUQyWXhSRGZrTkpSZ1d2QWxLcFo0cHVZY21WRUY1SnVqTkJvM0kyME9aandVQUFheDM0eEJIV2daKzlucGZqNUJBaDdQOXZyWWxGcVZEcVJpRUJkYVJyMHhNVHFiTUs1TmF2anlYeTZHTERsN1JYbVpBZVNYcTgwREtFTUFEUGs2bzR4U1NVeUNtQjJrNXJTUTFtNW5VWUtHQjBCNkJpVWpBUkFBQnZEV0VaSHo3NlJCblFpYUhMcUFER0NQbWNRQmFLTGNjSUh6NUFFZ0NFQzBvWWd4cExFUEFwcmVFSEZoTTRQcE9FaEtFMTkxQlF3RGtSZW5BWTRIc1hxL2x5TytaV0NSMzNER2l3OXJmaXJNVkh1RHgyc3djV2k3aUNkZnpZS0psTmRUMjNXV3NoVlJib2c0S2YwUUJSQUcwRG51Y0NtVVFNVjJHVVRINlNwbjZRd0NFTklWaEFIaHBZVjVHSENqUUFvQkRnMWRJZ29WNklUZFJobkVGYnVsYTVMSDA1d09UVXBFRmZpOGdCMmtqbGNjQmFBRUFlbzNQVkFMZ1JhTU9hMkdMWklCcWVRT0JSYmRyVHY1YUxDU09BQWdhWXJpSDNiR1pXa2t6NnpGMW9SakVqaTI4VmtkcGpnQkEyWHk4OTNrQTVWY3d5d01vWi9Ob0FuVUQ3WlE1a0VCQmhud2d3SVdHa3IrWGxBd1BCakkrRk1yY2dwVmJPSDIyYlF4eFlBV3lXSWNndUI5UmtBMWpSazVmemFTQUM1bUFsUlZIWng4QVpWM0taQXRRaGdWQXBMaGJKYWhwRnFCR2ZjTTRDYkREd0pjREZXUTAwSjY4bE1rZmQranFRSzdNRjdKOW84akVtb3Evd0xCSXpsN0w1ZHgxSllNUitCR21XTEhaOTZnUFFOWklGM0ljRlJxSk4zT3BrRk9iUkVaeGZTZ0FpRVJ3cDY4bTh0MnZLZTk5MGtTWHltQnhCZVdtd0pQZzVEdDJvWkNoS0lkQ1ZFc2psM3JLRUJsVUZnV3d4TzI4RjlaNTlBR1F4dng1SmVza3dPRnhGeTcrOEdDS294U1hFNWhpa1ZIc2lHZ0JLSzBCOUFERVBkU0MyNXEzbG9IbkdSbXBRTmhQVVBwWUQzQ280UWRjWDBCbWpNUWFjcmZPbHdIQXBoNDF6aHljTVhsckZvZXBCMkVrUkNoaW5HWVJSZ3doVmFtYUt0eklob0phNzdaV3psRFlIVnpuL3dEdHNIMjJJSFRZc3pacXpZN09INXp0YVdSd1M3UTg5M002dm5YUFpSMnQyNFBhalhnRkFuNWYrN1FDeWV5SDd6cDQ1M0hNTlY2L3V2ODRrOWlNZUo0NHRuVVR5dWJSN1A1a2NPYXR6ejU0L1VLYm8vMmsvSWRvNnMxZlhpNUduL2tJaFRhTkM3NEtFU2hleTltU3k4UlRqd0o4dldObTF2T2J0YzhtU1dDeHp0MjY0V1RtQ1RuNzNsZnZQdjlEZVQvZlZ3WEFINk9UMjBlSFhqcXdVOFVidG9hVjZnVEtDeFZFMFQzU0FNYkVSQ3BJekZNUjMreE5KblFGY2ljMXJqay9ZRytmVjhmMm5mejJ4NW1sM3M3LzMvNURIdmdIYWtRU1dLMGpJVXdBQUFBQVNVVk9SSzVDWUlLSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQU1BQUFBREFJQmdBQUFGY0MrWWNBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUF3b0FNQUJBQUFBQUVBQUFBd0FBQUFBQW02MUswQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUMrdEpSRUZVYUFYdFdWMklIV2NaZnIvNVBidG5mMDIyS1UzU2xqYjlTUk1DcFdCU1c5QkFiU0V0MUp2Y0ZoUzhLSUpDUVJTdDRJVUI5Y0tmNG9XVW9ONUpJc1ZDSU1YRzJpYUlwaWxwU2tvYTA2aHBaZFBkVFRiWjdPNDVlMmJtekkvUDg4NlozZGt6czBrS3hSdnpuWjJaYjc2ZjkzdWY5L2Y3WmtWdWxWc1MrUCtXZ1BtMDhETVJJd2YzdWxPUFArY3NMSXpiMTJ6SExNNHZtcmtTSWRhWDMxRXAzb3MyZmNmTkdSck9yblhqYk1pYVMrVFFvZTdKbDEvdWxzamNWUFdtQUV4UC82bDV3SC8waVU5Q2IvZHNhTGEyWXVzMnNhMkJvQ3RPa29vRlVCTGp5bEJKV2NjelJzWFllUjNqSkVFYnIyN3Z3anl0NHpYMVBZbURJTzJJbFY2eVRIYld5YUkzbzdOLy8vUE1jMCsxYjRUaWhnQitkZW5xbmxQUjZJL2VYN0Flbm81RVdpR1lTa1JjVHlRTXJrL2VjZkwrbU9oUTFsck1iNEFXYUJzckIyMWpvR1BTVTE1My9zWEpYWjg3bk0rdXY2OUZVMGYvZE9yYTgyKzJSMzV4L0lyeGdrNHNvQzhHTXpqSjk0MkVJZVIzbmVJNE9mbVlLcmxPcWFObGZFZGNxS0tSdEw5MWNlZndyOWVhVHA1cXk4OC9tbnI2TDYyUlh4NmRFcThMNXNtTDFXTytkc0puM0ppRnNVUWQ4UUtyK2RLbW81ZjJyRVcrRnNEQkl3ZEhUeWZyZm54ODFyaUc5Z0lCWnJEWlQzT2xuM0o4TFcyc0hYV05HN2xqUDlueTB1R1JPaEMxQVA2MStRdFBubGx5dHdldFdBd1lVYy9zZnhMWFozalZya0VoTE1VU0czZDc1NzRkVDlVQjZMblo2cTdMMXZEdTZTVVJHd1JNamZreXdsaVk2VU0xakR5MUJlYm05UG9zVldIdEtQVXBOelhTUVhpaTh4bzZXVjlKS0NodmVEZWEvOURYSlJVQWU4SDN0Y2g5c0EwQUt2MitHVEU0M2psaHlkTjMyc0pmdWhZQXpDdDRXUk5rYWN6eHkwWmUrMDlNcUJVUUdTSlVJdDRENkVKZ1JyVlVLZ0MyN2QwMmNMWnJKbUxFYnF1UE94Skh4Sk05bXl4NWdER2VraWtSNjY4V3NyelJHQWFINWpwTFRrNkpUSGN5Y2NobXVUQzlHVE94WWNlT3hzenAwNnR5UXdXQWJOdmxHY2RxZVBRT1o3V0xLQUJ0TXJJRXFTQ0pxZ25oWGw1TzY0YkJ0b1RnZW1NY0lHQ1NhMkk5RHh5NXRLVnlBU0RmTmdPeS9URlBiZ1RBODI2emc0NDRJVTJJNmJKVXVuaE5RQ3pvV3RMS2pBSkllbU80SkNXNVV2QlN2Q3UrS2tpT05aYWxERE9sUkFHaUR0Yk43TldDRTl1bXp6bjIwSVorM1ZSOUlISjlrekJuTVh2Q3VZclNoVGx0SEJDWjhETVpSYk9IZHd1eGo3OE1SdDdHK0NXWWxLdkpndk95WlZ0bWYxNktKOTlVUndDUUFVQW1BZDlwM1dyaEsrdm04ekNhM1pibTBxSkpueFVUaXFMSU1DYlRnZFdKc1NhWi8rNTJTNzV4dndVMW0xSkM2MDNIbUVXRXBsY3ZoUExoUWlZK2paZ3I5a0tZOHI4TW9yZSs5b0VXQUhCNFFKNFQzR0JMeW40WmcvWXQ2L1A2QU9naEthV2dHZ0E5TUg5WFUrU0ZyYlkwS3dyczBjSUM0M0NheHpZNGNtSnFTUm8rUkFVcktFSWlOZERQUDJjU0lNYzUwRUFNdTFlaDZiNkptaW9oS0N1dXQyVHhxR2lBSFJtSVVKMGt5SXc2aWdXOEVyMWljdi9UaC9rc0JyRUVxWXQ5RE5IbUs2c0RvMXJtZytRSWtDYWtDblBSZ0xWNHFTbWhXaTRNeWVYNVJWOHRBQ1lPRFF1UVBqV3RhYjQzZzJ1VXBaa3pna1hSemh3eDMwbkZCV29MRXFVeGNHeXVnZFhMa3lFTE54dmo2QU1OZEd2WVZoL2dZcVh4Sk5MbjF4ekJVZ0hRaGczQmlaZWx3ZTBDSFVzWlp4VzBGSURlY2luU2J5bHZadWlyN1V6R0lOVjFycEVSN0ZnYjZHQlk3RzFNbFMwR3JnaUVPcURiUmdadVJTbk9CcGJ1Ym5WdFNxT3ZHUEswS2dQa0F5b0EyTXdFcGRHQVhHczlVd0Nrd2NWWG9nb0FLQkJJRWhJYWdlMC8vOGlRM0x1dUllTURDSTlvQSs5YXlqeFJ0cndvRFBBdWkxRW1NemhickljZi9mRmNMUFB3YUI4NWdWclNRcUVWOVY1VDhhZ0FJRWhLazR2RFFuVWxGNTRHYTFJSmE5aFhhbVFoai8xcVpxZ1BRZW9QalhKdUpsMHd4ZE1YaTVwUVhsVlR5Mjg1ZlI1aVJvQnlmRmprL29jOWVmSWVSMTQ2RWN2SkdaaVZabE5NeEJnUFROV2RueW9BcUNhZW9Bb256aldRUzR2Q0xqUkFnYWhRUUJ4L0t0RVVuWE90U1B5R0JZMVFER3d2VU9DbGtDS2JVS2VBMUpFaGFndDJTSi9aQkthL3M4dVRIeDRMNWV4c0lnMFhkUERIYURXRWFUTzR5cVVDZ0JxSUFEVU9RUnpxamFIbkJLSWs0MVE1UXl5QmNMazhaeG5WRG5taWxoYVpUV0Z3bWt6Sk1EdldLajBRWko1QTFPbEJtWG5rMlh0c09UTVp3RmNBem5iUVdsOXFBWlExb0NHdHh6eWpVMG9VWkI1M01rbVFCTUxtR0FoYUFSeVNBQXF2TGRaVklHVTB5bjB1Q0FMUUdvVkFoa1UyRDl0eUczYU9sMEdQOUhFRUZ3LzVxTDlVQU5DRUdBa014WWxMa3dzMWdhdXJBRWdpQjdDODN5Y0FiRHM0cG8xTlhnd2ZzT244MXkwRVE4bm4yaVJOMWJBQ1FEdWNlQnhSYkhvUk9RaGhsb3pTaFBwTEJVQUxJN2lWTGlTdlR6QkRFNG9BakptWlRtdmpscHNTR2NBRk1VVVl0d2lKUmVpd25WU2xtaSs0N0FsOTY5Tm9PSnV5eWdHd2hTYmxJekh3UUpYeGd3RG9Ncy9kRkFENmdNWmlTaEFFaW5CSzZlS2NyU2FVSWJQWldJVCt0YnhOQUIvc24yc2prV0d3bzJFUWkwUEVPWXVnMVN1cm8xSU9qc0tnMGptWSs2TWhQRHNRaGtteENOYUdFbXBMUlFNYWhYaUFLQUdnR1hFckhkS1pxV2Y4V1doTUVQNHkyRG9YWm1URkxrS3VJSkY1a0pwRERaQjVjcC9mOUVGR1dUSms2Nkt1N3lTS1loQlhzWHVXRENCbUZ5QU1HQSt0Z09iYXJGRkJCVURIOGJJTU1aeE1FM24reEdZTFJDaGhQWjlpWlRxeFJpaHd6NlNUd2FRSVlCNzdlWmNMZ2pKTkFiYUZmWkVsNjRZY0RZVUVlM1V4aGpCQVFCSGtwb2czQlVxOFk4T1dmRHdiSXlTTERBNWlKZENqckhSTTM2MEN3QVFoTE1Ud3B3QUtFQVFRUUFPTVFqUUJMa1F6b21uUkx5QlBaV294dE1UQlhBZVowRUk0V1Qvc3lOaWdrYitkRCtRQ21OcXl3Wk5kOS9weXRXWExwWGtnNWdJS0JCeUN4UUY4MEJxRWJiNzZiZ3NIUW9DR2FnMHVLRFJ6YXI2a1ZRQjBybDVNUnh6a01tb0FKd2h1ZVQzRVpmVUJTRTIzMmoycnBvQUpyQXRRdEt3WWpGUHBTZVlpSzd0eSs1Z0RqY1J5NEoydXpDNVp5S3dEOHU1RmtjbHJzWHp4UGx2dVd1L0p6SHdxN1pBT2oxMHZwRDB4Yk9USW1Vam1PcDZNREZCcjRBRW0xWEFsSG5FdVliWFZwUUlnbkh3N0NscHBFSElvUWcrbE8zT0Y1dUZBUXBRNHFCWDJtZzlCRzA1VjhJVzVWaXJETGlUWWRLU0RrSFQwZzY1OE9FTTdSRlJCT3o3d2FEaThkQzJWQThkRHVYZEM1SUhiSFprWXNtR2FxVnhaN01vYjcwY3kyN1prY01DVmJrQk5BeHdFbUlacHNIRHFPSUwwNmxJQk1IdnVYRENjSnJQd0lmMXd4Uno0eVpWVTlyOFZ5ak03T0J5eW9zZFNaTFJLNk4zR3k4ZFhZdm5aNFFVNVBZazlESTZlQ2NZMGZGY0djYVVBQ0RsQ2ZaeUVoQVNSOHR6N2J3ajAvRlFNczhIT05JZ29MM0dodVNHWUVXTVh6WmhMTUNjMjdHVDI4bHRuS3R1aENnQ003MXBSNTd6bE5ML0U1RVF1dVpsNzVVUWlyNTFxaTJmbFoyQVAzOFJEZkZMT1J6RCtjNHZzeXVpUXE3YlBEcGR4bGdVQXRHZzA2bFhSNVBIckdIelVBNGNaTm9MOFpSakRQS1A1aCtOUjU1YThhY0lQRDBHSCtleVZleDBBU1Jlbmo5bWo2Nyt1SVJOalNiaUJzQkxESnlMZFltS25DU21HRVdOUlhoeUVDUjlNTU9vUUZCY0dWcFVnL1RRdmFDd1ZqdU5GUjdWd0htQWg4eXNGd1FGengzMUVvMmo2MkVyN1NtMkZnNVUyYWIrei80Z2RkLzVoR2VRLzlZV2NHYmdVdEdIamNpQTlXeVZJS2ZKeUFJaE1rT2xpenMwK2kyeGZOOTUzWE5uWURNN092Zi9iSXlVV2w2czlIUysvYTZWOThlMzIyTlpuWnAzbUhWOUpFa1J6bWdBbGcwdlZpeWNsbmlCaEZlOHF1YjR4UERLeW5hZTY4cmh5blRUWG9wVmx0ank0TVl2dlNOLzc1dS8zZmZYRWFpN3p0MW9Oc091ai9ZKytZaGJPdnRqd3M5aEFDdityd2x4UU9QTzJPN1A0YnYvYzkzL3p3dWRmV1d0OU5kZTFPdEh1M2ZPMW8zdk51a2UrRjV2bVE0ejFtZ2Z3aEE5TGdIODM5YXk4bGtUbFB6U1lWeTU4cFgveFgwd1JBaVMzRUEzWSs5aWd5TWFSOWdkandYdjdmdmZ0eC9sRm1ubTd0dHdJQUNlWjhXMVBiQjdiK1lNdm0rRzdIeGQ3YUV0bTNQVytiemZDeU5qSXl0QmlQUmxFUk4zLzBHUVlrUGo1aEV3eUxQSXNrWC9VTW1uRHk1SzBtd1MrMjUxdG1QWS8zZkRDWHlmZjJQZjZzZGRmbjhUNmZiQlg0NmhmZWZXWThodHRhYkE1TVRIZ3JyL1B6NXh4QkhRWDUvcGVnQytQUkIzQzFKcytXVVdGWDdmWndUWjhGODBzcTV2RlMzTkpOSDgrUEhQbWNnZk4yRTJ0TFhIMDNTcTNKSEJMQWlVSi9CY1lHc1pyMjk1WnJRQUFBQUJKUlU1RXJrSmdnb2xRVGtjTkNob0tBQUFBRFVsSVJGSUFBQUNBQUFBQWdBZ0dBQUFBd3o1aHl3QUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQWdZMGhTVFFBQWVpWUFBSUNFQUFENkFBQUFnT2dBQUhVd0FBRHFZQUFBT3BnQUFCZHduTHBSUEFBQUFIaGxXRWxtVFUwQUtnQUFBQWdBQkFFYUFBVUFBQUFCQUFBQVBnRWJBQVVBQUFBQkFBQUFSZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVRnQUFBQUFBQUFDUUFBQUFBUUFBQUpBQUFBQUJBQU9nQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFJQ2dBd0FFQUFBQUFRQUFBSUFBQUFBQW1nTzgxZ0FBQUFsd1NGbHpBQUFXSlFBQUZpVUJTVklrOEFBQUFweHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9saFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajR4TkRROEwzUnBabVk2V1ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQakk4TDNScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdycC9zbHhBQUEwNWtsRVFWUjRBZTJkYVpBa3gzWGZzKytlYzYvWjJRT0xhNEVsUUFJbUtkQ0VMRktrUk5BMmd3ckxsTU1mek1PbUltelJKaDBNaDBnNS9FRmhpYklWVmppc2d3aUhlSVJOU3FBc0tpZ0xFbmpia0hpSUpnaVFPQWlBd3BKWVhBdnNpY1VlTTdPN2MvWDA0Zi92WldaMWRVLzNUTmRzTHdTU2t6TlZlYjE4NytWN0wxOW1WV1ZWTzdjWk5pV3dLWUZOQ1d4S1lGTUNteExZbE1DbUJEWWxzQ21CVFFsc1NtQlRBcHNTMkpUQXBnUTJKYkFwZ1I5OUNlUmVZbDE4cWZGenVjVFR1bHlJcytMOTJ4SjRwQnZqTk44STV5VWpvRFJqUTBqVDMzNTlCdjJMM3U5ZXpBeWhuNnRRUkRveDdsWnk0YWYydWZMUC9PcEhxN3R1dnJsYTNUbFJHUzFQbGk4MG02VjhvVnFvNXh1RlZqMlhiK1J5dVh6ZDVlcEY1eHIxdXVGYWdWVGQwd3VSWmF4Y3FYUmNqNWxRWGlyNStvV0ZCRVViWHJBUlgyeEd2S0xDWHVYMVpyRkZmYTdsV3ZWV3E1VnJ0SnFOU3FGUnFDODF4c2J5SzNQbnp0ZGFaeTRzdHc0K3RuVGt2LzdiSllIV2REUjBwRU0rWktJaHhEZ05NOVIwVk1oUWthYVFSZngwTEhhMi9JbnZmbmRQYzhldUEvbXg4UnR6b3lQWExkZGIxOVNhK1YzMWh0dldMT1NxdVVLdVhDeTYwbnpORlpvdWwyKzJYTDZKYkZ2K1VOcUdpc283WXFTVmxJVTBlUWdUMnhIU0RlV3JJMUtvS2hlbERtQW9pL0F4SGZNV2kzQWRtSWdqM1VibDFrWXNLV2tIWUxsOHE3bGx3alZtNTl4S3M5R3FpY0NTbUo1eHVlYXBWajczYkc1eDhlbld3c1hIQytkT1BYbjRuOTV5UW0yaXZSVm9yMFBvTGwrSUNobzJoWWdYeGRNSjl6K2ZlT0xHMHM3ZFA3ZGNxdno5UlZlOCtXSTl2MmNoN3dybk5ad3VhaXdzcU51TE9wYlJoRnFWcTg1SmFDYlVLTTBZZ3crcGtDZFkyaWU5dEZRUXFoSzRKQi9xWUdwc1RBckZBQlo5WTJEc0NEQ1IzcXJ5QUlkUlVFZEl3L29TblNXRmd2b3lPZW5jM0FVUGswTWlPdktvbHhqZ2htdmtjODJUdVdiOU1iZXkvSlhDMmJOZmV2WXQxeDVTRGVndnF5RkVSY0hHc0FJNDZaZko3Uk5QUHZucXd0NTk3NXR0bGYvSjJWWis2dmk4Yzg5ZmRPNnMzTzVjcmVVV05LUnFVb0xjcGgraDBreEJybmwwTE8vbVpodUpnSWZGWElKSDNJMVA1TDBCTE1qUEJFa01XeUI1U1dKeVM4R2RuMnU2cGcwRnp3SDBOS01aM1p5c3BLQnByVkRSb1RqZmJKN0pOMWYrb243cTZNZFAvSU1ERDZ1RjJZbGlrMm5TaHlFa2h0MWY4TUZzNDdmdnZudDYrcWRlLzRHWi9NaDdqOVh6Vzc5L3hybm41bHJ1N0ZMTExjcFhOcVJ3UmswTVVRR1VsVXM1TnpidURTRFdEejN1WXdERHB0TTJnRWFIQWF5bWd6SGs1Qmx5cmxET3ViSzhVNkhSbk0zWGx6NjIvRGYzM0g3cTNXOTVRVzJHN2cyR2FRRGdnc0g2SGM4OTkvcjY3ajIvZDdSZXV2WGg1NTE3L0Z6TG5WNXF1bHJ3bVdiOXF5VmdKUmhBNmNmU0FOSUNrUkhJY29yVm5LdU00eEZXN3MrZE92bkJJN2RkL1MxQkRkVUlvbXRKVTk5SU9pcS8rWWZQUC8vTytlbDluLzN1aGRLdFgzckt1WHRQTnR6eGhZWldRRnJKQ1hOZWtNTzB1bzB3KzlKdkl3L1piTGpseFlaYm1OSGxRck4wYTNQWHZzL3V1K2Y1ZDRwM0poS01ZQ2hpSElZQndJaG1MdGU2NDlUcFg1cWJuUDdrZldmeVUzOTF1T1VPemRiZGt0dzlSSWJDcmZEOFdBVzV3N3F1TzVjMGRkWnErU20zYmZxVCsrNDkvUjdKWUdoR2NLa0dnRjZ4eHNZbmp4NTkrK3pranR2dk81MnJmdk40MDUzUXFHZUszMVM4aEhDSm9kbVFON2pRZE10THVhcmJ1dVAyZlY4LytnNmg1SHJwa2ozQnBSZ0F1cVY5ODZNSEQ3MSthV3J2N1ErZXpZMTgrMlRUbmRGOHZ6bnFKWmtoaG1aTGE2aDVIVXU1RVRlOTkvWXJ2M2pvcDRYK2tqM0JSZzBBNVpzQi9QS0hQN3lyY1BVMXR4K2N6MC9kZjdMbHppeEwrWnZEZm9pcWI2UENDSmJuVzFwUGFUcllkODN0TzMvakk5T2hkc01TMzZnQlFCZjM0Mjc2NTcvNGdaTzU4aTMzSDJ1NTUrWDI0OGlQRnZKU2plR2Q4Rkxscng5ZnVzSHNhbG9UTkN2bFd5ci84QjBmOUwzWStGVEE0aTFyZ0RmMDNQcXRyMzN6TmZQVkxlL2hVdThaelZFMU9hUkxIZjFjQnVaMUVIUGI5WElGOEhOd1pRb2RPblU1UWlGRkExckRDSTE2MHhVdUZGeDFiTXQ3ZG4vNi85MzUvTHZlK0pEdzBvWE1GRFppQVBTQjBaK2ZldVVyMy91RWJ2SThmcmJsbGxkYXJpZ1c5RERra2tJMGdKeU1DZUZkcnRCTjUzSVpBTWJNZ3d6NmNxbXlhY3RDMDREV1dhV1IvTmJTZ1ZlL1YrWHYwOEY2QUlsbGt0cEdwZ0N6dE4rNDY2NGI1NHZqLy9nSHVqOTFTb3VUOUlqQzBpLzFpS1B6VXZHczFYN1lQUGVpZGJsbzFPVzJWblJidlZVY2U5c1YvLzBMTndiRlo3YmpyQjRBQW96KzF2UXRQL25XazduODl1ZG14WWl1OVhVSE02UHRDYjVIUUdDTUdrS01mVzY0Witnd1ZtQWJPcGtsTnlBN2NkUmJYMEsvQm15NkRwanVFU3pxZHZwb2ZudnU3N3ptclFJK3FNT21ac1VEVThwcUFEQ1YzNzU5ZTZVMU92bm1FM3FvYzBiMzloRW0vbWNZSVk0WUVGcDZHRWg3NFJEUFpnU2l3OGk5bkFhZ3hYdmlFU09kZ1RYVWkvZFlwcWRMalZwQlQwNjN2TmxOVFgzRW5UbXpyQ3J1RHd3Y3NrNEJ4dis3Zi9NM3Ixak9WMTV4OGp5UGNNT2RQb1E0aE1OR0k5TGhrR2JZQk9BM0JQZzRSOW5RRHVnTUUxOHZYRUV1TWdMNHRqNHBwcCt4cnh1Vkc0T2tvYjBNclVMNXBoM3YveTlYQksxSEd3dlp0YU1zSGdERTVtS21iNzdsd0tJcjdEeWpPYWhCWjlhbXNXNHR1aVlRYXpPTlBUWGowYWtXdTc2d3k2TkZlTnBzT0FnSitEbVl3dUxUeUEzajY5TVFMOU13T3ZLVWlwT3JKQ29JSWh3MUZtTmZzZjVaR0YxRGV5aWFsY0xPeXY2Zk9LQVdUNE54L1padGlDd0dRQ3REUHJwcjF3Mm5XN25pZWJsL2U4YWRpV1NiZUV6bG9vSWxFK1F5cVFYRmJ1MEptTllqNFo0aHlJNjZWSElWNkNxMlVnVzBxMVp5eG4rdFVPaVVXaGZTcm13SG5SUktYOTVWZ01JcjZzdWtudXp4S1B5Q0ZtOEZGVVl3UEp6UGlKY096SU5sbWxoWFBsOHNiSisrUVMzK3J3NkVCcXExMkZhMUQxa05BT1Q1OHVUay9ndTJneWU0c29odGd6R2NhaEM2cXJELzVNNkN1M1U2NzdielBMeFlzRjVZVDFMZFNTVUhwb2pBYVJjRmJ3bERwSkpZbWNJMkxCcTRkN1N4cEkyTUp5KzAzUDI2VmY2OW1icks5T3hmbzU4Nm13SjB5cmU1UzNHeVRsSUl6TE9NVCs0WEpBdDBVQTRjc2hnQVl1SW8xMTM1U3JaeExjbWFtOUdWRFV5eUI2Q0VCQ052bWk2Nlg3ZytwOUdpcldIQzMySTVvN3FleXVoWDNvVWVoaTBraVpCUEkwMm5RM1VrMnFzcWdzUTRRWjBrdW1pb3ZGRjJibXBYem0wZktiaUNIUFVEWjdXN1ZRWnZ1NElFamhoYldFTFdvQ200cFcxMWNzaFhxYWw4alcwMkhSaExGZ013cE5Oalk5VjZvN0JyUWV2TnBvZ1h4WE4zdndlbFRuYzVtSWV2MGhhd04xeVJjeFBhRnJVd0t5dEx5UUw4MGM1U3hZT1M2WUNMdkRMblIxeklQYVpqM05Fb1F5YmlwMGxjVjRDekZHaG9GNXA3MVZUQlBUVlhkN05hUUxObnNIc2RrTVlCbmpXREJLTzd3NUpQY2RxTmoxZmRSWWFtcVdTZ3JrQiswR0I4M2Z5V242azJjb1V0Yk9CRWNReFMyY0dHRHBUS0hUOVd3MWVONXR5MkNlZm10YkFzcTR3QVhtQ1k1a2d6VGNReXlyTWMzVHlDRTlmSkVmSEcrRkpvcEhGQUkvSXVkcDBjbTZ0S2J1TXk4bDJhNzFoQXMraWxJellOd0Uvb1l6ZS8vZkxXSENWSUp5T3Zlek1rTXRuUG9CNGdJczN0dmY2V2Fpdm5xalYxQk8zYkxVNGxOeG9RREVJWWsvTnFpa29UZDZZeUZwZldPUkJUa0FxVzdTcExWYTlPQ20vc3dPckszaVhEcElFbmlJZGQvb25rS0hmT3NCWlYwRzhXd3F3SnFNOGFiS29zdW1ycDJyOWJYWFNmby9uQTNSM1VBQktlSnZidXJlU0toWktNd09XNStiOEJoaE5rSk5RZUl5cHBaU3lkbStLanRkc0lWVjFDSWlSOGxKUjJvT3VYU2RiZGE0a21oWkpMckt5aEh3MnVCS0lCMkFoWFI0c3FMQlh6cmlSRGlMdUQ1UWN5cU01ekIwMmgwVDdLZkhsa3g1NkticzFrQ3BrTm9McDl2RndxdTFKWmJteDhWSlN6eXlsaE1EWkZLRVVKQXNYak1uazZaNk5mTVdYbUptbWxOQ2VMU0dZSS9sSXphTCtmRVNTSUw1RkdDai9LeGJBcFlyNk5VMDlaV2h1WDIwTjV0aHNZZ05BdTFWeUY2NGV5WG5BWkhja1Y2OXRIcEpVa2dDYnBVVkxhbGNoaUFJYXcxYXFXNWhkeitWa3QxTTdOTVBtc1M2T0xaR2NXbDRlQzZ4TkZZZEs4cUh6aUFVaExldDRZSXAwWWQrSVpMRWZiSGxMdVFObVJHUXh0QjFTYlJoelowUU8wcEd6NlI2Z3RhUkY0YmtXR3I0cy9BUlJ3RWVLTjZTQkxBTHl5Vk5KMk1WZFlybzFsMGFlUnlkb2dWeWdWQ3kyOThJUmllTXc1akdBM2s0UUlSYWM5Z0JtQ1RoaEkyd3RzVUVFREN6Ymczd2dabzhGSmpSWFp3azV4WGdxbWxBVXZDMmY2U2Qvc2hBZFFHWXJIVUpnT3Fjb1NtQ3AxSGFpWGpYSlo5V21YMzFsb3lXSUw2SjNiODhZb0hkdG9RQkJnTWVFb0RVNEV4QlJnK0JYVE9STVdhUXdoSWRaT21iUjdsQ2R6Y3F3elptblhXZFBHcEJTTG14UVYzN1FORVZHMTR5NEpTT3VHWFNQYTVuMEJZdUNrVWJCTkFVSVhMejJKRVFCWXJIKzBheU1mS0dVNHVDZUhPL0ZoWUJTWkxVYTdsQXZTZzUvWU9oU3lOcStSSSt0dklrK2ZhRW5ER0FQdWtYZjFkSGxzZWNxNDF4QTlBSGxUanNXQm5oQmpGaEYvd29VS1lobmdNVzMxcGlSU2xLYU1LdUszMHE0MmdLOFIwalJRTmhxT1U0QVpnc3FpQVdEUUtNMHJUZ2taSGUyajlraG5DU1lYa1pNTlJCUUROODlzQUxwVWlXL3ArazRNU01vNnBST3lRUUM4S01KZFJKU0xrdGxSeER1Q1M3cThwRU8rVGh0TlZOZVNHL0I1aUtsUy96RWdWQzZmd0d2RHJCMUZFRTgwNUF3T2FFdWtFRmt5WlF6dDF1dWtVamdFNlVkL1VENTVTT0htaVhYZ0FZeC9tcEdtQTByVGppTGxFa05RY3FCZ2hzUzk1VmJ6OGh1QTAzdmI2b1E5dzlCYjhHbGQ5R1NXRGxsQTBlcmhzb2I1Tmwzejc5TWJzOXYwTUthRVZGVHh5aTA1dDFmczE2b3RWeFpXREFOTE1BUEJMU01keWhGUlNMTUhjVjR2bU00cWdTeTVsUFFLME5ra2JvQkczdmlneklJdjc4eWxxOXJ0MnFsUTN5T0tlRXpEY0NnNkpobFZvRjhiN2ZDbXRLMEJoTU9QZmhWQVFQMVR5Zzc2UjE4eUJYQklKNFhzTTNyMkZucEp3V3RkWExLQ2gvRitJUW9QSldMNUpmWDZYOTFRY1A5aWY5NWRPNVp6dWkzdWR4SUZCTURueGhHR3g3b1dicHFZUWVsMDlHTFRmZk5relQycmQ4M0xyS28xNUZoWm14R0FzMXZ4U1I0czdXQkcxODV1SU9XVmoxYk5DTlFCU05tQnJKUzJTMXpEckV3d2JCYUJYQ0hRZjRadzFtRnN4Z1RPWnRackNQOE1ocWFaQW9KbmdCS3ZGZFJGQXdTdXBPNTkrTmFpKzhWcnNuYXZQd1Z1cG5FajVlVjYvZnJxaWFxNzg2a2w5K2pabXF2bzhXNWUwNkZORFF4QkJUc25pbWVjaVRWZlphTXgzUlh6TStrQ3c3REdTWGdBOTZhcmxPaVkwcVVaSDRlOFlHd1JLQkY0RDZBQ2dkUFdycWdDbnF3ZWdPY3hoa1JSMXBCNURiQlNhK1NxY0NpaU1CMWsySk11Z3VSZlh3Qnh2L1NLdkh2M0VKWGZUWEJVaXY3NWE2dnU4RnpOemVvckV5VjVGek1DN0Mwb0pKRVMrUzRFeU5Dc3VxdmNpbnVVeGFKT1BNSml1THNVYjRiZ2pjQ21BQnBCa0FNWmlrZVM1bEU3RWFwMC9aQVkwL3FncXlBeUd3QVlqSGVkYkpwZWhUSlZJQmhHLzNiTitlL2EzN1hwSWdVMnJPUTJ2VmIrcXFteSsvSXppMjVFNzlnWHVNMnFZWjZYWkUzbEVxNlhMejFJTXI1RDZoV2xGcEpFMzRKWW9UaG9MQjBGZzZNb2VlUUxPUjNSQU1JaXl2aERqdGdwWkZlUlZ0bDZnVXRsTTRMMUFIdlViOGdBN01iTk9rUlpLTkN4dWhaOVYybkJkN1hlYzM4eHdyN3hnbWpxRlNwNW5hSVl5T3ZPU2g1ZjcvL0ZnaCtKcTNrUnh5WjlyNEpPUmFqeE9pRkNvR1FDc1IxQ3BPc21IWjZ1M1FrTUl6NXFIT1ZCejV3VmNvdEdaWmpXUDcyb0hrQVA2K3ptREJ3anNOanhiamJqK2dEcjNLYk5FTlV3RjNmRERUcy9KaS9BWTlibEZlMllGWGVGNkFFa1hlOEZFRFhCY3BieUphRzhJNHF3QnJiR0tlQXlZUVQzRC81b0JOREdDUFNIL0ZBMGgya2RFaGlxWmYzNnVwOU1hZEl6R0E3VmdEeGp5TzRCZEsyTzRrMzVpdnN4RzYyYTYzZ3U5YXpER1puYkNEZ0x2eFg4ckJZb3VtT3RhUUFQd0lFUzJrcjMwby9jSTBFZjRycUZrbGdiNi9ySG9YM0VyNGFvVWxsL05XSzBQVDVkUTltdDM3YnlsVmQ5cERjNHpSUTNOT2JZUU1oc0FCZ1pLMWtJMmgyaEhrU05uOGhRekt6UnN3aWFSclVHZUJwc1ZSclBVK05hUzRwdlNlczhZbUpuSVdzQkpPM3grdEdabGhvR1RaNEltSkNsY1AwQWFrRjU1dzF1bE84TE1UNUxrdFZSMXdtaEErOUhrby9pQVBIMEk1OEFEUkJvWkF3UEFOc0ZrdGtBYUcvQ0VrSGlmblRwSU5mVkVkWUFyZGVkSE5DK0Y0NWVaYkVsYUhxZ3NtcG9zczNic01vQXNGVWVzT2g3ZmFZVWxPQXBwakVFYW9wOEtuVU9WYlRxR1lTbWpTa29ueEwrZFREekVjY0REOUFoRStHUEhpQnRCT3VSN2VBbDRPZ29HekN6WVFPZ0V6Q3UvdlFNQ042a0tSaGc5YjkrR0FTb0g4R0FIVnIrWTFSS1NLSzZtYXkxZ0Y4SWV1VjdaWGlPUU9hSm1sSlNYSGJtMXlFcUxCNDN1S0lIOEdWeDhXZFhBL0FvbnNCdHNnTmNCM21VVHhaSzBSQ1VIQ2lBSzhYNlFHMGlVR1lEWUFlQUxmQ2tZUmlIZHE5Z29nMk1wY1ZIVWN5SGFrT0N3Y1R5WHZoaW1ZMldBTmdMSHB4OC9kT1FLYWFEWEFYWVl4STFTTnFrRTE3YnZpOGdTSWVRajhWSk0yQTZNcjZSR1lMS3UwYytkL3VpQVVJb1VScUlBM0xRcGJJZTRTRG5EVFh5aURNYkFDdE5MZ1BOYWtXNGh3d01Nd28xdVFvbXh1bSt3RE13aE1oLzBJTndVdElPUHFlUnBhSXdsU2VFSTMxZ3JGNkpGVnRwcVVCckFZeVYrd0FZUUU1YThMaEE1T2thRDViMkJiNCtuUmJzR2lIU2p5UGRLNTViMGQ0STh0STBpcmVMSUdKeGFaZlJFSW9IOGd6RG5pamlYSU5zVW1YOFJqd1lmc2FRMlFCWUJISnBoN0tZYXZzeEMwL2V5cFZDYTdRTEIya0UzeGEraDQzMTFnNmdkTEJDNFRIRTZZclZQTEFHaUs0L3B3OHNtZkoxS3JBb2xDYTRmVnpSblVMaXNvNlNwSzZyUjl1V3hqWkhGZGwyN1dURVFnNjZDanlWcE44c2hMblk0S21tUDd6bllmcFprWWJySzdvY2xYUllHTElocENDTDRNNGt0OFMxb1VieUl4WWk4V1E5aVBpTlNzWlRhSnV4bFlGbk5nRHpBQkJVNTlHSlpOVXpVSTZSR0l4aW1oQlFPblhFRkFKREhiRVBpR3gxQUE4MStJR2tQaEEzV21vU3NtNUJUd2Naa1ZWdHh0ODVWbkM3dFBkdWwyNFFUU3U5UTY5b2JkRXhxcnVUVldtN0xFTmdYNTRwWFFpSTQzemRZUURDRDkyRVgzVUFRK0NDQTJQUWJRZWJlbmhaWmw2UHRQVmRjRGVqNDdSZTRlWTRxKzhSejRrdmRsUFg2Z1h0NVplUjZ1QktoUVVxQW1HYzJFMHJ1aDg3UTNxOUFHTnF2NUdRMlFEd0FIRUtzRUhaaHlvOGVZbUZlSFcyWFczQW9VR1NKdDhPRktNUWk5dkZxK1JVbGpKZnF4Y0xiOWhadGVPS0xTVzNiU1R2UnFSd3ZXbG1nWUZuaDNMRTRMUTRwTTBZU1ZQUkk1aGhDQmZvRUdEYVlIRHhOZzNBbWY3WjRLTHRmKzY4WHFSNVFkOUhQbkpleHFEMGpQWlV0bVE1ZWwzUVZZVEVOdlBRUHgwMDlBYnYrMHpKbWtFNDF0TEZXbTB6R3dESW9yQk1jbjJ3TTVkRlFVWVE1QmxsYWlOSm1TamtHRWZZN2hpNUFNTTFOdnNRd0U5QVlBbE81YmVQRnR6NzM3RERUZXBac3cwc0FUQkM1eVQwU05Oa0hCcFpXdTFpREU1Q3hPbHpnNTJUTmhHWm1NUVkrREw0TnIzck9LVVhYMTYrTytjdWlwZlg3cW5vS0xpN24xNXhqN3pRc084blYyU2hmcTNpNmVIdHpCQWl2bjVzUURnaDNnK29kM2xtQTZpbkZvRVE3Y2ViOFVPOWpyUnk4VlN4TENyRVdBT3VBNXRoc0Nwb1dDNGswcDZnRFdXZzl1YnQwcElFT2wvWE40dllkNjl0RXZaNFdQV0IyWFNiam5RNjQ5RUZ5djE2bVFDWmQ0bzUra2V3ZmlwR1p1WTVsY1pnMmJxNWI2dHpWMnd2dWpkZVYzVGZmcTdoN3Z6K2ludjBkRVA4Nnh2QmJPMkRwSkhWU2ZpNnB5UFZKc0hvSVZpSVpBeVpEUUQ4akNoYkNCTDNJV2k4cXhLNE9EOEJHK0U3MHFIUW91UVVDaU4rSWN5eFZJN1NEYmlNVG9BaGpWdXR6Uys1TXY2K1dKSzMwcFp6elZsYWdrVk1YWEdiZUNmRmRDNmRwbm1hcWtmWFZwQ3ZpL2xWc1ZDMTVBRnErckFEdjNreXFwMzh0OTFZY0RmdExyalBQcmJpN255OHBvOXU2QU5RdHJGRkFFTEFYek1pNnVLZXJNbTRtOFVlY0wyS01odUFkb1RwdlhxOUZDS1hOcW5QazZ3V1Jac01VMFZSZS8xRzljYWFqWFpWc1g2Z1RUTDZFVWlhK1NUVHhteWp4c29CYkpkSG1hU2JVOHNlUTFiaUdBTmVoYW1BbzNjSUZVa1VBZHQweEdHcUtlWGsyMlVHQ1RPZVVWRlVuVEVuMWFrWUJmS2ZoSkRXejZHNHV0NkZyQ25QRlBITzE1YmNYcjA5K3FtRFRUZXZLd1Y3YTBoekNEak1mTk00RW1TNmdwRStSa2UxUFM3OVdraXFmcTFrWmdQQW5hMW9KYnVpZDFEcmJOL3RFK0FWblRVRW95c3hDK1F4Q2pwRE91WWpyQWZTT2RWUlN3cldDcnZLRFVlb0lvcWhycFdYN1pIVU9ScUFmWjdGbEJLaEFobjRTQ21UV2lQWFZkWnU1V3RqdnMyU244QmFva0ZaTkFLcnR6S2xBakFSME5nTG9TUkRxT2tYUlhpNSt3MHYwemQvNUwwKzh0Q3liWkExVDJCRzRBMEIrRTRPL0JxRGR5bzNFakliQUQvcFVwVDc0bWRXbHZpbGpUNVVZWkpyM1VWdDlWMWVSdVU4bHZFRzRPdW85MGU3UjlRQWxNaXFuZkJTOC9VNjIyQUx1ZEFxeVhFZklJL3lkZU1IRHUxWmdDM1Z2WklTSk9EcGJKemc4SWxldllzTmV0V0pYWnVpZkIzMjFqWUV5d1I1V2FtUndHQUlTQ2pQMUNCRnZucWZjLy9vYk03ZDhjaVMzdm5UOXdTMExyQjlqaGlTb2ZGdHJLRk9yYWFNUmtWMXRjOGFNaHNBSG9BMUFQMjBKMng5S1VyWTBwTDlDUmF4Y1VRUFFHekNqM0hiQ3F3aXlNWFRNUnJXY3k5UXhFZzdjSGJLd25DdWlFR2I4OFVrUnRqa2tYQlVUQUpQNnhoQ1licklxbFlWeEFhSzAzV2h2YUsyYWxHV2g3R25nOENqUUhoWDJuc2RvUFZuV3ZVMUJYbFd6YXp1dHV2TDdwR1RkZmZ3ODNWWGxYWU5SOGM4RUdnS0c4WGN2K0RkOEt3aHN3RkFnSG1jUTd6M0RKRzFxT0FJQnpoSFZINnNOelJkdUtnelBCR1oyaUZQd0NqcTlnQUptQURzbzArQzVJc2JkREN2TkpkamhrRFI2Z0RXWGlFUTdGV1ZFRFJ1T2lEOHFQZEZxTldNejVSUFdac1dFMVRvcGVkTlhzcjRsQkZ3YitDdEJ5cnU0S2tWM1RDU0g1T1c5WUZZWFNZbWhEMEJuYU1CYk9CT3NNa25RVFJJZ3FrRzVVZmw5V3BEdDZ5YlNjSVhwQldmYm0rM1JhMEIyRHJkTk1WMEdTWEcrVFdXQVEwaDhoZ0VOMlpJK3lsQWVHUUEzQlRXVFdBSlZrS01ia1V3Z3dianN4ZHcwRU43eEhjQ1JWTFVHMTN4MG9adHArRFh1RFl2QUkrNkRGUUpMOGdjMEpkRURtd3J1SU5uR3JxcmlTblJIN1V3WTZLbFo0SUhUZlNkQlhyV2tMMUptQUxTQ3V4RkZOYUFpZE1FN0hKdys5UkdjaWhJQkV6ZUlQeloycXZFdXFnVGNLRUpnRDZ2Y2h5UmVVWXJ4YnY0L1FDMkNVUkxmLzRZZ2V3VUFvUGhDN0JyUmNiT1dnQmRkUjE0RXdXSi81Z1dnTEZnN2NTVkxOYjNoek9WSGlFUHJIaW5nV3ZFc2hhRnI5WmR6Yi9STk5DU2hnMFM0VVZnWDJJNXBnQmtrVFZrTmdEY2pIa0FVVE5lK2xBME5qbHhCTTVRSW0zcHF5bFVlVWEveHdOZ093QVRkR2FGakhDdlRtdnRCUWhlYWQrbUEzQUJvNWlITk9aZXpXMEtoRVVoUkV3WmJScURwRHhYL3B6dUw3VG9pVVhkaUFUb3kvMm9wUjllK1I3ZStpR1VZRzNqVjUwQmFocnduYlZuQzlmdDBLYy9wUHdHNnhxYkI0VE1ybW5idEJrQUtGSk9JM1BJYkFEY2JXSVJDT2NvYjgxZ1dnNndpbWlHQjRCL1d0ck5KTVdtTlFwTWFsSVdSU0ZMa1JVbm9xWStqQjRxd0FVd1NlV1pacmovRGcwZXNsQmxVd05JMFNBRkVaZEhITW9vdDBvU0E0WmU4Q2pTTnpjdWxZNVRqK2ZhVTdGcEwxQ0prME0wRkM1WnZhejBWVEY5aEdPclhxSGpnVkxST2lXYXVrY0FyS2Z1QjVCTkFRTnluUWJMYkFDc0FiaHVSWG53MHk5UVpZcXhoSWNpMldzZEVCVklBMlFISEIwRVAwcU5Cb0ZRQ0I1R1FsS2wxY0dQQ28yVVRoaUFEWGpjSnVWQ1pxT1gyS1BvYzE2N3RyT1JjZGxabE1yQlA2RlQrUlJpbERJRitrYk9ZcDFVUlJ0YjdZZTIzQ21zNklubDFrcmVuZExyYnkzMk9RSkRweFVDbU1VOFE4aXNUT0hJM0FiaHhrVmdvamhqcDhmSmV0Z3VSL2tjTUc1Vm9aN0lsN1E3RlkwcmdiVVdmZ3laZTVlMHpFRFVNaG9HTWZodFU3RFM4SXJBZ0xlUE5FU0pxVzZ3NERrejByMGFtRldsSzlvRUxLV1RMd2w0aENqMnRkTUFBUFExOFhJUFUyVmZDNzhrT3E0RklIYzNyYkVKRUZpUEdlcllnNVlMdXR3bGx5MWtOZ0RRRDdJR0FNNE1CTDdoVjBkVUVLeWIrdy9sUkhRSTlmcng0V0ZSWHZKOFhCQjJKU0FvVTdodlpDMVpNMEVqNHVmRkVKNGI2SFZaM1E3MlUwcmNuV3NOa2xOYmlNWmdVcjUrSXBKUFkwampzSEp6QXhIUzQ3UWVxcWpEQUFRYzRURUEvNTZnbm1Hb1BRYkFKV0hiZFpKV2UyazlPQUlqdXdIZEcwT1pEU0JlQnBvMWR2Yk45ekNjcWNLbzQwR2VvM3NSU0tFWmlCSmVtREtFSUJBLzNtbEY4TFZnWVEzQWF0OEhsWU5ER1F5QVl2WUUyb0NTOHYyWGg0UWJqMkdGdEFxNHlOTndvREF3b0xDMWVVMlMwQWprNHZ3ZmpjQ1RWeHZ4UTkrOXQ5SXRkR21ZQVkraURaWU9nbHBsYk1sSFltU3A1OGlzekkyMGFjZ0M3TXVVV09FYU1qRSs2VEF3NFNCaUFkbXU4d0J4TVVrNXdORUFiR1FyWS9Vb2kxNEdDZVI0RTVvR0tvczBFQmFMVEQ0MFllL2VLWVA3dDB0Q2hHdk52YWNoYVlGQ3RSa2s5QWFqMURDblVBUmFIU1UrQTYrZEJxQzIvdC9IU2pPMUlRUDZZNlBkTEZ0cDh2RkFqb0loeTZuSC9TRnExZzNaalVZR3dCeExSK0k4M1lzS1BNT1lEVExGTmhjcnRpbU1Lc3JBRTlLazFCOS9xREIyRHJkdkFqTEFBS3plQW11dHFjWVl5Q2tOZmw0TXNTc0FGZlBxTkI4MEFwOEp5WU1hUEdVV0JHTkJlWklVeDloWCtEUDRMeVZZbjRYQTQwbjd0MkF3TW1aN3BkMzRWUjgxc1FQTDExT1FvekVWNDhBSXZISzhhQjZBS1lDbmU4a2NIaGhKUjRtY0FyT1JlWlREWVFJMkk1SWJVdys5UUR3R3hHTHVHcmpZdXhoalZmUlVzZTJqQTVPbGZWdHdtd2VBU2NFMVJWaXN5cVhxVUJxOHZoM3dJRjA3cENHRXVrZndwZEdEUlFCcmwycHNVRG9SMnhFS0xMSkc0a3Z3eU1rdkFqRnd2VktuNGNtVWVUSDhFR2NiZ2FjVTI5UHVSVE1BMnhTS0ltQTJjdUQ1U2M2eDd5akRhOWRiTzgyU0tVRGFRdkYyZ014d2haRWd4SFRJVHdHcWtuVHdJQ3g4ZUliT1BmNjhSajJ4TFJRaEk1R1pnYW1lTjROeFQ5NEFCSXNCbUY4VnoxZ0V3clkyUGxZeUJLK0ltSU9sMkpkWVJwendIQXZURmh6TGlLMnhUcUZ2UkJIVWlneFc5ZW9Ib0dZRTZyVDNXTG9UcU1JVmpmNFpQWFZsM1NPdzVLRGZQT1VFRDIyUjEwWkM1aW1Bd2NWOUFDelRkNnczV2Fvand4R096bmNzQWdVVTU4TkVNZ0pHRUlqRWxFN3ZRRVFQdzd3Znk4MmxxeHh2Uk1EZ1dCeXlNeGNEQUs2dVBDK0lldUY2WWRuWmhBNXloU1JTdTVpeEN1VkNIVFd4SDBreUZIYlhoYVloRWgrcGdrNXZJZVNCRCtPUHJQcUN3WkpuQy92c2ZNTU1vS0I5Wk1ZS3lIUmd6eVpqWlUwOHF1U0tJV3ZJM0lScmE5dmdJUWFpTmZjaWF2b0t6TUl3eWVpaTZRaHQyMGNBQ0tJeVlTaU5BdGtLUmN4bGpvMTRDUVZjaGs4aTRaTEpEQ0dGMzE0T3RSRXY1WXVJL2VZUVFQcVBzS1QxNzBOSTRIZ0owRy9YSmxBcTg1U05iMkJKS0RZVms3UjY0aGg4VzZzS2RUd0Q4TUhqNHVFUHdmb3M1b3hOOVVuZi90VzJkZWNlTzdPaVBSWE84UkhZNVBFNkRkUThZb3JqZytLc0liTUI1SEw2VUtnWVpOUkJ1RitneXVwOVA0MWhNd0RhcVE3WkdSNEp4T1JvQXZJcVlBV1BJSUJuN2tabW9PRnpxZ2piVHduQlV3aVFPcERHS2FDbVcyZ3R5bFhHOXdIc0oxb1lWUndlVkltZzd1N1ljQ1dtWUVaSGtTRlRSSTNSRTQvdzdkTWhOcmhVbW53U29FeWR0VEE4c2NxVXIycEdQenl5RUJ6UlZuWmVWbm5zUk0xZ29XdC9hbzRoZ0NYMmhSZ3p5cXpNamJScGFIZUZ1WCtNd1BkRmFEcERaTXpxQXd3UitmUVU0QTFBaGFyd1lQNU1lK1p2T3VWN1NZbkFWSVpDZVprQ0k4QlYybVZTSUdnR0lCUmNCa2IveUZVQTE5TmVzSW9qY3dLSmdvZUlVVkNCcCtRck1VTGU1cUVlRGpGNmFIZzNya3JTL0dGcDFnZGFXNkZpSDVSTGhYU090T2lwVDdZNFZWUGpSelJLdXYzTGJ3eWR1OUJ3UDNoK3haVzFyNXdiWW1DM29LYko4eEFWQ0lYSkttY0xuUUF6WUpUZGFMUWxTUGNCVExkNDJYNkJLZ095aEluRmoxRGw2VWhVUGpEeGlMaW9SeWlTaFhrQ3ZBQUNRQmUyQUJRR0huK2E4QlhieUJhZWh0WUlLSWhkUytnRVFuWWZRQVJNZ0ZZbVBCQUthUk0rR2ZKVzdEMUdWYThNamZOQ2lkNDBZWmMyWHgxWjFKcytGeGVidHMydHFRNndUakY5Qzc5L3ZDdmlWa2JjRGgyNW1JbkdScHdjdnI4VGVyZGhtNzRBL21WdENUdXZoMENqZWhnVS82eGo4Q284OUFOMFpDVVAzVHBraFpZdFpEYUF1bFpaZXVQS0hsZWh1SDdCR09NVUR5VnRoS0pWQmQ2TEk1OG9IeUg2S3V1UVpHSXg2ejV6L1lxTm5uck5Rczl1aFFhalFCQUl3UzhDOVlVUWVRQXpBQTFoM1JTMmUrU01Fc05wZUNWTzFkbWZDVi93YW0rdVY0cmZNVmwwZS9UaFNyNXJlTzVpM1MxSUNSTXlodDA3Q25xQlF3OW16aGZjV2Yza0Mvc2Q2UU9OazM0bzB6blBlOXlDVWdJdVF6QStsRmFNcDRFMzBpT2lQejJaZCtjdk50dzNubHdPM3owVXAvQ3A5Z1lIdllDR21LYVNRVXZ2SHdicGhzb0Jvc3dHa05OZWE2TVA1Y2hGRDBJb3hRc0hhSm1uSXZMSlpTQjVzV3RYQVNZOTBLbFF3V1NoazFlUU5RK2VBQmd2TU9DUUozbmZ5dU9EQm04SE0wV1lWQlN6a1BRZUlBaFNlUzlNbjRjU1c3QzM2TjNCSzdVTFo3czIxeDA4dXVUKzh1Q2lPM3l1WVFiRlY4Y083Q3k1dDl3MDRnN3MwZXRtNHlWMzVIVGV6Y2hOODk2Qjc0ZG5LdmFEYm5XR2RBRzlGR1Y0Q1FlL0lUQzFwZWgyYW92M0gzMXJ3WjI5eU9objZ6MS93Y3d4Z2hSUzB0U1lBWmhFVTVVREpMTWFRSzZoSFpkYXJEQXdiZTdwUllOdUpxWklKdlNiTWtZcGJSUGxteEY0a0k2T0FhZUNPSEpSTmtRUnFrMEZJYmJPQTZzRXl1ZW82NU81K25xNkZsVXFsREhrNVM2WXk2T2d1ZGVPZ1VDUEJlS0loTHhIVzYrdTNaSFRieFkxM0NlL2ZkRjkrOWxsNGNwcmk3YW1BTUd5UmV2aFl3MzMvWk1YM1J1dUs3bTMvY1NvdS9uS2dqc3NJemloWHdCYldKWlFSQnorOE1aZStjb290Tk5RYkFmNHNVNnFSVm56L283SmtydE9QRHp3OUpMN3hoTkx1Z29JeWxkZjZDZXRPZkF3NUFtZWdwVTNtendGeXhpeUdvQkdZcjJoaFV2VDNCYW5IaUVwRlhjSUQ5Y0tveWlkQTdiYkM2b2dJT3RKMHJKRCtSZ0J5b2NjaG1EWHdJcTVFV0kzUXlRTmd3bjRXUXZZSXBGRzBKZllPTXdBUUtJcEFwNHF1dFRhcnJlR3I5cVpkM3YwR2J0SG5xdTV6OXcvNzA3UHQ3UUhyeHkyWS90Mm5pSFJsNUsvL25UVFBYVm13YjNqdFNQdTVWY1U5QjVpeVQxN3FtbUx0cHAwWUYxSitoT05RWFFUZFpIeUJzaFVoS0ozYlMyNEczZm4zYkhUZGZjbjl5OXFmMS9KakMrbmkzdTJoZHNESXNGYUsvRWVBeW5lYnRabUVkMHQ0aUk5Vzhoc0FGV05oUzBUcnFIWDdiUm5iZTJIa0ZoK2VhVm9iNjBnRDBabm5BSzhCNGdHc1pwcEZLcmVlZzlBVW1uekFrcWpReGE4MkpKdENoRXNYZ0hjMEZnSkJzRG94LzJiRWFvT0E4QVFHTlVUZW5tVVViOS9TdkI2YmZ2T2g1cnVPMGRVVzVwd3U2ZTgwZHJpVW5neGxpU29VN0Myb1BYV0hRODY5OU5uVys2MkEzcXo1K3E4ZStaTTNwMDgxM1FYRnYyMEFDOSs5Q2V0MjNuaDVPUFdFL0krKzlqOE9aMXp4ODgyM1I4Slo2RTY0YVprblBRcHI2bkpYaFZVR2paU25CaFM4bHYxMHVuRW1Hdk0xZlZDNUdxUU52RWVxY3dHTURzN3UrSm1tbzJGSlMySUZ2b2JIR0pDaVV0YWtaM2ZwaEhaOHU4dGVRK2d2S1NEOHBDbXJhWlhNZWZiVTJ3ZFIvQUlRQWVDeFF0d2NFbG84N3ZTZmhFb281TjExcE54ai92VVRsdEpzNklGRm91NW5Wdnk3a3J4cEduY1Bmak1rdnVMaHpUcTlVdm9yUHlaS3BaMStCRW5neEJCT3dKL0tKUyt3WDlEbmZtc0RPZUJwNXo3aFZkWE5DV1UzVjR0NEk3TjV0Mlo4eGdDM3dPZ244RFRFZkVxcGFQNEVWM203WmdvdUd2azhuZG94WC92b1VYM3B3OHU2aTRtbTBIenJpWWVDdlpTcTNnUVBIMmcvK2pYb3NBUG1lMGpSVGQvc1ZWZm1iSGZES1JHWEE0V3NoaUFJVjJhT2JuY3FqZHI1c0pOLy8xb0lTWnhvbzZmWDlDSEcyV2I2cE1wandvRWlTSkRyNHhiV3JRNzU2Y044b0RSYmRxWU1VaVFwZ2psaWUwVE1LRytvR3ZtbTY2YWtDRDlPa0EvY0dMWDFhUGFWclZWaTZ2dE9pRDgrUEVsZDk5ekJmZlk4YnFyNlkwYTNEQ2JMdm1EbG0wb2tTZXhxd1hvV0NsOFdNYjRWZ3ZickhGeXR1aysrdGVMN3FZOU5mZm1sNWZkeTNacExwL1NBbkV4NytiMFRZQkZmZExlREYrZFlhN254ekg1YVZ4KzRlZllHVTA3OXl5Nmg0K3VtS3N2cXQ2clcveEw0Mlk0aXJrdkVrTTdoVHlBbGd5YWpaVUxGMDVrZmpjb2l3RVkvZnFwN3k3cmQrcVdVQXlFK3dWVGtDcHh2eWNrb0JmbVdtNUsxbzRWZS9ldlJKQ2xhVmluS09SdW5QUWR4Uk44T3VCUm5nc2ZWdlFhTkJLdWM4K2QwdnlwZDZTdTJWcDFaYTNjY1o4WVhrM1RJNWR1MzNtODdoNDl1dXlPempUZDVNUzQ1bm90dExTWEtzL05GZ0dhUUVWTU4xV2tDS09ZT3Z1ODl3amV3RTFadG1VcnA3dDJUWGZ3eEtLOHk1SjcxYjZpdTM1WDBVM3J4N0RLOGdwNERBSmVneW5pMGFmMTFzK1JtdnVCM3Y3aHhsVkZmRURmNW5zV3NDbGpOS3JXWEh3Rk9WQkdFWk13TTdFVzVrc3p6enlZTmdCUEVNQTFRbVlEbUh2NjNxVTlqY1ljaktEa3ZrRjE4Q3FEZHFmMW84bDNINnk3ZjMxYlNVTFhyNDJkbzYzdmlhR3dFM2t2MUY0NDR3Q0FMdW13dnZNME5FK082NWRIZVhMMk8xK1ljOTg3V25QYnRpekp6UlpOcUEydDV2bWwwd1hWczA3Z0lRc2p2aXFyNFlaTzNaUXZRMER4T3BqeitiTmd2UFhrU0lYQXc3Tk1GNXhoNzk1UnJRTU9uNjVKbWN0dVFudTZkMjRiZHd2ekYwUmJENnIwNnJmZVhyY0hWdERodHdOSGRiUEozRHhLTnlQMGhwaHdrY2pIS3oxeVE3R2EyR2R1dElOdzd2Z0QzeFRtYkdGUUE0Q1dGOFhDd25LdXVYSTZyNWFpM2Q4SUJHME5kRUxnZjNqUGlrWkYzcjN5V3UzUGtjVmYxTXVsOGJjbkFtWmhDMEx2MlFkUEhnakp6U0NGMXR3N1B6bXJBZTkrNzB2bjNhTzZWTXRYeXZvZVQwRS8xZTZWeWJ6TDVSNGV3b1JxQ0h3Wkk3aWd6WVB4NVV2ckUxQ2VYT0FrRUNRWE82VWtzSHdJS3JhQk1hYWpBb1lnMThQY3Z5d2U1cVNXbVFzcWt3RUFqZUpIOWYza2FIQVdpejhiOWFvajd6blZPYzBIeGVtODBnV05zS3JXTWtWWGYrSDAvTHdlRzFsSVE0V2kzdEdnQmhCYmcxanovL0pSZUVTWW5ZODNJNWppaEFWOUdsWEE1M1JwOWNIUExMcjN2Nm5zM25pamJxUm9FY1pUMjdRWFNaclFYQm1UUTRJU2F1MUEybGJIaWwrWXJidmYvZnk4KzlQdnpMdWlsRi9rMnQxR05RcVJhelZtUTJ0Rk9IY3VFekVLNWlUdmJzSHZZUkE2dkZnK05HdjNCeDVvSnkra1UyaGh2TnFpVkhqdHp4YW5ZZEVuS2ZQNWwyYjZKMzNVME9DQUQveVpJVVM2TUpBRUEvWk1KV1ZLQ0lZSFJoaEF2clYwVENXOEc5TFJNZzNlSzcwUkEyZzF6NTk3TmpjMUxYd1lnQmRCTjNLRXFOcFFyTkVuTjMxR28rRFg3bHAwMTA0dHVldW44MjZiRm1SY3cxcVF4aU0wcTk5eXVheFgwT1VtVWlGTmlVVTFpNnNUK3ZIS3g0NnZDSGRUcTN4K2lWTUtsMlg0YTJjaFoyVHhoNUJEaUdrTUEvWnRWRklYR1RDNHNPcnVLQXNJUXVSSFp4c0FPdkJGOERSa0lLTEJPZ2lEYk11akRXTmNKYnpCaVVLQ0V2NEMzMG1aYjJ0Z0ttTlJ5UWV3YWhkbUQ2dU1aVG1RUGFCcHNUcGtNUUNRV3Y5V3poNTVzclQ5WlEzZGU5Ymo5dGpsMWNqVHhzRUtHeGZjbENBT24ybTZKL1MrR3dzaUhpMmFGeEYyNDFxR1VDcVYzUGhFeWMzTWRCcEFKd1hFTFVHYmF5KzRNVjBLMlNxZWVWVEd4bHhxcjFKSmdBWVo1QWdPa294ZGowR3BZTVFKU0VoMHVGOGFyZ29BNmdodURQNHBpWDRCLzQyM3dkRjRYcXlIQ1JaZ2FSSGhJejFmVHBVNDdHeGlMZUtKS3RZUGxWeXpjZkhja1NkRGVYK0Z4SWFwT0lzQjBNeVExNDdkOTFSbC84K2VMaFRLdTJzMjYvVG0wdHk0R3BtZ0JlTG5PRndXSDJyMGN5U3JZeHY3aGtJcERFQ1dNajZpS1dKSkUyVlhTSVJqNWNyWnZ5aG82TVE1bERtZkFrYWYwVTRhSlFtek5vUnJBbFpNeCtKZ0UwTUtkaklxZzU3YS9ZMHRSRDBnWld4M2U0QUVLa1dxazQ5VVJRUU9NVFY0bGtsNTBYS3VmdnI0RS9mcGJnVFN5TVo0VmdNd2pvNy8xVzgvZjhQcmZ2bnhRckdzbTVmcVZoZ0JnYmNrTW5FbmZUQlZtSklZRjF5LzhiS0dGdWhpR2NYVHpNZDgxY3QvMFhNOTloQ3dtdW5rSTUxSiswS1ZkYnJVaEJWUHlrUmxSZ0NLV0VhOHdXQTRZdHRBTEJwWmpHTjF6eGoycWVoZ3RDZWt3WENacXdzTVYyd3UvK0N2UC8zZlRnYklRVm9uU05lVGNBS29CSWc1WktUemk2MExwNzVSM0xIbFo3RkNMcTM2aHNDT1diWjFENlhveG9pdHZGVkp2WG90MVJzS0RJRzdkaXpRQ2dOdGN2UEtwN0VmOGVBS3F2QW9EUzlGb2RUeXBDMHZtR2dFSG5ENDU0Zy9UYjhubFRTL1BRRlNoWUtkckdvZEpRTlltVC8xallzWHVhNHlSd2FXZ1RIWm1pT0ZkcjBraUcyaGNlSFE1NzZhYnpSbVdISGJIU3ZWb0x6dUE4WFR5QVN1aEJlR2xLc1N2RWY4MDR5ZCtsT2REQ3RkMGovdE1YajRnQzJoNDJrYkQxMjgyWDBaR09zcTcrWi9HUGxoMDRCM0J0NU83VmtZTHpabWpqend4YStvSjRTNENQUzVBYzVaRFNBU2NTZS85QjhPTlJmUC9KK0tyci90STBaaUtycTVkTXlsVVRwUDJpekN5cjBScEEwQkZXSXU4UnhVbWhoS2Q1NjIxcDZGWE1EZFRhOFhENUdQYnRnZmlyd3Nlb3QyRGUzVGhWaGgrZXlYUC8vN0h6Z1VwSXF0WndwWkRRQVJRNFRyelpVTGozM3VVOW9nTXNmREMxYlM2NDRXTlVycHZ5T3RxblpsT3QydkFlVUthMVd2eHcrTjE0TzUxUHFoMDVEMHVhUytRazhzZDFRYmM4Y2UvTklkRWdQNjBOT1daQXBRY3JDUTFRREFpc3doMWpqeGhYL3pTSFB1eUIrYkY5RENiVzF0aEpacmFVd2doRGdLZlc2TjgxcTRma1RyOEl3N0ovVVllNDhTRjQ3OXIvLzlPLy95RWFXaVRvZ3poWTBhQUhPTldkM3ByL3pLeDNPMStlOVZkUysreU1KT0xBempvQmZEd0xNV0RzUm1VODJRZU81RmE1ZzB3TFZOanhCZmRwV2VLQmJtdi9lMU8zN2w0eEpUMUFXZVdSRFp3a1lNQUFvUXNtbGc1bnQzblZ3ODlNVmZMK1hyNXlyNm5BazNZRGJEOENYQVZNUVgwQTljS2ZlL3RYN3V4S05mL1BWSHYvN25YUHFaSGhSblZqNWNibFJiRU1QaXVBM1VmUGJPdDkrM2VPeWVENVhMamVVS24ybmZOQUtKWlhnQllVOXEwWGZneXJ5N2ZrOXo2ZnpoZXo3MEovLzU3ZmVxT05HQjBpK3FBZEE3Q0xJVzRCRms0L0FuMy9Ubnl5Y2YrbENsMGx5dWlsbnU1MitHUzVOQTFDajdGbDkrVGQ3ZHNMZTV2SGo4dXgvNkh4OTgwNTNJWElmSlhuRUV6VXh3R0ZxQ09FZGg1cUZQSE55eS83WmpsZTFYL0wxOHFUaWlyYU5hWldmbmpSOTlMdXNlOTVKZWk3NmNvYUpkUXJESFBnSzdlWGdaaUhGenFxb2JOc3Q2cVdSUVVaakVkT0xxYXMrMm9udkYvcHk3WmtvYnZwNzcxcTkrL04rOS9qTmlFN2VQOHMwREs4NHVaRFVpRE5NQTBGWis1dUU3RG8xT0hYaTR1dk82RzR2VnltNW1tZlJESWFPNnp1bkgxUUNpZ2JBdGJLdEcvYlY3dGIxdHYzUFRvL09QSEhuZ3ovNzlwLzdqMis2VzZGQStkLzB1V2Ztb1lSZ0dBQjRza01PTVlPNzdkNTJvblQ3MHRkRjlyMm1XeHladktGVUxlcm1KNVVaNDhyV092ZjZvRzRCMVB5MERYWXB3NjdzaXI3ZE5pcjk2Rnk0LzU2N2FYajlmbkgvbUQ3NzZzZmQvNkt1Zi9xM3ZTNEJSK2NTWjcvcXB6YXJBVmRDd0FyZ3dLSjR2NlA2Z0hhVXJmdTUzWHpWeDh6OTdWNjQ2L1pabXZyU05id3cxeEQ2dm1QTVJaS1lJTzlTQXl5aHVjL0tKMURFSllsWWJQUzVYWUxSTmFGZHVRMXVKRi9qcy9RWWxrZFpqbWxlUFRtWXZ1OSt5cGVET2E1ZXc3UWhTQlE4clViajJpTmk3Q2FQYUlUeWhwM3BiSjdWWlZQZjJ4MHYxYzduRlUzLzU5TDEvOXNlZi85Z0hIaFZlRk01K1A5dythUVphUDlLcUdqeHNzTnQ5Q1lDUG9ZNFI4Q3lYdmVDa0s5TnYvazh2bTd6aDUyOHJUbDc5dWx4cDdJWm1yaklsU0Y3ZmwyRFVtM0NRNXFQSC9DSUp2NnpWM2MyaDlCcTBRc1QrUkF4eVVXSkZLUndZQXAyd3g4dkVNWitPQWFDT0k1U1RpZWtrbGlSUThxUVVPNjl0NXhnREd6Z3hjRzFjc2w5ZVlUT0hkcU0zS3JtbE0vbkd3cUhsMlNQZmV1YkJMMzd0N2ovNHRTZUVIcVhIeFI0dW54R0JDSVlsQnV1RDhBMDFtRnlFc2RzUThBNlVqZTI4OVgyN1I2NTgvZjdTanV1dkswenN1aXBmSEwyaTVUQ0kwcVMwVU5FQ3NEUTJrUy9PenVCUndvTjlQVGptT1lBOEJQZ3ZQV0FBVWd5ZWlHM2hLSW90WnNraEtpZ3M1akVPMGhZcmpZR1FqdVZLMnErRGFmMnFUVHhpVXA4bjEzY09Xc1ZpcXprKzZocUxDL3BOajJaVFB5ZlpXczQzVjg3bjNQS1pYSFBoK09Mc3FTTnpKNTk2K3RTVDl6NTl6MTBmUFNVMCtoRVpVenFLeHdBWThTZytqdnFoS1Y4NGh5Uk1NSzBPeUlRRHhYUEkxczBiRUV0OEZ0SjFsZEc5cjZsV2QreXY1TWVueXFPVE8wcTFsVktwVlJ6UjFuNkpucGZmc1FFZWd4SDQrYzFMRENNYWhValpuOFFrUnFCc3ZJS05lUW9qb3pGTnN3Uk9hVzFHc1I4bktHb25xTDc0clgwdWN2aThTTnRZYkpSMG5URi80ZXpLeFhObmF1ZFBIMTQ2K2RTRHk5cElnM0xqUWc0MlVDeEtSdGxSNlpkTjhhSmg0WktGR0JHdEVVT0RBNlhISThxVE9KWkZ1RFJQNmJSQWYyZ0N5a3p6bmg2MXBPT0J3cVBTaVRHRVdFWWM0WlM4UENITjVPV2gwTVlhYVJHbkR3d2c1b0dPZWRLRTJNN25mdmpPM2NxUGlxVW5NUjBWSFdQcTB1M0lYNWJ3dHlYY2JycnBmRHBOcDd2emwwVVFseEZwdHlMVCtYUWFGcnJ6bDVFdGovcWxLdHlYS2wrWHFwQVhYY0dYeXZCbSswMEpiRXBnVXdLYkV0aVV3S1lFTmlXd0tZRk5DV3hLWUZNQ214TFlsTUNtQkg1MEpQRC9BYVVjdVE1N1EyS0lBQUFBQUVsRlRrU3VRbUNDaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBRUFDQVlBQUFCY2NxaG1BQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFlR1ZZU1daTlRRQXFBQUFBQ0FBRUFSb0FCUUFBQUFFQUFBQStBUnNBQlFBQUFBRUFBQUJHQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQk9BQUFBQUFBQUFKQUFBQUFCQUFBQWtBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUJBS0FEQUFRQUFBQUJBQUFCQUFBQUFBQzFaNkxvQUFBQUNYQklXWE1BQUJZbEFBQVdKUUZKVWlUd0FBQUJuV2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2w2d0hoc0FBRUFBU1VSQlZIZ0I3TDE3dEc5TFZ0ZTNmdnQ5bnZmOTZOdjMzbjdjaGdhYTdzWldCSU5nVkh3Z3daWVlEUWl0S01NWGYraUl3YUFSa1dIVWtXaFFFOGVBa0JBRDBhQXlJc0pBVVFNa21nd0lBU0tTRmtUZ2RqZmR0Mi9mUjkvWGVaLzl6UGZ6blRWcjFWcjd0OC9aZTUvOSs1MTltbC90dlZiTm1uUFdyRGxuVmMycXRYN3J0MzVkdDBnTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhjRGM4TUxrYmpkNGpiUzU4YzQ5MDFCSFUzRHNDNzY4STFsK3Bnenp0WmtBa2ZKUU9QMDZkbzhoZjhCN1BBOGVaNE8wWU9FNzk0Mmw2U21yOVNocklCOWs2eG8vTGJWZmRpdGJ5TGVDNzY0R0RKdkkwL0RRYzJoK0V2N3VXblhEckt5Y3M3elNJWTVMU2VkTW1hNHRMT0hOMFB3Z2UweWhuYXVza2JwSFB6d01IVGRScCtNUmxqcFlId2EwRjhORFBMVzlMdjJmaFQ2WEJPODJXeEpHM01CM1dsaE1HVHlkblIrODJjT0xneVpUMU1oL2pzN3pJVDhZRDR6N0ljdVp0SzlrbjVPTUR2cXpUNWkwOGpRZGNwdVROOGoyWnA1UHVTZVVicFZzN0VoNTNlb3VuODVqY09jR1hCSysrKzkzdjN2aThyLzdxY3crKzVkTXVuSC8wa1lzWDdyL3ZRbmRtNCtMeSt0bnp5MHZMNTFmWFY4NnVyNjJjMmR5YmJHeHVkZXRMeTh1cjNXUnBWWFZYOWlaN0t4SzYzSFZMUzhxWDl2WjJrVG5aNjVZbTNkN2VaSmRzZDg4NlpPT2l4eWdVQWtWSSsyZ2lwSkxRQjdDWWs5KzVpRm0yTEJXUzN6a25wUjBkeTlMMHpKbXUyMUxoeXJWU3I2bS9ONlZ1eXJvVnpUeXFTeHVHZGNwNnU4THJmejllT0dTNmpwajNsaVp5MzU3NGxBc1FYbzViMmhYUDd1N2U3dTVrMHUzSXBkdVN0TDIzMjIxMXV6dGI5OTNYM1Z5ZTdOMTQvZFh0NjV1YjI5ZjJkbmV1VEc1ZXU3SjM4OGFsM1V0dlhONTU1ZVZMTnovMGk1ZDMvc1hmdmZyR0J6OTRRMDF1RlZYb0UvcksvYVVjRmZNUVdHRndwTXpIc0luMzJpa254YjJtTi9xMnVpZE1QdTJnMHpSZ25OYS83bHYrMGtPZjl1dC95NU5uSG4vaW1kV3o1NTlaV2xsN1c3ZXkrcVFHM0dPN1M4c1BhT3hkRUh4R2xWWTdYU1F4YlRsV05kV1o3ZGQxM05Ud1FTaURHaUFIT2JEeFFpZGNXTUI0b0dlWmZCK1BrQzE5R2crVHBmSUl5TGFuNGJQTmxnZVlBSEQrZkFTQVM1ZDd2UWFUdExTVE9OcE1PSFByMGVpUStKcGo0a2pPbUdiZGtxZnc3OE1KZjJCUzM5ei9RTmowK3F2cWFQVTBiZG94UkpXOWJtdXYyN3V1L1BKa2IrYzFSWklYSjl0YnorMXViWDU0OStxVlovZGVmZjdaNnovK1E4KzkrdGUvOFJWeDN5enR5RU1PQ2tnNjZDaXNwaWQ4VCtWTWxuc3R0VG9ubk5HYmNoNTBQY2ZaYi82KzczdjZ6ZTk5MzN2WEgzencxKzR0cmIxUGsvd2QyOTNTbzN0cjNjcTJ1RGMxMmpZMWFHN3FZRVhrMkJadWgwTmR6N0VyZUhXajY5YldGUUFVQWE2emhpZ0pIYjB2bm5hVVFQTWdCRkJLV3NJZ3dOV3lBUE1VNUQ1YWc2ODBBY0NITHNOYjZpd3JzRjI0SUZzVnlCd0FVbzdvMkVSSzNuSFpiUlk1aHMzYytFSmxKam5KZFFXM01pb3NlcmFSY2dabElZdVltbHZvbEZNR2dOZGVpMzZEeFFOQko4dlFDTkhPd1ZONm9xazlLU05tSW1WMk43dnR5ZDd1UzVOdTl4ZjN0bS8rOU43cnIvN0UxaS8rcTU5NTRZLzlybytxaHZaSERnVGNMMHMxTVNGaGdRUDFVbVh3cHo3aGtuc2x0Ym9tbkJNL2Myelplc2M3SGp6M0o3NzNYL3lxQjU5Nnl4ZnZyWjM1amR0TEs1Kzlzeks1YjFPMXJtNnFSM1ZjMThDL29RbnZ5YS91Wk1KdmthdjdPQWFUWDBJcHJ5c0FiR2piZkZWRDRocmJaclFRTHowdWNwOEtEbnlic3N3Z0wxVXJHVnJTS3pKeGhkRFNCM0JEYi9ISXlRbVZNcUZ6ckdnNDMzY3hBc0FibC9xMnN6NzFTRmxPdUpWWGFRWEFCeFVIWEFwa0EzeWhKUzV6b1FkMVhBYW5ZK3d2YUNUd0hHMEFvQy9CWmZMRXI0VkNLeFVaT0V4dmdzS1NmRExod0pDdHZUZDBoZkZ2OW01ZS96LzJYdmpsSDM3dWEvNzluKzVlZmZXS0tHd0NxWjNtWmo0d1EvUjdJclYrT3MwS3QzcVdycXZYYkd6VmNQNzJuL3oyYjMvaWZWLyt1OSsvZk9HKzM3ZlpMWC91MXRwaytaSTJkSmUxV2pQeHIydGx2OUVjVFA2YktwTXphSnhMa2xkLzVUdGF4a1QyYWtZQU9IT1dZOUpkdnJLbkFDQUdORkVtVXA5VTFyK1BIcmtmZ3VlNEtaM1J5OUFHdHk4VXNja1Z4UUZaaFJVTjQvc2ZXUElPNEkzWHNmTGdsSFVuTWpoZ25SMzlwdGVSTm9VUU9neEx2Vzk2dm1BUHZxSGViUXN0SldVbS9RSFpzcUtSOE5wcjZqTnQyU1psMXNNSEdIVURxR1dLUWVCT2pabE1FN3hFUUZpTG9MQjNjMjluYVcvbkovZXV2dkhkbC8vNVAveisxNzc1ajM1YzNPd0lxRVgzMDB6bXJXb3RMSmJUbDRyNXAwK3hScVBVa1R3UEFuZXUrcHQvNXU5OHo5cysrei80Ylg5Zzc4ejUzNys1dXZUMDY1cjByMnFGdnF4SmYxV3IvRldONyt2S0NRQ1pFd2h1YXFDdzZtOHFaOVhuTHBPMys4cmRjenBsRDdLbFBYZCtxVHQzYnFtN2NtVzN1M1pWZHdsU3MwYlpld0tVTFN1ckV3V0E1VzVUVjhlWGJoTUE3Z1V6c1dWNWVkSzkvdHFPQTBEMkEvM1g2eThvL3BVVHppQXFCMWR6b3dwT2c0emRnWTVsWGZwNWg3QzUrOUhkYTFmKzU1cy8vcjkvNTB0LzRzcy9JZ25zQ0VnRWdEWUk1TkRKM0V5bjdXUWZuRGFsR24xU1AvS2M4T1NzK2x0Zi9aZi84c08vOVk5KzNkY3VuYi80eDIrc0xUM3hzalpvcjJqaXY4RjFyWTdMT3E1d2FQSmYwd3lQSFlBbXZXYTViaVBYRzFwTmV3YXowUmJQQ3Zzck5RQzBmaml0OEVFQjRORDZFZ1dVSWhEb013Y0NBcE5mYUlJQU93UUhBdTBLQ0FiYUxqNC91WHpwMjY1OTcvL3dIUy8vdGYvc2s4SVFDRElJdElGQTZMcU9BSitxTkcyc254WUZVemNtUEFmbDNPNVB2dVBESDMzLzJUZTk2UnR2cksyODYwVk4vSmMxOFYvWGl2K2FqamQwQUYvYTNOTU9ZRS9iZmsxNExlSDBTcVlVbnVYYjVZc0FjRHNQM1YzNkhRZUFzZm9FQVA0MDh6TVlPQkFRREhRczEwQ3cvYk43TDN6aUwzM3NpNS8rdmlLQ29jVTFWUWFCZHRpZHV0MEFFK3UwSlJ5WUIvcmx3VFhYOXAvNW51OTU4bis1Zk8wN1ZwNTQ2dSs5c0x2eXJwOS91ZXQrNmZXdSs3Q0N3TFA2T091WGRFUHJGeS90ZGgrNXZOTzlxQ1gvc3ZiNFc1cjhlRDZGa2kvU3dnTzM5QUNYZ1hySVlIZG5wOXZtMEkyaGJTMG1mTVRJc2FYN1Nwc2FiN3VUbFhkTjN2VFUzM3ZMVDEvN2prZi8yMy8wWnNrVTFmY0hXS3h5N09hUXkveVdUYytUZU5vVVNuM0kwM21aYjMvYnYvdWxMNzN2clcvOXI2K3NMTC85T1UzNlQ2b1RQcW5yZmVlQ1g3dTUyMTJtazdoZ1YwcGhMdHpoYWJFRHVFTUh6cmo2aWU4QUR0QjNvdVYvU2NleVJxVjNCSnJtUEZPeGNrN2piWFBuUXpzZis4alhQL2NsNy9qSHFwNlhCTzF1SUhjQW1SL1F5dnpRVEs3VGtuSyt0cE9mS0RwNVdENytyaGRmK2M4dnZQMlp2Ly9penZMYmYwR3Iva2UwNHJQcWYwaFIrTmxMZTkzSGRLZnZOZDNHWjZ1UGdCUjJXb3hiNlBHcDRRRTlpTmp0Yk85MFcrd0lOTFYzMkJIb1BoTzdnWjNKOHR1WDMvck0zMy82UjEvNWM3S1d1Y1V3Wk9lYXU0RWNscG1MZEhmVGFRa0E2UkJ5ZE9MQWNkMVgvc2svZWZHL2VmM0tmOWM5OHVCZitPV3IzZHF6V3ZtVk93Qjg2UEtldC9xdjZMTTh0dmtwaEhxTHRQREE3RHlneXdNRmdtMEhBdTA0U3lEWTBnTmkyNXZkR21QMUxUOTE1ZHZQZitEcjlhaVZyejR6QUdSUVFMVlRNVnhSN0c2bmRNUjQ4dS85c2IveE54NzdMWC82ejM3WHpmTm4zdjloUGVMNW5DYit4M1d6aitOalYvZTZWL1JaSGgvalVUR0Z6TktZdGJWSng3R3BtNHRiK3ZpczNEaWVaWk16azcya2o4dzJ6aXo1QWFlYk4wN05qdlRZOW1MTGttN1kzWkF0WEs3TksrbkxDcVU5alVDMVM5dDhlV0hwNHRxN3o3enZON3h2OHZEalAzTGovL3BCN1ZXOXFJM1Ztc2V3SGJjNUtOL3RBSkFPSUNjNm9nOHIvOTZmL3ZidmZPTFgvYUUvOU4zWE50YS82RmxOL284cnVqTHhueU1BNkRQNFM4eDhwUlRnd294UGl3QXdZd2ZmZ2ZpN0ZRQ3NzbVk5ejVDMFM5R2VMZ3VXejYrOGZlUFRQK2Z6Tjk3eW1UOTA5VWUrVnhjSlU0UEFIVmg5NTFWUFF3REl5ViszL2F6OHYrNFBmdTEzWDlsWSsveG45UWxydStwLzR0cXVQOWFiNThSUE55OENRSHJpOU9WM05RQVVkM2oxMXhPUy9Ia1RvaUN3ZEg3NXlkVzNmc2JuVFI1NjdKOXBKNkE5N09rS0FuY3pBRENIeDVOLzhudSs3dXN1L3JaditIUGZkZTNzK2hjK3ErOW01Y3IvVVczNVg3d1JIK25kamNsUEh5OENBRjQ0bmVrMEJBQTg0MHNDaDRBK0NFd1VCRGJlOFo3M2JMLzYyai9aK3JtZjFCTXFIdmRtcDBwVEJqZlh4S3A3TjFMTzRRd0FCS0tsQng1NFlPWEwvb3YvNm0vY1BMZnhtejZrbGYvNWNyMy9VVDE3LzVJKzArZmp2YXg0TjVSZXRMbnd3R0U4NEdjSDlISDBydTRGY0lOd216c0FGelorMDhOZi8xZi9ldmZnZzF6aU11L2FBN0YzWldqZmpRQ1FocllPSUFEcy9QVVAvdngvMmoxdy9pcytvbXYrVCtoei9lZDEzYy9OdnBkMXM0OW45TE1pM2xxa2hRZE9zd2QyTmZ1M2VRS1ZUd2gwYkNrSTdEMXc3aXVmK3Q1LysvWFNXNWpUOGZIZ3ZBTkF6bUh5REFCRXhPMi8rYTkrNW5lc1B2Ym9OM3hNVC9KOVFoUC9FNzdacDBkOEY1TmY3bG1rZTlFRDdBVDRacUtEZ0o0WDJORzRYbnIwMFc5NDB6LzZtUytWUFR3eDZKMnZjdVpDT3pkVW5FK2Fad0JvRFV5RGZRL2lqLy9OYjMzTHc1LzVybTk1YWF0YlkrSy9JRWV4L1g5Ums1K3Y1bWJGK2JoazBjckNBeWZuZ1YwZUhOSjY3OHNCM1JSVVBGaGJlL3U3dnVYaGIvN3ZueTZ0NUVLWWMrTGtHaitFcEhrR2dGU0grY3pCNU9lWWZONVhmZFZmdkw2Ky9KYm50ZnEvcU1sUEFIangrcTYvcHJ1WS9QTFFJdDI3SHRCSEF6dmVDWlFnb0V2YjNUUExiem43MjcveUw4cW9uQWM1K1hPNFp6NXp1K2NWQU5JZ2NnN2FaZkp2LzgxLy9jSDNUKzYvK0h1ZTA2dWNYdFp6L1JFQTlIMTdMZjFaU1h5bklxWHlldFBucDBUS2p2aFVNQ2I3NWxUYVFoQm9kZ0k3ZkJoNDhmenZmZFAzLyt6N0JiV1hBbk0zdzQvYnpzbHBhVnhPL3NtWC9aRS84c2hENzNqbk43NjgxVTFlMXFyUDhkSjF2YmxSWCtyaDFicW5LZms1RDNRcWVxRWZCdDJUU2JyYnY4V2UwK2JyWS9tMHNjVjlkU3doczZ1MHAxZEs3V2pFOE5YaUhRMGN2VXQ2c3ZyMHAvMzVCNy9pNi83UFYvLyt0MnI1ODZKWXJLZ2ZEVktlYVpwSEFHam5DWk0vQThET2wvM1p2L0MxVzJkWDMvbkNTL0d0dnBlMFBYcFpuL1VyQnB5NnlVVlA4QjRJbmova0V3bHRWazZkamxMcFVLbTFCWHV3NVY1T0RERHNJT2REZGwxcW44cStXZEV1WUdsbjJZK1E3MmlzTDExWWZlZlpQL3pudmxZQjRMK1V5c3hGdWlaTkFaNTU4azI0R2JkQ3YrVEI1TWZRcFQvNHpYL2w2VS83cmIvOWI3MXdZM0tlWi95NTZmZWNQdko3UTkvb2d5a3JuSnBjM2JHdTd3R3M2MVZhL2k2QXZnOXdLdlU4ak85a3k2cWVteit6c2VTYlV6dy9mMnI4ZkJqOVJ6ejB3MW5ad3VwNlU2dUh2c1ovS3UycHUwZGVOaUtINC9PVk0rYytjMlhqM1BkZi8vRWYxaDB3SnlaK0hyRE1OT0c3ZVNYYXlodC9PMS93dFYvNyt6YzNsaDU3V1pQL1ZTMUJyeWdpTXZteEdNYlRlSER0bjhkcDFPOG9PdUZuMzh1UVRVZXBkeHA1MDVhOE4zTWFkVVFuOVBTbkFucWdUWnVCYmxmamZrOXo0TXo3ditZUGlNU3pBY3lQWklXZGxIbVVUdmc4NjBzQTk0MTBUcVBJdXkvL1UzL3F6YXYzUC9TQjUvWDFDRjdoOVpvYzhhcFdvVjN0cldldDBISDl4M1ZsYThReXdlQzR3dTUyUFd3cCttTVR0dHpyS1FlYWJUbkY5cUFhNDV5Zk45cVYwbHdLTE4vMzBBY3VmczJmL2g4dmZlZGZlMEZrdW9RanJjaGNxSk5QODVwdjlFOGF0dlBGZi9qcmZ1Zk9tZVVuWHRHMVArL3VlMVZPdUtUVm4ydTMwNXJvaFEyZEZMeDlENkI5b1B1MDZudzd2YkNGQTF2dTVjVGd3ZzUyQUl3aGJxdWY1clRFdlFETmZnNzlLSW0rTmJqOHhJWGYrOGQvcHdMQXQwbHY1a25HTTFrMDJ6VExBSUFScERUR0FlQnRiM3ZiMlhPUFAva1ZiUGt2eVhoZTRmM2FUVjdQSGRmVVVlWDBuZlBPY3ZaSXJxQ25UOVBiYTRRdFRCWnM0YmpYUHdWZ2dMVzIzQXYydEx1QVhVV3M1WWVlK01yenp6enpkNjQ4KzZ4bWhvUEFYRzRHTWlsbm1YTHlrOVBXN2dmKzFyZCt6dTc2K250ZjFiVS9yKzUrUXdIZ3FyN2IzektlVmhoSFdUZU50dE9xNDJIMXFyYWtUZmR3ZmkvYTRoOC8xUlRuaGlYM0Fqck5pYk4vNnRzK1J4QVQzNHVsOHJZN1ZUejVOTXNkUUdxTEVXblE3cHMvKzNOKzg3Witjdk9LVm45K3VJTlhkL084OUR3VVNZV09rL3NlQUJPL1RQNTcvUjZBOVMvMmZFcmNBeWkyc1ByZkcvWndJMUJ2SGRhUFNPOXh6WEsyVzFuNzlIZDlzYUFmMWNITlFHNEtNbmRtbW1ZMTcxTHhqR0FPQU9mT25UdXpkdUgrTDJMNzcxL3MwUTdnaWw2dHhYVmJWcGlwdFhjZ1hPTXFYdjBrZ0dCd0wraDhrTG5ZZ3IreEkyMDVpUGRld0xlMk1KZkc5d0J5RUdJTHRwK1dwQjg4angwQS9hQUJ0WHord1MvU1R6YWYxVTlQYVdtY3oyWEFyQUlBUGs2L1o5Nzl4OS8wVFUvdHJhNS8xbVU5OFVjQTRGZDcrTkVPQnVGcFQ1NHNVcEw5R2VybVRxRFgreDR3SXBWbHdIRlVXKzRoM2RPR1VkN2FNdkdBWXRqMUtTM012S2ZjUFVnajN6Y3ZmUm1nS2IrMHN2NVpELy9SYjM3Nms5L3k5YjhrclhMZXBDSGtKNjcrTEFNQW5rWHB1djEvMTIvNExlL1pYWnRjdUtwSEh2aDEzcXM2K000MERLY3hwZWZSRGM5NzBnc2dYOUlnTTcwd2didG5rblJsbTh4MitkN1pNdC9hdTJsTDJyTkhoK2gvblBaNEFtZVVwckNOT0daVVJFWHZBdlJwQUJ2K3M1TUxhNS83eGU4UjlBczZtQmFwTFBsTTFKeGxBRURwUERCbTcrTGpiLzQxbXZQeEE1M2FBVnpYVzFQb3Axa3FvZVpPSlBHcUo0eHhyNVN1WURkQXQ5eXFkMmJTYTNkb0VUbzU2QXBnc1dUczNhc0ozN2VKUHNsK1NkL2JWdUU5R0ROd3U5VFd2RHV3QXdDL3RDeWw5NlRvOGtOditseHA4ci9xOEZCVDNwb0luR1lKdlBNMGk3bVhDcFBuZ1RHcksrZlB2NWZmN2RQWC9CMEUrSFhlMDVEUW90VmtBRE5Eb0N2ajRQTm1CaGlxcDNFQzc2bmszWXFVcm5wWDRKNHl3OHFpT3YyUS9ZTlJwY3VxZmVNQUIzOWFuejhqRGlid1FIM2ZSbWwyWjc5RFVBT0tjY1Y5Z0tVekY5Z0JuTkdSOXdIYVlYYmlQVFdMQUlDM1dsODZBSC94Qno3d1lMZXkvdlpyK3NqamhsWi9EZ0tBTmdFRFppcmZyY1ExV2F0NHE0Znh1TDhjYkRXZE1oZWhnb1dVMlVINHBNODlsMEs3UElUQ3dQTng2alE4bEV2YXZ1STYycDJuMlUvZlFFdXJEQ2RDT2Zpa01RRXpKWjYzK3M0cjZUTUFCU3kxclA3d3B3RXJhODljK0xLdmVmRHlEM3puaTlJQlJkcWpWL2FFRkp4VkFFQzlnZUx2L2ExZjh1VDJaUG5oNjRwcitpRWZCNERUOUxZZjN1R2EzWjdYODJrQVl3dGQ2U2Q5RjZnN3E1QzJvbDkrNDdmaGZLa0pJOXU0ZXlUWkRobHluejVzMG9jdzNVUmZjcnFYRTlwZmtDMFRIVmZWSjllMHNPUVB4dmhudmQwL0RFZzlmU2Q3V1pFS3ltYm5yS0lMd1pNU0Y2WFpuZWtMZ3BkamdCYkZwWlhsaDgvK2UxL3lwQUlBandXalRxcUVFc0FucXRwSkI0QlcyVlRZU2ovMnpEdmZwcDlMWExucGxUOVcvNG4yUFNldEFJMmVWR0xpNndubDdyd215enN2VHJvbnowKzY4MUo0YVcxSlBjRXdHaVU2YzRSeWNTcnlBTjVwOVVlNHNaTkg1T0dRS1VUWEdWVjB4ekQ1ei9JN2xpVWQwWWFtV29KSHprZHFEZXRQSVJvMXdsTmtBbTgvdHVxZDVldDZ2dVNqK2dHWjUvVTdFbHl1RVFqd2VGd09SR1hPNEd0UDFuNENDQjVxelRMUmtvTUFnTWFhM2hPd3N2clVwNzlOcFovUWtVcGtMdFRKcGxuTlB4VE9BLy91bm52bzRiZnhJZ1FtMUpaNllYTjhZWGF5ZGgxUld2UzhvN0JxbHI2d0FlKytmNm43TEMyVlRQd3ptaWZuOVZLQWRlWDhJaXdHdWdNUGFBMTU4SkNpaFlCbmRSNjBwVUtXNzdROWRNOWQwVHpzUU4vVTNlM2R4aFo0NFdPaWIybUJ1YjQ1NmE3cGVNZjVwZTRGZmNuc3AxN1o3bDdTZXliV05OdERyaGdGc09lakRrTVJQSWQzQjJaQ29nSGxzMHUwRVBjQnRBZFZrOTZGUFBEUTIwcUxWcWZBWmoxcFRVNDZBT0MxR2xBRm96VEg4c3FaODIvbDVoOFRQNFBBYWJqKzU4b2RwUWRKQ0xiNlgvREljdmMyRGFJSGRFdm1NeC9xdXZ2UCtsTE5BNGJkQWNlK3VrWFFRZmhCTzNNbzRQempwdE5pQS9vZnhnNzA1V0JDWDFjZ2VFRWZONis5T3VrZVdsdnRmbFN2bmZyd2xkMU9QNG1vRlBzM3JyK0JYVS80N05QczFMZ3NQRXpMeUR4K1d0Yk05K1NYSXVSTGErZmVLbWs1K1ZHZ1ZRSVlsVThrblhRQVNFVlQ2Y3hYbGxmWG45aFVwM0J0UmhEZ3l6KzdzaU1ybklnMXh4Q1NDckxDSmN3ZDJjOS9lTGw3KzRXbDd1MzNkOTE3SHRIV1VrU05uMjVMOXpENDhvWnZPcFZ1b05NT2xaTC9VTXlIWTJyOTExN0RVcHZtV3ZyaEpCNkNxN0czQVE5UjhkWXNyYTVqVzI1ZFUxUXE2NkRlbm5ablN6cmVwTDQ3cDZEOXk4OTMzUmMrb2tzRC9ZNzNDM3JaN0xJNm01SEhoR2VTOHlLUnZLbUxQVDZLTW96UldhY2xLMTBhMXR6UXczSnZWbWxOQjUrYUYwMEV6U0NkZEFCb1ZVUnhLLy80NDQrZjBaWE5JNXN5aDV0cC9GcktMdGYvOHUxTXJXdTFPU1NNZnF6NnoyanlQNmtmZDM3Zm8vcStndXBlMGRPTHUzcHIwWkowMTlpeTNsTjFsMDJ6SHpLSE5LYXdWVDByY0p2NnA5Q0cxTmdtSEdBSGZpZDRxNHY4bWZxMlJ2ZXFwdEZqMnIxOTRxV3UrOXlIVjdvZmZHN1QyLzVsSmo1OG12dzdpdUJjSExBN1FMVEZ6N1VUbXgyQWxGOWFYbjJrZStLSmplNzU1N1hVVkpVT3NGb2NkNUJtR1FCUXkvNzh6Qy80Z25ON1M4djNiMnIxZEFEUUpPUFhWS3V6NzhDQUU2bGFCanplNXFiUVordTZuK3Q5Vm41KzB2V1N2cms0MFMrNzZLMVQzVXE1d0duSFIvYU1jUTJoQVU5RXphTUtTYjFxUFNGYVhPcTNENWVFVW5GVXJPTG1CYlQ2dWMyUkhlQmFIWUVaWjN6a3ZLVkZoL3MxWjNVWjk0aTJjYzhvdVAvOEczbzlaOXdWZERCbkV1eHFWN0N0bFppMk1zQVBuQ1g4ekJJS3M0MVUrL3kwdUNMQS9lYy82d3ZQWFhuK0gvQ2pZcTM1d0sycEt0NVptbFVBUU5FOHVzYys2NzNuTmQzUGMvT3ZEd0RpT0ZGVGp1WUkrMXhWTkU2c2hqMHI1T01iays1KzNSbC9RcXYva3J6RCt3cjIxQTM2K1hrSEIvZlRxS2swQTlwcFN2dlVFV0xLazdCOU40aStyODRwTUdpZlR0aUJYajVOVnpBL3JtVzNlVTNIdXZyeXFtYjIyODR2ZC85T0FZQUp4ME5BclA1OHBzT2s1NTRBWDB6bmNvL0VaU0h4bnVJdG1vTDFqcFBIbGRyajBsSjZuVjkveDdzdlhQbmhmOEN6QUtTWk5UK0xBREJXZHUrUk56MTVZVyt5dEpHVDM3bU1WVGZjdFpSSzBza1o4ZEhyTVFXQUZSRWZQcStCSSswMnRmWG5iY0FzR0RuQk14OHJmeEIrekhkWHk3TDN3T0hFQUx5cnloMis4VnVaWVNucUw3YjBYRWl2cWw5NVpvUDdBZzhvdUNzR2RGYzArSmp3VEg2K044RHFEejlqZ2U5SklKL0ZRYy9uT00zU0w5YURCckxSbGFXTmxVZTVBSFZDZ3p3SzZ1U3lXUVNBMUs0cWZlN2hSeTdvMm14VnIwYVBhelRsK1dXVVpMN2JPY3B5YStnOEgvRnBzS3dxMXlkSDhUVk5FYm0ycElQSWFnNmN5WVFzRkw2K2VOY2c3R3BUNnQvaURvSkhKaDNFTmpmOFBsdGFCUnNpSUNSeWdya0R2QkFUK2xXUi9LeG1PaStoSWFycmJEcjM0ZmhVYWtVMXVTbElvbDUwT01Ec2t4ZVFzR2wxNytLakJJQTBZMmFObjJRQUNLK0ZxZ21UNzIyY1AzZUJKMzU0N0pRZ3dMYXJmUVJ6WnRiZFFuQXFpSXZ4TXJkYkdRd2JHaFIrd2srOXp5VUwxMlFNbk9UTFRvcCtFajVUZzJqQXBONjFQSFdwOWg1U2s2eDNTUGE1c0tWT1UyMkJtQVRsN095WTFDUmdRT1kxK1lZQ0FKLy9yNWtuVm44bXZ0N1k3KzAvbndnNGFKVDZ5QkJxdGtrRGE0TENOS1RHbDgrZHpSMUEyeTRhbmFncUp4a0FXa1dCcS92V3psODhoMjA0blpXVVFKQ2RNcTQwanpJZXpJTkp6OEhYZTdYb2U4Vmd1NC8yNkFrams5NTlVMkJoKzhzQkZ6amRPdEdlVXdVU2NVSzU5RVh0ZzlKSk5WdmxWT0NnRnU4QWYweGJCdlpUU0IyVkp3aWErd084TTREeHlLUm42MjlZT1o5TThkSGZscUpGKzlndzlUaG1sVHpHSkp5Y2hwWTJMcDZqR0tYWk5UM0xBQ0RkUTNHOTZPQWNsbmoxMTZRaTE1T2FweUpsdExjeTBvbjd3S3dVVEhoL1VhYm82UTRTVE5HZFZPQTZzc0JQczJpQUhCU21jUjhmWjMyYUlkcUFZNkhUU0xmVmJNQXdLSXpGMzNtNXRXV2FzcVdGQVlrQ2FwVzhncFlWTkhEWmQ0ekJmdUwzTndTWG1maUlLZlh5aHFCUU0wMXIwaWUvRTRDZTNlbzZBWUNVWm1ZZTJCTTZuM1FBbUtya3h0bTFzMnU2RzdQR1k3UWJmQ1F6NlM3cWpzeFU1aE15N0RCaUdBem9nTU41SUlUeWlrWUZPVGdmT3JGcllWZVFaUThpNkVZRVhrVXdrUld3S2ZYNG1VSk5pd0x0MzMxT3h0S0Qwb2hTaWlQc1FaVlBHRDlzZkw4dFF6c3FuV29VU3U2K0ZFd3grKzNNaGg3dDNsbnlUc0M4bXZScytibmhSOVhvNi9oSTBHSXNYSVFacGlVMXluMm5GYzNJZGQyQTNyNndxa2VZRGt4cDRZRU1oeVdjZEFBb2JnKzNTZ203YnUzTTJzYUtBc0M2amcwRmdETXk3Wnp1dE0zQnJ3ZjZJUld0REVLQVcyRWtGSmdCbzhEc2daTjVTK3RoYXZhSkVpdElwQUJxTWRFenlzT25jWGFibkFhT1Bwd21ycmFQbGR1azgwdGpXNnhUYlQ0MUtUczJGZUhuTUY4QmZNa3BCRHM2Q1BUTCt2cHlkMEc1UHhrQUxab3Yrd1FqZ0IzQTBHY2dacHZRaFFEQXdkcS9kV0ZOTTZXYWhQWXpTU2NkQUZCeW43SmJ1NU9OaVY0RWVvMTNBZXFobWl0WDlycXIraTJBZll3ek1YRy9VUFc5QndrNUFCL0RKTHpEMHo3U3JQSUlZUEo3UWdzMnZoREhjRkRqbkZ0SW1waC9RclBvaURyd2o2Z0VFaktJaGJRakNqZ3g5c2FXSXJNZk4weCtkbTVORUlDb0ttUUZkQUJQRzhEZHVMN1RYZEp6M2F2dTZxZ0xONWQrcnNkSnlTK3JUNXpLQlczYVNaOTRNR2xWSDFud05YTjlqNm5idnI1RUFKaDVPdWtBTU5WSE96dEw2emYwUU0xMWdvQStYTCtpSHdHOXBKY0NUR1dldWNsOUE3UWZnN3dFSTQyU25RZU1OVk91SHI0RUVJWkIxRzc3V3hpaUI1bFBCUTZNWlJXMDRWbWR4djYwVlFOOTFQS1lxVlZtcEdSZm5BYTFGVThlSHF1NXp4WXh3SU5tQitZaXVBOExYM2JIcHQ1R2MxVnZwZVhiZ1o3MWtnREl6M1d0SUUzL1liRVdnZ3FmdkkydHhGVnRBVmEwL1dRSHNLM0F0SHR6d3VNbk0wOG5IUURHQ3N0OWVpeGJEemYzUXdpTVArbHd4NDByekx2c3FDOTkwSSt2SzZOd3J0NU04SG93RUpveWVycE1UZU4xQWxmS0xzejVGQnEwamU3SHRGUjNUb3NBdm5XVk1mZk15dnZWYUREMGsyWW12dGE2clVtcW5KbWFCbVV1N1FnQTBVL0ZOSlVoYzZWSFloT1ExLzdnR0FPYWcwNkpMOFhaWnlpbVJEYVpMS09HUVhDelNyTU9BT2c5bVN3dHIvQXhTMDZnV1JseldMbkZ6NTdvd0F3dGZ3OEFCWnRFS1hjQm9FMHVkbkJaUUVYWEtMaktBK0JrYWhiNi9BQjB6M0JFS0EzYVYyMUlvTm5ZOGV4anJBanoxRklDUTRVcnp4Q2R6SGVXRDFVdXN2WWpFK05jZWhESVNXUXRqVDV6RUlCWTlHMmZRQVhGSjBGTWRnSUFNSGYrbVJqNVJDQ3hoVlNxUitHa3p4TGU5czFraWR1QjFSUmFTN05PdE9WWkJvQkc0UWtmcjhZRVFuMFZjRzdEY0tKR0hWWVlPbTJqalA1WkNlaDhyLzZCc3I3akFOQUdNYi9Jd2J4Um9WLzlEWVVhSXMwOFpSdjdIT3FOODZENS9aZ0JXWVZHZDVkRzlHeHJoRDZ4WXNvZjJCTElRTFhuTW9hRXl0OEN5R3JrSE5sL0tSWTl3Yk1nc1MwbGtMUDlkNzlDOHdEUUEwR0MrWmpRdHduYXlzTFBKS0VVN2Vnb3VyUnpFeXFKUERtTnVOTlQyOGlkeW1ycnA4TGdlTFNPZHg3VUNaWE9iaXZNRTY0clFtblVYcFYrdnROdmhYdGRjd0RCbWpiMHNHb0t5YVNLSnh2N1BIam9VVU1sbjBYbVRiQUVvMHVSYisvN1ZGR0hiem5xN2VQSCtKckM1aWkyK01wd1RDRGE5am5GdWhCNG93VEc5bDlOYU5tUFZSTWYyQU45dTBLZ3N2dGF1YS9sbGNNZmRjSmRCSDM5bDQvK1loR3dNT0g0eGlvM0FuMnJvSmM4RXloMVFobkRtak16YVdna2RGWUJJSnR4ejJseThQWHJHSXpPNHlrc0U1Tnp6cmtIVERPbzR6dmh4ZmxGMXh4QURDSVNaVmRwNkdHWEpvUjVnaENnejJGempxaVE0dlB3ZERSUGpMbjNyZW8wWFVjVUxmVTFlbWlvQWFYUXVNVVh6RDVDSzZXRjI3ckhod2ZOVWJBdE1jbVJhcFRGSnhTNXo2Z2pnSXdqQTNqMkc5V1k5QnpRK0s2QWR3R0NTZHdEWUx0SzBVRkRlZlkvOUZrbGRodHRCMmdwSVFDTXNDZmYrcXdEQUJyckU0NGxmZ2F0TjdBNCsrVE5DWStONWJaelFZNDFPVlhJYTNtMmVwREFlNklyOStBUmczNi84UllUUHlxeEp1NExBdGxXTmtZYlUxUFBRSTg3VlNBUjQzdy9RNHRCRjVkOTZ1WDNVZ2JjUFhvTXFTcTFiODg5clkyeHNJUEtyZlRnMlk4SkxRSlB5QXNvK2FibDRPaEQ5eWM1b25WcUp6d3dsdzk4QXNBWTRDTkZnb0JuWDZrenIzc0FxR2NsVVZTM3psMmU4V2tlQVFDSDg2aDkzeEdDNTMwUEFKL2kzVjMxWnNBTWFtL2U3WFFHUWlnSVlGUjlGSmpIUm5PQVZUdVFvb0xMQlhiR2lmck9zcVVvcHd3ejVBa2tiR05pcmRvVDhrWlhWSzBNS1dtVWwzckpwbUl2Q2RZa2pLb2xaVUFlRlBaWHVHUE1yZVJMYTVIRGRnSHF2d3JMb3VoRExFT0d5c2xiY2dkeHFrSG1LSWtiZ2VzcTArLytDQkM4eW5FL0lMNGx1Q1JoU0c0WEVOaG1rV3hUMGMrNlJqeWFSVk1EbVhNSkFHclJZOC8yNldTbkpuS2d6cDBYb28yYzVLekxPVFNRYlRVYzhYTTBtQjZ6VlNpVitDOUg3Z0JZRWVxTm91UVJvNi83WFNVcTZPektrYnZnOW9HY1RCQVVhZ3h4aGRhVEJMa1FCTUJVMDRTZU1lVHNPL2Yxeks5aXJtVDdXRnRFMFVQY3h0Wml5ek5IT0hveSt6TmNram94TWJFcFhXRWZTYmUyUEFnQVJXL1RFYUlqNnNSczh5Y0I0SVVrWTdIZ2owQXc4MVNhb0NuYnRjY1BoUlgxWnRqNFhBS0FKb3AzQUhqVmRzcXg0ZHlUczZ6NHp3S0JjOGpZb2FVWndrRzBIOXd4b1pqSU1PZ2tJSDZzTVZZR3ZnekVTMElJQUZrM0puM0lxVEJWczM2MjFjOVdpeTRjaFJvOTJ4YzhKUHNpVUl4TTQwd2RMUDlhbWNLRVdxY3NpMzE1QU1WS2hvcVdHNmNCUnhSc2lNRjk0b1VkNDNvQkIxTjZubHRCUS92SG5ObVhLSjhCQVo2RS9RbUEvSk5TMm54d0NTQTE4ZHRTMmRHeCtyTVRaZUw3eFNDTVM4SDU4Ujh3bG5GWlFJcXp3Uk0vc2NCNENCWEowbk9XelZYOTV4UUE5T0dLUElrejAwaWNmeElXdGpKaVVzVExIa3RUcFUyMi9ucStXaWUyODB4YzVwUHJlcUpxK2hZRnQvVDVFTytLNE9VUWZvVzV5cHVGSHg3ellVYkM1S1hzTmxWMkt2Z282R3gwMEFxSFVibkNNQUFHdjFOWERIT0dza1Z1eTFObEF5UWRlQkFzUUlTdHZRcEFTRTVONElnMEhSdTB0RDE1VHk2Zm9zZllCckZVbEd4TlA5Zy9Vc1Q1Rkh6ZEFUVEtldXd4RG55VnJacWE0R2hRZDNsQ0lTOERRWm4vdmx4b3hKd29XQU02aXZod1NLQU5tM2FpalRYQzVoUUFpb2N4VEFsalozTVBJQnF3L3d6R2hPYzNDQi9RRjVIZTkrQlM5eG4zVGJxbnp1bGQ4WHJROHB5ZXRlTHVLeDVPTHordWwvOXRDSzhmQWVxMjlWcnBYYjFNY2tVakx3WmZXV1dLYkJ0VFRtWCtxUlNoT3pScE9aSXhQb1BlMU1pOHF0L2xlazJ2SFhwUnI2citwSTR0YlRsNFkwME03aGprMXFzb1p4MGt1TWNWUWhGTktWUkxKZ2hEbmg2elg4TURNZnNKaUhHNkJTbFpEcDIzbWtaWXBXcGd3elphaXo3SWRzRUhiWHBlQXdBVlNpVjZDSkRYY1h2MVYrZUJ5M2hBSGQrVkw3THI1RlI1Vm9tK3BSMXNjWnFnMmV6VFBBSUFwcFdCS1lOYUkrL1F2dFpEckU1RTlwcFU1Z2RJSDlNRS9xcG5WcnJmOVpZbHZSQnkwcDNSN2QzOGZJWDZLU056QmtZZUUzMGRRMTlqcWp6SVRyNGhGc3IrbEx6N0tYVXN1aTE5TDZwN1VUOWg5YS8xNHhVZmZHVkxyMDNYdStzSkJQeVZrVkZoMVloQWdQUndKclI5Q1NPY0N2ODBubVNaa25zQ1ZobGhkMU9jVXVQa1VMWXNHOU9zcVBZSjV3ZDF3QkJ4UzBTMGIrekp3dG1UdlBOREZPekZYZmFFTDBHRjg1aFJnMHkrM1A2VDg2Q1F4MG5qV2tUTUt0VWdReU54TkMzUHF0VjQ0bkYyMGh2SmRFQzFUWUNmdW12b1J3V1JSYUlEYzdYSUNNb0RIRGUwaC8vU3A1YTZiL3ljbGU3VDlidCtlSk5veHdFOGw4OVkxTTZ0VXZwRHIwZm8zbkp1cVh2NjNIcjNub2RYdXgvOHlQWHVlYjIxY3MzYmt4amVqZ00yVUdYMnBJSnRGVUlNMHhLV2pSSW9PU2tuem9nNnBSaWU5VG5BS1R3dDZsQk1iWVZid0ZQMEYzZGU2MU94NVVqWXVkUndQTkJvQ0k4RjgyQUhnQUR4NWRoalRESU9HRU80bW5zK1hCYjRHUUdWK2FRQWw4TkRHN01jTTNTcGc1VGFtV2VheHc1Z01QRXA2UDlFZnZLRVRrR2E1MFdBaXR5NlpsZjQvaU9mdnR6OStmZXRlTVhuYTFYNUJRL1lUa3RDLzdBaE5HTEE4YU1rSC9pTXM5MzMvTUwxN3BkZTMrcFdOVExaQmRTRE9xb1VnNzNrakI3ajhXejQxOEVoQ3lXUElFQWhlQUtLYzZ2SHRJRllnMnhiNmNUaGJBVy9GSTFrVWs3c0J1dVdIUmhrZXdhM3RLSG1xc3RLVGhEUXY0K2srZWFmY0V3QTAzU2lIYitXdXdRQjQ0V0xSY1pOenV4VWZ5UW5GWjFaUzBQQjh3a0E3WWZ2eGNDTXdrTjFEbGZLVHFUckRFdW1PMGtqOTZaVy92L3dyY3ZkTi8zcWxVNjc5MDR2VjhtaGREamhkNUdMTFNmdXVhakgwLzZqVHp2VC9lMS9zOU85b0pmYTgxWFJuUFI5THVOWStjdHV3Sk9EeXFUZVFWRXVad0tsMHdGME55NkdaQ3ZjK3pIN0dYcldPNEVHZXNWS1RsUFd1OUFDTnJhYW1kVUlDTzIzQXZHVlYzV3h0MEVOR0FsZTZjbDE0RVlIaFZMSDl3QUUrMUtqdEVTZG1TVzFOWEE4QTNvT2FaWUJBSk9jN1BDbUV5RGtVVmlPbEZtd2hKSjdpMGR0bGZuSTdxMjZ6di96djJxNVd4ZVJHM25tUFpMMHU4dU12Z1NDKy9YbXlpOTkrOW51YjMvd2t0NU92S3V2VTdEU1JTRGcvbkFFQW9BYzlBelBzbTU2cE9wVWpRK2dGazJmYnVlUVZFcEQ1TlNLaDJDWldnL2tnWG8xRVdzdzhXbXMybTNRUW9JSDBBeVdPNzRFb0MybzROa1ZlcDZCVUNJSTVQWWZPZ0VCSVNaWEpjMTY0cWRxS28zcG1IRnpWZjlaQm9EYWlGZm5VaUlZWU9DeWtNY3hrdW9rY3JiTTVEaVBuSS81L3ZBN1Y3b25kWmQvUTRqanlKZVl1NTdRbStNZCtsbnlkejI4MXYzVUoyN3FsMjAwK2ZVQk5rR0FtMVFFZ0FnRUZFb1F3QXNpVU5jSnB5UmdaRU5MMGlpUEtxVmlyVDlpVW5FL2FUOW1mNjJETUtGeDFUdlpVcVFJcGxIR1ZrcUd3UWZnMVQrNHhCSVZxTU5FcmdzUUNKVTlzV2xEc044R1ZYd0duLzFLSGZIR1Y4UmpoeEM4VkpwTjhrZVN0Ri9FQzV4TG1rc0FzQ1ZZVkt6QzBUZzNqVDJLcGRVeEJmRDJUUUpaL1o4K08rbCt4OVBDQ0Y2RGNBOG5kZ0VFenM5OWZGMEI0SVoyQVhxK1FUYnJXeFVPQWt6K1BaOFl0Sm9TeFpuOTNmRXd2dm9ZZjNtWnVaVmp4RVRubE5SRGljbThVQTVtU01aRDVrVlFHdEhVc3Y2ZW1hRjNhMThFQWdVRTZrbUVjOVZObXpHM3ZRZUEyS0RwTndCRXc3L2sramVlU1U5VHVEWEhLano1Z1Z6S0ZlckVFOWJaOVdyZjNZUlNjMGh6Q1FBWWhqMXBvTzA2cG9IWmdjakFhVVI0T21sYlBmMXJIbG5TeDM2VFRyLys5Q21STU9QTjUxZTZCL1VXMjVldTd2aVZVUkVFWWxCNjFXUHlpOCtEcHNBeEdYREJ5QkgyT1JNRzJ2N2svaG5YcVd5cUhQL0NIQ0NnOGg0VGtIeEw3azlWVUQveHcxNElpVXR0bkNNRG9PUWVIK2l0SXhQamhTSStLNXVGbVBqQzhkUW5lSTh0WUNvMWRTbk9KS21Ob25ib05wTkc5Z3VkU3dDZzJYYnllN0R1MStWUUdBLzYwaUh1U0FtT1FMRFh2VWZ2OCtQbXpkeU1PcFRHeDJmQ3JqTXk1dEd6eTkxemw3YTh3dkVsTWU2Vk04aVpDdjdDQ2lPSHlZK1R5K3dPSDBjWjhpQVYvdzF3bzBKbE1WQkxNNThMMXJWdEU3c2EzWUl1aG9MUGN1d0N5bTVBL0ZtbnZRUm94SGpoZ0FlWDVXU0g3cDJCQ05CeWQ4QXJ4MGlTN253V0p6ZUJXVFFWemMyaW1YMHk1ekpYNnAxWW1zZElaVGozdU83RVB6SDUrMTBBMyt0K1NoK2hrYnlGTTNSdm4vQVBGajJvTnhWekNiQ3M1ZDgvSkNrbjhtVlJ2bVB0RlV5d0I4NDRDR0IrRXhRb2txYjVmZCtZVXoxd0xlOCtIa3ViemFtMjIraWZBYzYwb2x6eWtWZTQxTUVuakpNTUFza0EzcmJvVk9LbEw2L0FNWGI0NGdvdkFzRzMrSjlkMTh5VDJrcjkzUmFLenlITkpRQlVPK1JJK3NaSFJSNGVZRWpTRis1ZjVYUk95TnZ6aXgwZTRBTi9NWHlxQkFCWjQzUmU3Ni9lMWlqZVljTFhQeDVqSlJCb2hkUmc4VUNXN1pIM0s2RUY0Q1NuR0dXRGdWWW9aT2JxVHcwbHdKVFNNTzdqdVRQRUFmcTV3OHRPUUhCYzY3TWVpei9MSlUvYk1tL3ZBVER4d1hNd3FabGp2dGNpMkE4Q1laaG1mUVlGbXZYRFFLcVE5ZTdNdm9OckQ0SVNhaHpNZXFLVXVRUUFqTUdabVFDSnlqajFPTWtkcUlyeGhSekprU3c2a01kOFA1VlMrb2NuQW5mM0JZQ1kvSHg3a1FuQnd6QU0zREpOWWtlQU0xSklPdVlXZnFkZnBnNjlJQlFKRVlSTDRZUXoyYUMybU5wT3JlN29uV2owQVM0NDZsQTJPZmxLUUdDY01mWTRYRis1NnltcnM2eklZa0hoSGtBK2xKTTMvK0FyMWFnMWsrUkZpMFpLc2kxWm1HRStsd0JnQitMRTlLSnlERHlPa1hRMjlSQkY1OUpwZkhQUDEvN2VFZ2p4S1pTd0U5dFkvZGtGOEc2MTlvOGZsTWlQd096VE12RERRNkloZ0dSblp5RlFmUStNOGFJWFZHVDc2V0FzTWtXZFFON0xMSkF5dDZFVE52cjUvV0xINEFHbzByYkhCcWR5Wnc5V3hnaUgwVVdlc2dnSTBIWGtkVC9yQnpzRGdnQndmdzlBaFJtbjJrOVdUbzJSenlITkpRRGs1VXdHQUl6RjBlN0xZeGlKYjl5cHlpMFRiekh3S1RmeWdJL2JSaVBtN29NeWhBQ1Fsd0RldGtvcjRwM3ZDWGdISUZ1THNaa3o2bk5Ia0k0WitNaXo0bGJtTmF0OTQ5Z0VUOXEzZy80cU04TDZsd2I5eUMrVFd5bFhjL0tLeDk2Yy9FVVk0d09RSXplSTZZTnFmakVFM3BUTG1HVlZobFJVRVRURFJGc29PZWMwbHdDUXYzcUtiV0VqQXpNbTdHSHRUZC9RU1JsUUhLMlJDRkVPVEo3RHlreStvOVJqUU13em9SdjI4aDREdjh1QXhqVlN1RkhsU3lEdFUvM0RHSW9HSHF3K3c2U2t5dm1jZkNDQ0oyRVArQ3lVdlBlRm9QZzNwYlc3NXhsVlBvRml0b051cE5UZmVIQUNrc2QwVU1MbnhJMWNZNnNnMkRWNE1qZEtVNThiaWlGT2RBRU9xaUw0L2ZYS29lVWk0KzA1alJrN2JOL29remdSdUdnMGo1T1FlUWdaY3drQTZPRU9UZU9VcDNNUG9hTlpzbXJ5eDUxYUJCZU1janAyMWltYk8ybzd4OVpORFRMUjJ4MEFocUlIT3dCR1B3OEU4WlliVHc0YUVuOU1BR0FkeFVrVkIrb1dpZlp1bThSekNLN2JpbWtaUEdmSHZWajBiM1hIeFBxSkFMcXFvbGRQRVV3clFzSGhGcnNHT2JDNmJ1UlV4WWQ1clE5LzNnTUFWNnI0WVNLeFZjMlFjZElKbVRZRndkbndTVGN5UmQ1Y0FrRGFnNEdaeW5qTjRxRnlkNTQ0NlNqTDFNbWRrWEl6UDVTMGtKR3NSNnlhMVE2VnUzTUxwL1U5VksxZ1FpLzh4dDFzRGh1dTZGbi91QWNnUENRU0U4T1R4YU9wWGdBRXNlQ2lNT1VNZlpRcXhrQXQxZlpHN0hkVXhJNXFTVVNET3VscVVCdlpsV09DZW5HNUVQWmJsb2lJOUtHVHhXY0xLbVMvMUU4RWhHQmg4ajJBd3B3TGM2TlpsUVB1cEZKZW50ZzhDVTFkVDByK1FYTG1FZ0NpQjBJRmp6RlpkeWZQQVNBcEEwaktvemR4bXN2UmxNdDA4cEhUU1hyL0dBcU1tOGRXdHY4OFQrR0VUQnNiOXNiekFCcit3bnZlUUFNdWVWUXE1K3FnREE0SHJPUkZpY2hLSWNTNjZTcXpKMVhVa1lDUmY5STBUM2dMd3BDUW1QYjB1Um92cTMvYTNlZWlhZlppWGI3eUc4VmRGNUpFNXNSbmkyL1hDbWxZT1RzQWRnZndsK1pEaVJtZDBkdTZJUi9sNXBUbUVnQndMdU91VHRZN05NNHJvV1RFUFlBaWJJNU91MFAxajE1ZHR2R2VBOThFWkpUSW9aakx3U0JsbFpySUdRelV2RHVlZVF5bW5PeGl5RlJIbXhBSWFsSVVDM0pFZzYxSDlWQlQvV2pnUU1RQmVzcEFUMEowTnF5Y2lhK1dQT0dGbi9CdEd2eGdaMlJPQUloVTR4NTFRQlVDTURUOG1OdC9aSUpqM0JJUTVwSlNIK1VGbkV1emN3a0E5U1lnbHJYSEVVMTBJQ2wxTW5wWGVWTTY2aUJISmo1emkxUmhVRDZpYmdleGU4eENsSDZvbUcxTVVmY2dFYTdqbTRCVXhnbkNNTTRacER3SE1IZ1lpSFk4Q1RSQnNqSFY4RVNKb1krQVhwRW8xYlAzQTY0WEd2WWlnSFJJTmxCUTQxd3JIeEhvWlVmRktxMEIwZ2JybjVPYjFsVTU3d3Rrc0t1VHYrb1htbkllQkFEcUNzZDJ2d1pRVkZDWkp2SmpRZXF4Mk1DYkIyd3pTVFJBZzVuY3oxbVlYVDZYQUpBVHQ3WFBUMWdkd3k1M1JPbVVjYWNlUTl6dHE2QTBqYzQ1alp0bHNISjRrRElKeXdEaEJpQitZRDMwbWdqc3dSUkFWWjI2Z3hHbVlrUUZvVTJFb1VrS0JmdlFWWnI0UkJ6UWd6WkFGV2x0cld5Z3pPVXNEdk1xUklBcVY3dG9VRG83QkpIYmNPVTBFQ1RiUW1CSW5BVnJsdHVXRUdlMU03QkFUNWc2K0ppY0JVYi9FV2pKWVp4aEl1ZzRLVWVmTE02d1NZdWVTd0RBR2pvZ0Q4bzRtSDQ3U21yNVBSbW9MRGsrQ3BFaUtkRlJpbk5MU3p6ektBZEExc2x5OGxoWUxSd2VRQ1VHdWhQQ0MyeDhRU2U1RkNzclFOVlhBTmYvN0FKcUtrSThXSVQzajFjSWx6Y0FNNi84TkI3L1BjcXpvclNUamRWV2d5MVlLckd2MjBJbTM0YW41UWRHLzl1bU1wRlRKeWEyRkVyYlBORnBWazVvY2JEejhhRnhGUGlvVkJtc21YQWx2dzRNam0wK094L2VFa3gvc2VxdlVKKy9wbElEcHBpVHkvR0hHckMvYVdpbWpmVnF6eVVBMko0MGpyWUZZeS9IVVJOMXZCb3FwM09RN1pUeUs2S2hKYzhkNVkzZ0ErVWN4NklEaFEwSXZnUW9BWURQL2YwREpySStYMmpCVFN0V0xnOThQT3VSMityRGdJNDBXSDN4MjZBbENvRUVUNTJnRjY2U3dYV2NsRElQckdzbFExT3Y5REFtVGpZeEtUM2hnV3lqaWdRR3RDU0hYT0ZvVGU5UUNSc282dkRpbzl6VXpFWENoL3lNTlRjTkNRTGNtVWNlZkNTQk0wdkZsSm0yTVUzNXVRUUFKcXdqR3hvVWJ4NW5CMEJWTGgyWUIra3d5ME40UllnNFNxWEpiRHFxSkkrSVpWNVpCSjJjNVdSQjZWdUlyMno1dFZGa2xDRVo5Z29Cem1vS1NIMk1NMjhWWWFDbGc2RE1nUFN1UjdudnFSUTh0Rmp0eURuNnlkQzNGTzJMZFdwQ1JwdmE1d0JNSzUzWDh0WCtiQ3ZlQnNaZXB3cE1MY3BYYWdsalNrclFtSUt1T0pXQlFSdG5tSlA2ekFnRlNlVytaRUtzK0hMOFpIL2dKOTgvRUkzZzZPMi9jbDVhazU5V1VZOWpWc2xCR1FjWEozTnZZaDVwTGdIQWR1bUV3L000emh1QkxFZGVvWU5JZzBGWWNFR0pjL0tQY1cyNWhhZUlxT1JiMFdBYUQ0NldIMXFXRXg3ejE0WkdnTWV3Y08yRFFMNVJaNWxBREhBVmRDSkl4YW9vQkJPZ3lNcTI3WHZxRlVUaWc2M25weDd0a2lPN3pST2ZlZFRkZjdac25jaDVUVHM1N2VaaWtIbmdDNzJLb2NYUXgrM29SRkR3elU1UkFoZk13Q2pvakx6QXhvRTBFTjhqc1AxRmtSM0p5NThCNTJmQi9MR2ZhSkF0UXdEVndXZHF3RVNkV0o1ajJnSlJZazVwTGdHQWtJdE5PZkN3cllVUGF5c2RrSjNBWUVlbUI3MkIvVkxjWnFrRFRCcmtwZUFzQ2NGbXhrQ05DY213UDBlWFBtbFFlM1NHamlaSmVROUM1ZGdCcnMzN3VqMEVIVVoyQUZ3R1VDY090djlNaTlpeXhnMHhsYlNVN0pwRHNsVjVXU2QrYldoTis5bDF2VFJoUTk4czJpRFhzUzU0WFhpK2JRZ2RQZzY5ZnRBSGRRa0FjUVNNUHNqTkhQWDJKUlJVcXJvS0FDWVFNUEU1SE5DVTh5bzN2dVRFK3h5M3RMM2pGNVA0SlNkK2xvMDNQTjhRekc4OGtOOFVqdmNpYk9JSER5QUZCam1kd01BcXp6c1NVaS9yV1BXVW4xQ0FnMVJnOUdDYlQ1RjZmcVRhL3BQTjREeklvRVRLNmxrKzBWeHRvV01kUTdKeEhta3VBUUJIdXdPd3FCanBqanFHaGE0bkdWd0sxQTVObUhaR01yTTh6bUUwcmhDU1BoUlFzU09wcWlzU2d5elRWRTU0eE1EMkRucHVMZDIyY0tZSjMrYklneGNjUjZiNEdGQ0RSTTdrajhua080TzZ3T1U5Z1d2TFM5MVp2UWp4NHZwUzk0QmVJWGEvWGlKeW4xNk5mRUc0czNyRE1KT2RpZTdKTGNGaTk0UmhBakJ4UlBLZzk0dEdKTnAwK0FxZDYyaFBDdEU4MFlweTZFcWltTEFSNVpScVF1UGEybVYxSHYzSHVNQXV4anB3SHByakFZc0FYd1NKbVB3RWd1djZTYlhMT2k1dDduVnY2R2VWWHRkeFJmQjEwUWdtN0IzNFpTVUNGM1l3a1hlMWxOTzJrNVZRUVhUYXhpNUkzbWNJNSs5WkZGMmh3YWQvODZRSTBDZWFpbURyS0JpOTVwSG1FZ0N3RGNQcW9US1RBYWNlSldVbnNIM2ozK3VmOHRKNyswUkJ5dFRDaVR2cGZOeEcydGZpZ2RPT3BOOUtqK1RaMGVDK3FZRTgwZHMvK0xHUUMvclpza2YwcXJESEw2eDJqNTliNlI0NnUrTEpmMFl2RDFsWHIvSlNWRloxOGcyVk9XS1ZaNldQZzhuaGlhL2M3ZWlVN1kxMVNoc3loOTdDWS81cDVXbXlVd2E1eDRkeVB2RWdHTlNKcnpJLzJMcXBKM1UydDNVb0tyQUxBTWZCenVDNnJpbXY4RnVMK28zRmw2L3ZkUy9wZU8zR1huZE51d2UrRUxRcW52WlNoQjBFN1pGNCs0OWNvQ1QvQ3NmT2piR0ZOOWhOb1RkbmN2alNqbEpkbUR0UExDWjE5WmZnd1NYQm5Zcy9VTUo4QW9BNktTYy9tbFJERDFSclB3Rm5TMHgwUzNxZXZJV2JhaWJwbEt0dnNzR1NIWjk1aSt0RlVMa3ZUWVBhK2dNNm5TbEVyTldDSkljT1J2L0FSMDQ1QnQ2ZzlxQUFQNG1QK1o0NnY5eTk5WUhWN3FtTGE5MGplbG5vUmUzZnoycFdNK25QNjAyb0YzU2MxNCtnS2hZNENMRGFzd3BpQmdmdGNiQ3Frbk1mWmxPSGFUcGxIemtIRDY3UURSU2NNcWNEN1UrR29uemFnQStjbEZjUXVKUXpYMUxnZ281dmVNbVRmdDZ4VHJ5c1oxc0lCR1h5WDVNeDF6WW4yZ1VzNjlKQkFVSDRxekx1VlFXQkY2OHBGMDd4UVR1TzNXNWJrV1ZYQVpXeDRZYmtXOThES0FwNFlTazk1WnVxOW9ONGl0YlZEbFVucFpnb0hmT01vNVU4TndvY21ObWU1eElBTUlHSTNvK21LR2RuSHNYRWREYU9ZaUE3SWZzQVlhMHZEZXVVT1hWYjJHVWpnSTZmMEsyS1VjSHJpUkFNSENiTklDL05vRDUxeG1iZ3Q4Zk82dWZDM25WT3EvMUtkMTdMKzBVdDV3K2VXKzRlMEN1UTd0ZlBINjFyaTg5S1RuMG1OY2QxY2lHOHhkWnNRUTRycXlkMTVsUWdrZXNnYy91Smh6WktZLzFHNUFPTFk1SGpzaXVtY09XZVpDVUg5bEVDbWk5VGhGdFdvT0M0b0tDbkgzSzI3dGhKVUdEeVg5Rng2ZVpFdXdBRmg2MnV1NndBY1hWcnFmdkk2OHZkczY5dkM4ZHVha2t5WWc4UU9uR08xWjZjSUo3bHVNR0tEOVY0aytDSXVnM3lpQ0NCK282RkhMRk4yT2NTQU9pVXVwb1UrQmk2eHVCVVJiWkhUUDdCUkp2U0ExTlF0MnoycVB5M0ZIWUN4QndUOStsNi9yMVBiSFJ2MW0rY1A2d2djRWI3ZW1oTWRGWncvYkN3WG9zdW4ranc5bGxsbG5pdjBESUtQM25JNnVSY1pQSThBQkl2OUtoZ3pGeE85ajhuQTVGbEVaTkloZVRWTzRPQzcwOG9FUGhlaG9MRWlrYTFOa2pkZldmMVduWFY0UkxoOGczdEFoUVZYNzh4Nlg3ZnV6YTYzL2lXdGU0bm50L3FmdXpqVzNyak1yKzhGSmRXUkJybXR5ZWsvWUpuV1AxeFMxNEdvRVY0TEdOQjZpWENzVklkeXhJRVBLODBsd0F3K0M1QXNleW85d0RDM1ZHWnp2QktTaEZuY1lnaFFkQ2s5R1BOQytDSlVSaVNsc3hScmxnSmFWdTIyT1lFMzVET0t0SFVqaURWc0FDMnRWb1l3VmszcTZEci9ick8vNXdIVnowSWI4ajR5emMxNGJtMlZRVHc1OXZDTVRRWnRIbDRjcUFkZ2xJWURZeFRhYkQ2WkV3ZmxWTy9FZnBZeFZ1cGhjQzB3WERUUXVxQXpudjRRRFIyTzNRVkJ3SEJRVUdqTzNjSjU4OHBJT2pnbnNIckNnUVA2ZGVZMzNMZmV2ZWIzN3JlL2ZRTFc5MFBmMlJUdXdKK2xsMEJSTUdFTWVhSmlKSldsQk45RzNjSElKcWtCazBXTlZQcWwrVkQ1UkpTSno0Q1VHQU9hUzRCQUZ0c0U1MmtBMFB0dkdNWWFGbFpIM2twQXlDUGdtdUxPY0FQeWxOTUNDeWRYSkV0VUZ1c3JmUURRUFV5WUpRQkFyYzdGaVlWUEVDTkRIVUwycko2T1VVMGRZVmtkWC94bXI0TnFLVnNWOWV2RTIycCtJaHVXZnYrRlMxNzVId001Z25UQ0tHWnRMZEtCRGxPVTNDSmF2VWJWK3VkdjQ4U2lOU2xGWFlBSytoc0s2c041QXRaOFVYR3dONUNwS2xkK1l2QXNLM3RFVHNrYmlCTU5OS1hDQWc2TGlnUVhOUnhYY1NYTG5lNmxGcnRmdlhqcTkxUGZHS3IrNmNmMnV3K2Zqa3VEZGhST0RISjFZbmxZazU2UkdPMGxaY0kzakdvREdXc3AyWGM1dVF4QWsvNjZqYjhKMFdlU3dCZ0VIb2doc2NNYzFsd0hFZWxmOWhCMUNnTmNpVE1mRHA1d3AyVXQ5dzdsanhGSWdva2JhVE1GTzdEb2hqazI3cXI5Y1pMMStJdXZwYW9GUzFyeXhxZE1lazFCR1ZrM0szT29kbW9jdGlHcGxWSmMyNHI0d0RHTVpyT3VFM0NYdmZybUM5bGlWNmxGQngxTWdIbTlsMExlWXcxQ2R6UnJtbExsd0dibXRUWENRYjZaZEFWSFU4ODFIVVAzNmNBKzdvdUc5Wlh1L2MrdXRMOTBFZTBJL2p3cHA4LzRCNEJFUndmdTUxQld5cTRyTjJZZFFsaXc1SnEzVGEzem1ramVjSzNyWGxuREhNSkFMbHF0emExOEZGTXdMblRvbVhGTmNKYVA3bzluY1k1N0lscnFob2M0aWtaNHo0SHlvNE9yTTRGNFV3RHhqd01IdjB4TmNkMXJITUtHVFhlb3FtNU91Rm53cGRqY0NOUkVkWFBBakF3TFQrYUQ1bHQ3U0k0bEt3NkdydHZleEM4eVRwU3FTa2V4REdsM2FaVytxK2lXb2NrVWppa3VBV0xHOHJFdnA0V2xjWiszRmVXQ0g0NGhzZDZkZk0vZ29FQ3dxWWl4SVJBb0k4YUhuOVlsMW9YOVhIcEs1UHVkNit0ZGU5NVpLWDdlejkzbzN2MnRWMC9RSlZCeGpzOE5SQmVSNVA0Q0RHMFZMK0kwZnFsUFlmTnMxTG1oNjEzaDN4ekNRQjR4UGNCRkFseU4wQW5EYnYyMXBZTWVGV1hvR0s1T0F6NVdTWXZLZHVpbUdOOW5MYzBWN01nUXdlZWtpWHp5aWdFZXVaQ1p4aWNBTnIxSUZJT2ZUeElxNHdSZ0F4V0IxWHpoUGNUY01Vd0xnV2dJTGM5d2hralFWbWtTazJEUXNWUy93Qkt6ek1WT2thdFVSWHNUZjhGTUdTd0QybTdNRlgrd2pZdWo5VmtWKyt3ZFFJWUFBQkFBRWxFUVZUN0ErTGYxbVhDbGo0ZFlHY3cwU2NKSzNxMjRzbkhkWS9nQ3BjS1M5MS84cmxudTMvNDcyNTIvL0tYTitQQkluVUVmempiZllnc0ZYbVJTS0dvWCtrUHRPalQwSUllUDRhbTNTc2I4NXgwZVM0QmdHc3Bic1p3ZDVaalRlR1lEMTZHYmpxOGFjUmZUeWdOVStZQWQ3NTV1TVdPTDk0bXl3UEpSdXMwemxzYThMNUVRelhkUW1NUEF0WjZKUVlCbVFZQ2Y3RURLRzBMMzBwSjZTME9FWU1rZWZ3d2lEK3JsclQ2cUsrdmc5UVd0cXVDanhwZEJoTDJGN0xoL1JSaGVtSVBUV1U4VVNUNnU3MCtBZ3ljWmJvWkJEbUNGbktaalgxOUNhTFFaNDFGUGQ3UFNVaWVIeWpTc3dJM3RDdFlVaEE0cHdjUG5ucENZL1dscnZ2cWQ2MTNENTlaNnY3eHMvdzJJMDlkU3JUN05YSVZhb0NtdjBYT3BxT2hRNTZSdVZvdVM4ajN1SDZaUTVwTEFOaVFRL2ZPNithTEl1MTFkY3hOZWZIR2RueVVkU3diMVdrZUkrUTZIQUFrbHlBelRpS0xLYkFseTJMTnN3NzBNbTRTTmRQOE1PMmxQdjVsSUgxVXRhZFhYL2twTmhtdDRhZ1Jxd0NnQUtqeDR3T0ZnWSthMGpkRHAxVHNVY1hkQVQrR05NdkRGQlZzWDRQMzUvTWxhTmgwR0JxNmxabmlFMWc0OG9FcG5oL1kwdXJQemNObEJZSTNhVGZ3MGllNzdrdWVXZTBlT0xmYS9jQXZoMjhqQ0FSc3YwdUdtMVFiTkZPYnFvQ1F0MGtFOFZVV1NPMUVOalJYZUFweUhta3VBWUN0MWk1YkxSMmJjdTZXamsxZGpCM0JQL1pGQ2ZxRzNiODZaUUJnSW5oeUZLKzVjMzBxWXdGZWFGUHlVc1YwNUkzVDdmUTAzWElGK1Q5MkF1anJ4VW1uL0tMSlFVWm5zK08yc3V3ZFFOeHBrbnJpWnZWSFdSMjA0NEhJOGlOYWZyVTEycElFMGNzSklGSUtOcTJuZ2k2b3dqZ3N4ZkFlNHdycnRBeFdsQnVrVzlmSG5ud0V0MVpyUk5SeElKeDNXQmFuVXluYkwxU3NkY1JWbWl4WnRiSEVEVGZEWTlNRTA1dmNIOUNZbmVqZXdFTVBoSnpQVjBWMkN0Ly83STQvS3ZRTldQZ2h5ejc3WHdYa0c3YkU0YWx0YTBpSnk3enNOK1lISC9IT0k4MGxBRnpWOW1wYnEvT2xTenIwc2N2cmwzZTBBeURLSHkzMS9FeDJuTzJUSCs5YzFZVFkyVkhZOWlZczVOSVpISmx5Y285ejAwTlVzcFo4S3JMeVdKL1M2WWxrb09XejVJUTRlTkFob01KbG5oZzhoWmpWRDh6OVRUcXZDaUVOUnV6bmozc0Uxa1YwMnFuUElzQmEwNkJRSjBRbEZ5QzVNcGY0bWdKc0VKVnlHeUFkUG9YTmVpZmVoWDVoeUphY2EvYVlyQk1YVlU2ZVVlSlBJVUpYV0F5ZTlFWjRwRVFWbjZ1RU9rQ3lMVzc2OC9neGp4UHo3VVFlcnJydmduS1ZmNzEyQk0vcm1lSi85dXhOM1JqTVQySHdkMytra3FqVTZ4SUtaaHRXWVhUaUc0MnIyZ0tzYWZ1L3JvVnk3NDBSdzR5S2N3a0FmanBOMXJjT3NJT09ZUlQxR0UvTUJSWkIzd2xIVGl1OEZPR3JZdys0OEkxejBKbUMzeHlKR29zMlBycFVZTU5LaDFQc2cwQzBYOGFnQ0QxN3JWOWJPUmhneTgvWFozbnpyN2YvS3BQN0ZWYkN4d3R4TlFoUkhzRmtkZlExQ3JaTjdFTUhZaCs2clROcmVOUjQrRWhuQTRXb3pNWHFWSlVoQlZJK0taUGQxWFJTR1ZJdk91N0pWRk1rcDZjRkkveDhjWXBWZUVzUERmRTQ5WDM2aEdCTDVkLzF6blU5T2JqZC9lekxPdzRDeUtHK04xL0tDVk51QWJraWdFZFZlSkI3dXdRUEFYMWVhUzRCQUVlMEJ4M0c1RDJPblV4OEJXWFhyMDRxM3FXTk5sRTBxdUNUbmpuRVFtcUFBUmppQ2hQNjlqcHpVeTVLMmZuSXJaMk5iQm5LY0NCbE8zMzlnaXdJNklESko5QXArWGt0T08vL2h5T0dlT1Jjais3cDdtQzhFekNEZ0dxSlArc1dVVk96Y1h0VG1TcFMzRWVyVUd0T0JZci9wdElLMHRPemJiUFVjYkNEcHhnWjIrZTRVV3BVMlIxQVR6OE1RMEhCeWsvN1BGWHFjRW5BUTBXYnVuZUY2eStXbmNCWGZ2YVo3cS8rNkJWL2wyQlpXd1lrdFNyU29sL1ZwcHdidC81a3dMaGkxTFJNQXBnWHlNcnhOSTN0cEhGekNRQk1XaVlIUjNvSzhDZ3BxNUxuRzFUcEZFZC80VEp2NWJzTm4wcjdOTmlVWFN4bFlDY3JtWVZodnA5VmsxSXNjVzBYVTUzcWJSQ2dSeE1YOG5YT0VRT3ROQUhxb0VSOWRsRTdNaEorRHhEQkVSRFVMbmdoOFlGWGZ0c2dpVVhvVUhhMkdIcjFiU1lYZE9DZXIrYzVZY2g2VHBPWnVvZ21vNkxFV1VkUnl6aE9LanZEZUpMTHdvekxoWmpTUXBDbHFJcisybUNFakNENTY5UnMvLzFSb2E0Tnp1cjdCVS91TG5WZitta2IzWGQvOEhvSnZCSU9QMHUzYktJdUY3aStOSk1zTk9PZVJyWUJLMGViR0QySk4yMU9VV0F1QVlEUE44dmlWUU1CRDFUZ21LT2tjRkNwRmJNdXFqT1Fpa2NITWxYSWhjQjR5dFJvOGxJc2hCQlh6MmJPVWhUYVpta1NMTTNueXptTlV6a0hVSEEweWpVZ2trc1IwTExhc3BFRjc1dUFqallTVHFORVZjcksvVEVndVNwNzNLY1ErSlFvRnJDVXdCNlVzbkxtQi9HQjc2WGVpdXR3dEFQYWs4TXJKU2UxTU1iUmZDRTJKS0ZFS0IyRlQxb3RtZXlScU5pWGFpd3FIZGY2a1krWWVSeDdTemNIbDNXWG5zZUt2L0RwdGU3LytkaG05K0hYZC9TeGRwbXRYcEg0aUR1N2huQ2pIWUtFaGI2aExCcWtGcUZMTEdwUU9aQVduRW1kWFQ2WEFJQzFPTGc2dWN6SzR4ckpkZzhuMDBrT0xGUDhnNE45Y0FKV1RudXBRK2JJS0N6bUd4WUNOZUFvekttN3QzakkxUkhYNEVrcHRVVHdtRktPMmRZQjNoUk43c28xMjZjQzEvdDhMTVNEUDdCeVprZ1oxclhVUkVwNDhpUGZCakZCUkIwMDBqWjRTSmdHU21yQVJKMXdIaTFVbFN1UXpRaFJsQmpZSnB6RGdjaXVranhaMytXQ1RGSDJUdmdTdGdFMTZ5RXQvcjJTTTFHNEI2RC9ibDFCZ1BzRFgvS085ZTViZi9LcW45SGdVaXdscFV3K3BzMVdJa1NvcEk2cVRWQ2xKSEFjbnZ3Q2dqK3BzOHZuRWdCd01CTXVEeHpGT0ozbWlGdWJHbDNGNUVkV3JRODZqMFpBb3BLUHNsTUZvbHFpYTNTb2lGc0RqWmpCSUhKN0VMUGhSb3pSQjlCZ2EyWFdha0p5czVQSFdQTW1JTG9hNXZxZklDRG1hSzVNZmtvcERBSndNRlN4RlVpK2lyZ1ZjQ1RtV3dscWFGTVVhNXNST2NKZFU2VkUwNmhaeHBNTGdhazNSR3VWd0VjeHBtWGZCTFJTU21SQnhTVlZQQ3VnMXdaMDI3cEQzeWtBOE5LU2R6KzIyajN6Z040dDhLcStQS1NaeEUzYVByRkk2VEpORTU2eG1ndEZ2WGN4Nm95Y0R6VHJJTkFMbWlrMGx3REFLbzBUT0p5VXQ5MXhGQXVaL1BTVjY2ZThLUUlndWMxQ002dE9XYVhxQXIzQkYvYWVzU0lDOEdvZVZZeklIUVQ0YkNPTmEyMkVWblVlRWJ3aEt2U3FYL0lyQjhlZDZMd0ptTXF4dm5BM2xKdUF0QjlIdE9TZGdPbzV0VUlUZDFKNXlqNkt2TmIrZ1lJSENLbHRsTlV6SFNsOGlBcjdzd095ai9JeUFLa0VrQ3BHNVI1dUtUaXhVSkR0VGxWd0tRTDVQZ0VQQyswb0NQQkVLNjllKzRLbjE3dGYrT1JWdldGWXZjRkE5OUtOVmdUbENGdmNvSTB2YkNFVFhUaG9CeWlTUzdTcFloV1J4Qm5tY3drQStZd3pSc2JFay9tREdYaDdDNm5iSm9JdDJ6SDNsd1VITmNVbUt1dFZmQkxFYmxwaDhQQkk1dHJRRUVIbnBCeFlQRDdJQ3o3R0NaS2lZeDBjVEF4ZTZyVEpza1EzTjAxRnRkQ3JNSUtHcjM4T29QQ0JKSElvTU1RUGc4WndpeW5DaXBpQ2k2RGpaRFIraUhSSXRsN1NxRUl4dTZjbnRJOFFrNm82cUpvWUFzTjJWYVpvMnFnaHk0MnBsMDNBSFAxQVkrSjNGU3JqUXhVRGRCQmdZbkw0Y2t3N0FHNjh2dWZSMWU1QlBTcDhTUzhtbmVqdWRINGFFWjBaN2Z1R0lBMDJUUVFsVUpDaTNTZzdBQmc1KzlOY0FnQ0JNWGNCTnBTeWJNTWZSMDNVb1dOY3YzZ3g1SXlraWVhT0ZUOXNGUzUxUUNhWVFDMmpWRllBVmtLNjZhVVpsNFZ3cmxPV0FkQ1B2R1NsSmtHdkNGSUdzU3dzaG5NWEFBbGFXeVpZZWdkQTFFTUl4bWNTenZjQXlQa1QyVHFNaFNUL3NYTUV6eVlOSmVQSmtvYUUzcTZHN2tsdjUwTldoYXd1QnlhWTdKRTcxRmRVTkNIT3RyOHREMm55YWVrazM4Z1R6S3ZYK0J4NlI3T1V5NEQ3ejB5NnozaDRwZnV4ai9LRklkWFFRSjlNK1NCL1Z4MnpMSjNjSHMwVkRUSlBoUkJQay9NS0FuTUpBQmhwL3dwSVB6T1dNZlk0S2VWUlArUUtFbUI4RVpod08xZXliWExxRXBSSTdwWUNSMVlLcHBtbGRoaUEyNDJLUFZGSTQ2bXF6bVlsWUJJekljbGRqNXhrbmdJVzJLUUNrN1dKY3Q0RDhBVEhnSG93MEtNOVpNUVE2eHNDS21KYmtiZUZiMVVIMnV5U2JKa3F2TWYyME5CZTQ0dmkrT0VnUGJPRnBQZWNSYklKT21rbTVyMEVoeFA1bkp3KzRQa0FQZzFnc3I1YnU0QWYrK1dibXZ6eU5VR0FxbTVmUlAzemNCSUE5d0U4c1UzSHlNQURJVk5rMCtIaGs1MTVwTGtFQUQ3RHp2RnFvNm9Eam1kaU9GaDE4VjlKT0s4dHUxam96blJxYyt0VDZvQjNmY3JpcXZKZE1qSk9Zb0xQY3BUbjVEYXVDRWs1THVya0lPRGF3WURzMnBoZ0JsQ1NNMkJRaG8xa1BWWHcwNVNLV0JwM2xwbDRCbDE4REtqQktWbDUzVW9qVmJZbHplYVVlbzZsTzFDTmtTbzdHSTd3NllJUmVsUlVTL3IzUkN3VmFqMDVJMjAxSGFYd3hVZ0NSZXNyZm5MRGhTZUNRbyt4UElvQ0NBSXU5OGh1ajQ3Z2FVRTE4dGI3VjdwemVqRXJQMnJpajdjdEgwMVVUeks0ODgrQ2h6Z1dwQ2tiQkdGRFgzUjJBREJtOXFlNUJBRDVvdzVrWU5KQkF5U28wOC9wd0t4UDJYSUFpdHlzbVNnY25yUnNPM1B3TVJSQ1AxaHowSXpFUVlyT05DUllqUEM0ZzhtcGlMeVNRNGdoVUhnSzNuekljT1hJS0pLeWF0SUNLeDd4K2tsQTZsRElyUXNNR2xuc05xanJvOGl0c3VDNTA0VE0yNlloMDdEVVZCNFEwSExvQXlNQ2JiQTloVTBTa0RMa3pNb3FYUGdXdnl1WnA2ZEhsZXh0R0dLdkJGL1N3TnFMN3RUU2V3aWpIZm5kOGt1Ylh1MFpYS0kvb0hzQWorZ3R6Ui9WTXdGK0ZvaEFRTCtJbCs1aVFoTW8rT0ZSZ2dIZFo3SENrNEJKTkF0OFVJQXcwd21mNWhNQXBEUkc0d3g3V3dBLzdwR0czODRtcW1XeTR3ckM4cEtRZWRKVWhsN3JKa3hla1VNWTdwYVdJc2s5WElyQ1pQQjVpS2lRWlFBNk1SRGlJUWhvY2hJVUtoNWg2RUFsSmVNTkZKbkNJMko4NEQ4UG5KS0hjU293K1RVUTQzTm82dUZYdEEwYW9sTWZ3M2txN1djUjlvUFRMWWtIVjdzdDVRQzVBM1E2S3N4b1JUSXA4K2s2OEswdm85WkFVRytpMFBaUEVSWmM3dUh3bkR0SFdDWTdSQW1MblpYS0NLYnp4Y05sQUxPYjd3MDhlV0c1Ky9Dck8vbzBJUHp2eHVDelJJdUlTd0JRSk1ueDRsUzA0bnNkaU01alRsY0FjM290dUN6TlR3S3czVzVKUjRDNFRVcW50R3oxVXdUazVGRkErQkxsUHFCYzJuTXVPSW9CdERCMSt4U1U3SXpvc09na2VIeGpLRVNVZ1NGTlVSWWNvSEo0Nk56QUl5OWhKQ2dsUDJEQ1JhYnBPcUd6TDZPa2dIVW9mR21raDI3NUtORGlTek5wcFpWSllabkRjOHQwVzRaYjFqNDVZaGlETDYwUnRwZGtFT2NJQ0pjVVlxQ1N6Ym5yRm94aG5ZYTRDSjFaS1NhOFNzaUdVU2Y2SjRLcjZpb2E4M05qRHJ6Q1AzR2hmQXdvZmVodVA2UGhTUjJoUmlnTGN5c0lrc3pBOVhwUVpxeHhlQ3dvbjNXYXp3NEFaM1BJR3ZkWFkveFJEY1JKS1l1T3lVbHBPVFJRVXJaRlo5QXdkVWpKa21YakVtbU9saXM2Q2JKWmRMSTRuVklQZ0I0V1E1bnNNV2lpb2xHRjVDYVFReVVsNjFGa1dNK0NOdzE2NFdIMTV6TEFDSXgybzhvRjUxM25ySnE1cUU2eHRtVXBjdVMyYVZ3SDJwaW41WjhuWFBZejBXVHhMNFdxc3hRMWJLY0hXNnlud0RFQkErdGl0UXY3V0s5akxCUnBLVlRJZWo5Rk9GOW1JVDhhY2gyQ2NySS9xbDl0OHZZZmx1eFVHbEFxOHozdUExaFdqek1kbnNLYi9Mbm9VSjVsbWtzQThBMHNHV2kvWUtpTzF1RERHSmlPcHJySFB3Q3B5SXBPREZSQnU2TVRYd05CSWJwNmtlRWhrdko2RVJWS1V1bjdhQk9xRUNuZkV4cEdtSlJuZXpGQ0hQY0xLTGpPZnJFWHd5d242NFlJblFOQWJGd0MwR0Jwa3dhMEF2RlpkTjVnb25vZCtLS25iTVRNTGFIc1lSTEtIaU81R20wVTR3WmloSGZaZzJ1b2lGL21XZHFEa3YzV2M1VkFVVHF1VG40OEtxSHhZSlZnS3Fqc0ZSNy9hekFpNno3OUtDdmZHWWhCRncyWlI1VnpyQ09hdmxJMTU4cXNiK3BBbVNEaUhjQ2NJc0JjQWdBRzJ1RUMwdkhob3NPZm1mVHBLSnhJWWxKa3dubmpSRnZ1VHhHeTNab2pqVXAwWUszWVE2QWdtNzhSVHBrQmtVR29qTU9lcnpEa1FFRU9xREt1TEhRZ3R6U0puSlJ0L2xJSGNreitZcThReU9iTFFZd2lMaThBa2VsRE1BQXc0TnhTTm5iYmhndGpkc3cwQlpGeFFLb2tuRVJpZ2dYVW53K1FuWUUrVlhYdUUzdU1USUt5TXlUWkU5OG90Y0kvenVlL0hEa0d6K2wzR2ZscGRUNEpnSmozZnd5cllzWUdaR1RBVGpYUm40TkVEdStjNXYrYzdnRTBEc05JbkplT28zellsRTR5djJTUTNCL0F0QkVaNk9pZ0xCZGE4Z1JkMHFpZ0U5dkFVZ0F4VEcyajhMZXNDU3RQTm91MDRJSVJJc1pUQVpBdUIrUTFaZzRDcXVTNFF3WkhUU3JFeDREQzBGWXlsTHg5SjJCZHFaQlFoVmRKQWFTeUkvU3cwVEZ4WEtieEtla0E5SDdPV3pCVzBraFJiQjhMd3BjdHJpMFVPVldjK0JoN3BNUkZ1YXorS2NrT1JwQzRDREFDdmEwbnB5d0s0NWMrTVl1eStQbjFlSk1RYm05RndNU3V6emN0VmJ2ZTVXOTBRUThtUGJKcDcxTXFBR0JjSHVsNUREMU9zb01ranh1d0thdUNPSlNqWkc0eml0SHg2RUdaVlgra0FMemhmdkpNSUUxd3AyVEhCcXNFQUNBbldGeUp6Z3U4T3QwVnN0endWUjVWVjkyUTEvT2wzc2JyeERqemdCT0J5VTQ1MjJVTEdsOEdpb0dKYU1zRWFCVnpGU1BIYUJpZGFLOXcxUEtCekZGbHhtZDd3RzJFT2MxSzNTcGF0QWllb1VwVmdvQ0V2VFV2Yk9EcTVZRm5MUWdrOVVHYW9Kb0JPK0RvRDhJRzM4TkFNS3MvbHdBZVJ4WnF3VWp4MklHQWpHZ3ZKampOVUxiZXlpa0FaeUFBTmVzMGwwc0FJcVVIdFF4TUI2V3ZEMnRnZFpJcU1BR1FBeTdsMlpPTk1CenJOZ3ZPZk1tdmlsRkdvV0FvV1MxWElCdXVET0xQaHAzcmxEeUlnczk0WlRrVFZYWjdOcHBDendPdjJSdGM2ZzNLaHhEY0FQU0xVSlF6Z0NNS3FLNzNrMHgraHByS0pVcEZMc1FnSWExTjFDQ0JiMkVqVC9aVW1qNUlBemRtUnpUTnBrb1ZGYldOOWlTdGhGNzlSQTNhaXdKdUsralMvMWxPZWpUb2FVb2tGenI3a0tKaCtZbHVkRUNtTGNGTVdENE5XR0dDRTVGSmJveEt3RFZ6a1poQm91c0syVHpnS1Bzb1BPQm1tZVlTQUdTbkhZWlAwaG5IdGErZC9NZ2lrWTNsbGFhQ1JRV1hPWkVvSit3eXNieE5NWm1NYXdkYVJxMWtEb2Ftb3JSQUVmQTFWMEV5UEo2eW5ta3FsRUZtQVpVL3F1ZjRjUzVXZ2lqZkIwZ1JqRUlDd1JJM29taE85Zk1Ba1FQWHNnODh3YWgvQ3gzNzRNQktzeU5ZajBiOHVGeEl1S3A2SWdxMVdGaGNicXNYRTZ2LzJ2N3YrWUNLUUdjcXk2bUE5aWV3Q3BRZEFMVHFaekF3VHphT2NERmFXaEZac3NiWC9hUEJiVjFnQjVTVU5lTjhQZ0ZBMWpzd2ttTVF1WUdqV1ZkaXF5dmhlRVI0OEFJVWVTVUx3U3BVRW5BaHRqa09KeVd1Q2dwMGY0WXhnMEhNbUo2R1hOTUxZRGh4NURSZWdvQ05GMFBMZzZRcVF5RHNCV1dTQ3J3VWRKbFJWK3I1N2pNOEdpMThUWmlQQWlGUnVXNVhMVVU0UnUxQmlZWk9PdlhPUEpSa1ZMaUZoaUhEREZPNGJxTi9yd29CTTBTUkdkU3BvSG9OM0xkcUIyWW12SFAwQXdiRmlRQ2dDUzYvYy9uZ0tpbUlYQWZWV09Hejd3WFpSb1lRL09Ud2NDa3IwTHM3OHZaUWNlWnBMZ0dndlFTd2MyUldPNW1QWXFVZGhHT1ZjT0FnVVU2YVFPWUw3UmlsVS9LVEU1OWpQa0hJYWdKS29wMUk3QWJFclVwNURWZWY3aE1EQTZLTUNjYUxPaDBaZlcxa2dJbDN3eUNwVDZ5NVlCSkg1Q2Nod2dld0RteGc5ZmNMUVJoMFlLbGtva3BNZnVHVm9aQXJXMm9LdGs2dFZpSWtUVldja0RWSSt4QnVEcGFzdXA5aklPQmtDMjRNZjQzVGZvejlrMnlxbDNxU0YxZjB1Q1I2Rmt1V3l6clZ5UzlQUnRHRzB4cGxKaTZzMldjQys0WmNLR1dZU0tsbWtZVU1Cd0dSWU9GSUZycHdYbWt1QVFDbk05azhxSXUxOXZjUnJCejdwSFpra1ljSEFVbEdsVUxMWjVSTzFnTStZT1hJYm04TXFWZzYxaldnSmhNa3c5R0Jxa2t2UWkrc1RGYS9xTU5vbmZnWGpldSthbk5VenJtS1JNTU9TT0pEVk9ybVhBZ0hBQWszelJVaUVQanVzckFFSjdjaDJSRlN4Q2xaNVJRZ1JTZWtOTWw4S28vUURjZXh3TU9MUzg1V2tZU0hUZS9IWnQyZUx6SE9kYXBsbkttVVpZQStwRWl5T3dqdkFjTXBxRFJJSGtjQUhzK2EvWWlFaFRLN05BdFhadG13QXNOUVNNaHduVUlycEdoT1BQQ0RHd1FXbFdlVjVoSUF4anVBTlBJNFJ0bGg2VXpsVERodzR5UlNUS0xpNFN4blIwUWVna3hEQUlDVGRnZktVMjdkdG9GcjVQa3F6NGdCMHUxYURJYTZzdW9aTE9YU2hsdUFRRXNsczE2d0NjdEJ5c0hGQUl1L29MSEY1T1lUZzhVN0VTczhITFM5RkJNdHI3QVpkaU5KeWdhekxJNUVCZk1SemxNclRrVTJRbHQ2Q3ljTGlvRnZGRXpTS1BjdW9JaElTVEgvbzI3aXFCYXd6ZzdtUlRwc09ySjdYQlJMdlFRUTBiVFM3cmI2WnF2NXRTdTNnbUNBekNtV1pzak40MVBoS2V6dVQ4SHpTSE1KQURqZXdSSGppMVcrUGpxaWhkVGw4T1FzZ3V6UUpCUTZZczJuVTBaU2RJZ0JRRTRoZU9DRm9HSkpQYzF6RzZ4UUtTZTVhc2U2cG5veG1TV0xsYmkzRDhuUVE4NGdSMWpmTUNVbnF4ZHFtRXg1dkFPZ1dudXdBL0MxUDAxQlVBcVZhSGhLYXREQjN5UHNuMUlGTE9MTW8wSVJEVVovZmFtd0J5OTE5cE5jSi9tT24vZDYza3FHVi9haVE2b3l5S1ZnZlNLekNvSWo3Y0xZMkZtRjdjQkJoZDJYaEw3bWlyN2UzTjZMbnhNekVRWWRxTnJtMEpBaG5NY0lSY0U1NFdIUEk3L2NSWlZacHJrRUFFOSt0cTg0UXdjNWsvZ29xVlIxRlp5R281Q2JpWEltOCtxVU9YamFwSnp0SjQ2Y1pOMkNJeEFGbDNLdHJ3cE1iT1FZenltRlVxc0dnZExCeVdqaFRGRGFFZElBRlpxVXN1QVIydm9LQU1aT1hrTzFwQXRQQnN1MEkzY0FERjlHbFlPQjZubkZLcnVRcHJVUWZHdkVnT29DeXRUa0tWWkxMVEJnYXdsakdFYnNEaWVXYzJHcXRGSldadFp5N3JFOU5HaFhoUXpyeHJzODRvMU9MOGlRYnQvUmh2amRuYzZSWU05Nnd1SlRYdlBGeDdMVTRyaTJ1YWVmRThNblJRNVNvMXFmZ3hMT2NVTTVRWUJFWmxtTnZFYUtlV1oxbWtzQXdBOTFRRk1vNVlBT2Z4NnN3cEpqVVJhT3dPWklFSjdpeWVTMUhqUXBJSENaZzFReU1rQ2ZpVFpLOFNTWE9rMXdEZ3dUT05FR2JBalBuaE9vMzQrSUNGL29KbU1Fdk1ZVmdEYktKTFYrRkJ1UjRQcWJnTkNHZi9WSEtOeDJtZncwa2JwWXZoQk9pZXhWVGNxaDhyNzZvZGh0aURpekg3SWNGa0pveExSd2d4NkFwVDhHdUZFQmY3V0o0alJjeTJORlNtQzJpV3FuUGxPaHpuS3pJc0FTN2xRQWtBREtUTjVMTjNiMTJ2QTl2UjI0OEFxWC9yYzh5dWpoVTlEU0ZQUnJFeXlEc2Q0U1R4aWVUd0RRck1tQjdRNHZ6amlPTGVsTWYzd2lPV1BucFV6d3RPbVZHNzdDV1BVb2RQTkRIMGdxekNKbUp5SEFuVjl3TVJEVTJWSUluWHdBcTJyRnFYRmdFdHRscjhxT0lMUVdhNFhwK0llNndWcDlsVnJFRG9EUC9IV29Kb09Ed1ljb1lIQnhBNUQyUWk0VzhlOVVjWlFTR2FTcVlDbU9zOVNwNGtmVksvNDJRUHEvZGtUeUkwK043Qk5iSzZDQnFHbkRQc1lRTkVDWFF1TGN0eU5jMUJwWlY0cDViOGRGbmVnakgraGttRlBvVFgrem9yOThaY2RCZXJWMEpHU1N4MDloenpKOTVZZTZsS2VPTmxFTTlLZmJnbmtPYVM0QmdBR003OXlueW5GT25WaEhNSko2SkNaL09zeDlvcE5sZzFmQ3FmVUFLR1dRYk1HTkFqYWl6NFB6OW1mM3NlcXpGWXhyL2RTc3Fac284WG5PcTh4bnl2bWUrQnhrS0o3UGlZZG54STlzNnVuQUxuSmZBa2hRVG5pK2JFSkE4THZuNWRFNlNOMXVCS3VVaDRYUSszS2paM2pEZlFKV1RWWFlVTnJSVmprdWpIQ2xra1VoRWRrdlBiWkF5WjE1UVEvMEtnV3o5SHdWS2tBdDF6WVNVK3A3VURhQldlVjhvaklucGYwb2RxN1JnYU0vOUt2QmIrdzBmb3NHUXB5WXNobWhxVU9STVpHWEVKU0ZyZ200TFZmQ0RJQzVCQUEvdENJckdjd1l5K2s0QmxJWHh5R0gralVYbkRla0xGOWwycWp0RlY3alJuRGlxQUpjVGdCT29LeXJHd3hxcTdzbnR5b3lFTXhaK0N3TDJHV2RpckxtVHg3WEthY0dsM3FuTFFRdEFzQ3lJaCs0aW1jUXVzd0VMMEVBcWtkcHpXb3J2aDhRMWxTY0FZU1UxSUNCeWNhU0lmUFVWL200anF0TXJSZkkvZlNEOE5uWTdmTDlqUTB3cFREQU5TTHJqN2pDd0tRdkZqR0JjV1hreGNmVUU1NmY4L2FOT3NGY25qM24xNEdWNE1FSzBXN3BFRXU5a3BDbi85aTFLVGNOUklFZFZOb0tRWnJKZVM0QmdCWE1GbU40T1l3N29rbkZSM1pZT2pIbE9rZGVZU0tqclppZ2ZidUIxem4rZzFCNGpVVEdJREVnbE1RZjgwcWRYT0NhQjFsQklIZ1pCblhnaU1iRU00NTY4R2h3bUc1K0tPeEZJb2NEbmZOVEJGWHhEb0NQQVBtb2lSK1pvQjN3c2Zwb0Y0QThWUWlaeUlZcXJkMnVRT0NhMFZJdEdEcTRXT1QwWEFFaEFCSkplWkdlUmVlRFUvS0tNelNQZWkxUFphbEFTejBjUEsycTI1dEdhTFcyQWRFRG9GMHNmZVp5Z2RPdHZva25aNi9vT294Vi9QTE4zZTRGL1dTNFh4aytVdFYxd0NHMDZFRS9rVExRbDJLTUsrRXBKdzYrV2FhNUJBRHN6bDFBT21GcW54ekNVanRIbFpra0tTdXJwVVBkSG1RQkxld3E0SXdzUXhGWWlhMTA3U3hqQ3NGd2V4SWVKU0NySjVGRmtjbm9pYXZjZ25JRmdJL0RNMXFjQmU5SFNHbFRLTnBGaGhNc0tuTms0QVQyRGtBTkNQVEJtYis0QVlqdVRIekpRUkM1dVF5NEJ1SEZxV1FocFdJYkJZSXR6NVc5QXFLZ1JFMk5qSXBMbGdHamtRT01Db015OVFzaXNuM1Vwb1ZXb1FhZEFoSWxFZE9sSkZaeWlpaG5wVmo5S0RiZnUwazh1eTRSZWZTYTN3UmRFZjNqcjI5M2IxelhEVUIrS3J6MHIyV05ZR1RTYWgwS1JVZVA1ZFIzenZsY0FvQmZuaWpMTWQ0bkFjUEpkbnVyN2RDV0RSbUlRNmdGdDhUQWV5S1pxVFJiZUkybnRzcTVRbFF4QW1MeURPV1ozYlRBd3c5ZkRuODZNWFdNRGc0T2MwTXdnMXBqOENESGVtV05NbDJOYTNSMzVRZ0U4U21BNnF1dVgwa3RtbHZRaVU4YldKV1FhYmxGckRQYU0yZHBsRXBLUVJQZ1FTcGt3WnNJM1lLeUJGK3BZMVEyMU5DbmdyU0M3QkFlWisxZlhJNlNwYXFjcFY2TU1QdVJQYmtRWWJFdGhUS3RDcjAwVEQyWEtmaUFwS3hPWVB0RnZqTk9lUHpJb1g1YzF0N2ZxNytxOEhOaFAvZkNwaThEZURsb3BKREh1WWNLUlUybnk0Tld6QlErK1ZsTU9PYVI1aElBTk9oam5zbDVaU3pzNjVLakdCc0RpTTdxNVhrODlQMWFpM1VWVlFQUmRwa09SUkYvbnh2MTZCWFhMejNSYU1qei9iU1ZQZFRhNENCQUZWV1BEdTNQcG9HWDdEcVFrS1BleFFZUHFGS1h0cE9QV01FQks0bjJIQUIyaXU3VUY0TUhpazc4TWhEcW80RGI0VVJ5Mndtb2FJR0ZCamxCOUlPTmxJQUZCaXJ4RFZldlhGc24yVlB4ckZpRXhpQm9Lb2d2V0xHRVBrZ0JrYnM0d2cwNURsZmFMeUtON00ydHZoSXArN3JtNE5RVTVXVkZXbGIvOVZYNVgrVXREYkNmL2NTV2RnUG1zRUxCV3lyaFJ4Qks5QzlGN0RRcThVRU9IdmpLMGFCbkJzNG5BSlNKWHpzWUIrZzRTa3AySmdhSitnd28reENpanVKUHdEZ0FTbkxiS2pQeFRDOG5zNkNmK2VKY245QW9kWGZMVEtGTmZ6dE1lS05nejk3S3FwS0VWZ3hwazZpamlrd2V5djZoU0UzWU92bEFwcHdDVXZSQlhSMEVNUWNBOUJRL1BsaVdOUE1JUnBiSEdiSjA1RDJBYUFPdWFOc0txRVNxK2tjeFNOU0h2VEJTckhWb0lJc0JacW5VTVhsMHNqRFRBeW9OcUJBOVp5Q2FwR1lVaHpLaW9uRU5PT1M1YldsY3N4cFFhMlovREhLeHVjL0p5N0VzWUVVWCsydWFPVXllajcyMjNUMzNtbDRITGp4U09aT1RFcktNUU1TNEZRTjk2SjBpZUpKVVREN2FXaHIrMUhEd3pPQTh5d0JRdmM3UFdybVh5UXh5N1hyMGhFQTdHVURKa3pyQUtCY1lzdHNwZktETnEzTFErdFdteWlpMElxTEpncGQyUGJVQmxHS2JyMExUUmxBNHg3VTVyQVNDbW9SZ010UEJVWS9LckFxYURwN0JnUWZiNmc4Y2x3Q3FMOGZGVGpNQ2pTV2doZzdMTFRsTjFKRUlDQUptcFo1bXlBaERaWkticDVBc3VGUktWT0pjcmtpWWhzbVR2TFJKNHdiZHhoQ21WcnlWSjVpalR4QmN5b0tZSE9NMEJUVmk2ZXUzaEFpZGplS04vOTJPU0RVdk1QN1RKYjd1L0M5MTYvcDVjQ2FPM2dQYS9ZUitFb3duQU0rc3RUMmRVNy80dW1uY3JVb3QzSkJ6QUp6eEpRODRxVTNsR1lDekRBQ3BybDZTSW5mS0huZXNqTGR6Yjk5N1dkOTU2eVFRTVVoNm1jbWMrTXFqaXVBU1grR0NLMFBSREZVbEE3WGt6b201b1k2VkFBWUQzY05BQ3IyaXcxUEh5Sm5VTUNWTmQrOVY5ajBBMXd1OGg0M3hLYStzN09DS1VlaE1BUENOd01RcGg4N0I3cFAzQXRBdUNFOTJnWU1jUnBLWWttOEFsNEpwOE1GZkJGVCtoaWRsNjdaWFljdWE4cWpxVXQyN3JRSzdWUWpna1ZOZzhIbEoxK0xOV1lLRks5M2lGRkl0dU9HcTJBYTNIN1Fkc0VxbE91bWJzdW1pMFUrczhpdUtBbWZYRlF6RWMwVlAvLzJrQXNCYXVmMVBqOFlmNHZnYnBaUUxEYmdrZ3pyQnowRmJud283Z0dLZUI0TG5tZnU4R0w3UE9aWDcxZ0QxY29CNWxDVjc0MUJRbFlmQVkwU1BDejF5Rldyb0tXc2dPT2g5aC9YckJ6aHY3eVdRZ1pMWDhJWWxLMjBrYjJFM0EwTDFIVWdLREQ3TllLZkF3VUFEUndCZzlTZFJSbUQvVWhDMVh5NHJRbytnNTRDbWd0dUhPSVpOUUtCNFJNdEFad1M4cmhKTW5DbnpNTk95SnNLS1ZzTmxEWDQrRXdkUHdyZThzWmlQTFhlazlMYU9zSVhBVUppa1JJVlZ3UlBmT0NTSXh6aGdFblVrbElSK0FSM3RYT3E1OVZRaEpZam1HNTdPbzQyMm5OT1lJTHVzbndNK284blBZcThmQmU3KzVVZHZkaTlkMnUwMjlETEE1QXV4MlFoNUhPbGJqeG1hU1phbzRIT2k4T1dFdDQzTUljMWpCMEJuOHltYk84OVc0ZXc3TUM5bDJEOFVrTmM0cTZBWVI1R1V0N2pFai9QVXNSRzFINlNoSXBkT2pFa2ZxM3N6ZzJvOWY3eFloZ2ZWaU82SWlNL3lHVFlNZi8wMUk0VEo0ZDFDMFRzbVVBU0Vhb2lDQVEraVlBT0J3SU5HZ3JuSFFNSCt0YTdJRG5VcURoMVFwdENoQm84UUJWK3FxQnoxbVFCTTlGWGQvbDdUNTE5cm1nWGNDRnZWQ0dKcjNDWitNV2RMRHkzZDNGenVibTdwYTdJcWJHbjdzaTFsdVJ5TXlVOUQ2RzhsYXQ3aUF1WWNQRUNERkNLTWFzQ0R1S09xR2NNNm40dG8yKzhPRGQ4NENLZ0dmdkpEUC9vRlZtdyt2eUY3NWU4dE9lcEhmdjY2YndxaUgySjhVemZobW90QW02VVREQmE1eW1vS2paQVVCMTFiaVRNRTVoTUFtQVdZbzhNRDc1Z0dGUkVoQjNHdGl5b3hoSHRpQ0djVzhoYW1yanF4MG9CY0lDc0FZZ3BJM3lVMko0NDdURWhvZVhlWFNSczMvQUlIamJrUmQveWhVVXNUWGdQTlk0MjZ3bmlRQ1RCT01uQVhuKy9UWnRyQkRvRERPRXZSU1luNktPRmZDQmJJaEhJenlJYVpCQnduQzhqQm5aUGJQRm1QZ3V1RkhHUng0MnRWazM1OWRiazd1NkZKY0VZcm9DYi9paHF3N2pUUnRDVTFkUjkxMHUyYzdicnJteE50bFZlNjZ6ZjN1aHMzQ1FRN0pSRElQdGZoQkp5NWlsWWdjWlNWY0E2Wi9nSXFhaG83NVZUNFc2NVFzZmducTZUZEl0cHZveHdjazRUQXgrVGYwQTJZcytyVUgzMzJadmVoVCs3SUo2eitKRHpNWDBCR1JZTWduUEFSYXVHZjRBczhaOHlIbm5oSmdtM21hVDRCZ1BHQU16aEl5dTkwZzJOblN0UkFib2gyTXpSRkc1NkFpUyt6Q1JvSFhvKzhMeHZOcVUxbWFoRUZwcmNhV25Rc2c0QkJtZ00xQmtYV05vL3FEVHBiWlE4QU1hWElvcXJGTTZsWlZmTVNJSmlvcEoyQ0JNWjdBYU15QTlZdFNxK2M2TWdrMlZkaXFMbHd0T01BMHNBQ1BSblk2cTlxaXg4VGY3bTdUeFA2Z2lZQmcwYjN3Znd1L0UyOUJPUDE2enZkVlUxdzBubmRHYnRmdjViTHp1Q0dkZ0hyMmpJemNhN2VuSFJ2WEYzcHJ0NVlpa0RBNVFIK1owYUVFckpWTXZ6ZjRpVFVkSk5VU0d0NnZDQ24wQ0JMbVRmOGlSSmp4UXFvL2dBdm00czY5cU92K3pYNUNYd1hGZmhXNU8rYnN2a0gvcjlyWHYzeE5YWDRjektNL1A0UFBHMWdxdHRTR1YwNVNPU3BEN25oZUNBMFdXQ2JTWnBQQU5pTG9XdHJUc0FrVmxvbVV2VmdDeGY1WkQ1MHlod2c0VEttY216VlBIa1FHWWthVFZJSFcwaURvc2VRbDUxSDF4TjRZUFNFRnhRMEh1TUZRdWIrM0ZpaGtaV0hHTTBkbHdFTVRqRW9HR1RpZllDK1hCQUNyQ25vSXFCeXFVNlVBNVA0TEpGbnVFSXUyMzArMTE1anhWOWY3aTZlblhUM240dTczbXVTdmFGUjg3SFh0clFLM3VnKytQRk5mUk51VjNmQ3FTbmE2cVI3VkQrVStkNDNyM1ZmOE14Rzk4UjlXdjBWQ0ZZVkJNN3BlUDNxVXZmNmxhWHVtcEEzZEduQVBRSi9qUWJqbGFKZlNtQ1FWa1pqTTdRb0dRWnNkYVowVUlJU0VzWWM5RlFrOGp5QURPdkVUYjhOUGVHRC9mcnhuKzZjYlAvZW43N1dmVXkvQkx5aFM0S29nMytwRTM5dGE5RFp6WkVpQ0FSc3hPaVVGSExkQS9BUUYzaXdZYVA2eHluT0l3RG9VNjRKdndaZW94K2hNRDlQUDRyUzZTQThraE91ZnNUWUNFbzZQTHhJaytTQkpaaWNnVlRMS0ZadzVIM3FDd25SZmc1Q3VocCtUeXdZVklUdVEyWEdMRnQ5SmxOT3hsd0ZCampxRkRrSXBBN0plaUtud0R2Q1l3dVRQWkNSVzZZQ2dtL0VxZlVjZ2t3T3k2SjlzNGJjaXJPQ3RrTHlnb21neGZVOHEvNlo5UlZ0OVplNkJ5OW9CZGR5djZwMnoybjcrL0xsN2U3di9zeTE3c2MrZEVQYmUvR1htNERZUkxxNVBlays4c3B1OSt6TE43ci83ZC9lN0w3d0hldmRsMzcybWU0aFZiNnFRUERveFFnRW43eTAzRjBpRUNoeTdIRi9RTVBkRTFxRzkzbkl4Tjd3ZTJrRUh6aGxiMUFvTk1DR1RwRlVVY2xYMklmK29DOUVVSWZ4VVNzM09UZjBnZi85NXlmYTJlaXlSN2lQZkhLcit5Y2Z2S2I3SU1YWGRHNlJtYjR2bEI2UC9tTER2L1FYcWRjbnloNERBaHRwOHRiczB6d0NnSzYzZDNkaVJaUkJzcnczOG5nR01qbVFNZkRpMktPUUU2ZmNFeXFyTkdWa21DMXo4VXdMVHRtQmd6WlJvdFN6UGlxU2tKYzJBcnZqaFVrZnhLN0FVMVRZekl0TjFGZGw2dm5RaVR4M0FFR0VJUTdmL1dmMktRaDRGZEtBZEU0OUJxZHl5cGtqaTVhRXFUaEExckpsalFhdWFWbjFHZlFQbnRlS0xrYnVlTVA4VC8vTnRlNzdOZmw1N3AwSnNLN1YzckpGZFp1d0tTM3pmS3dTay9xZi85eE5mVlMyMWIzL1BSdmRiL3owalc1WEFXS2lkalllN3JwUGFrbDk5ZEpxZCtXYWRnUGFCL0JPUGI5dW04cFdGTzlnQ0Foa3FoUUdnRkFLSE5BUUQ0WVVlZ1E4T2t0T3VDVjhFYjFBQzlGUEs3S0J5WC9mT2ZtQjFaOEFwVm42UC8zZlY3cnJXL0tUNkZ3aSthL2tDQXhwMFZhMjdoeTlFekVFQjRyQmdsN3EwRStkQUtBSW9EQXZtN0x6Y0g3QzJIcUlsT3hNSGhJK010ektLa3hrT2VHenpjUlJqdnNQWlRDcERJMlQ4d0RCREJMNjFyYXpJN01DNVFLVEpUa0ZVSStnd29UTVlNRFF6b0FRZkZHVGVZMHNkTXhCemJZL0QzL3pyNVFOcTdXNEpDcURrYlo4cEJZNUpQdWM5b0lhT0cvM05hRFBhT0t6Nmora1ZmOCtMWGVyVXZ5Q2J2WTkrL0pXOTNkKy9ITDNieit4cld0N0pyN0NSUm5zREZaTGFYTGtPd25IemNJcnVqL3dYVDkrdmZ0L0ZRaSs2dGVlN1o1NlVQY0NkTW53K0gyaWEzZng4dXZMdWo4dzBZM0NIYjFYTDE2dTZVc2RPL1gvYis5c2dDdzdydnArNTgzMzU4NStTR3ZKdHJCazdFaE9RRFlRd0NUQlpRcENnZ1BZVUU1VmtncEpwWkpLa1pTTFZFd3FUaWpLVUs3WUlWUkNnWTBEd1NZQ2JGbUlzdVVQWkRuSXNtVFpzaTFMU0VMU3JsYUxySlYycFYzdGgzWjNkcjduemN6TC8zZTZ6NzM5N3J6NTNQZG1aK3piTTMxUDkrbnUwNmRQOXpuZHQyL2YrMmc3MUlKOEFCYU5WMjlKZ2ZlOHhzRWFGNWNIV1dKWWN2VVZVRkQrV25hVlZpd29QNnVnVzZUOFQ3OVUxMjJPem1GYSsxV3lEQ08xSUYrbDAxY3hRbitsZmU1NUFnZWhKZURNYTFHa1lHZ3FHVHJrdG1zRm9HNk5MbmFnSzVPajE0SjVXYy9rQ0VHRVpWRmRnTG5TZUJpOGU4cDdHT2p4Q0FIQjVWUXRTc3o1dGFGQ1daQnlCaFFQaWxEZ2JFbW5SRE4wZ3Jic1Y0ME1iQjdWTVhDZ1liT0lEeUtLV3dONFlTWUVnVGI3c3dsSVdTQ1ZVVmhlMXh3U0JoT3hxMElycDh3TTlqNWRiTmJYSnRjNHM1MlVmMGpyWDVhNzNUcUU4TG5IWnJKUHljL3FjUjdQdTJrbzFWc3RGallPckQyd1lva0FlYkd1UUVOdnpLRllEYjAwczVUOXQ3dW1zcDk3VTMvMkV6Y05aZ3VhU2NlMXRCNjRTbDczMCtjbnU3THBXVWw2UVovWDBtcUFweDQ0ZjBJUXduYlZKZFJMelByVUF3YVROSXUzdnZqeW4vTDBCK2Y4T2RTRElSd2Y2YzRPeWtDSnZXeE15di9GcDJheUx6dzVxNW0vTUg2Qmh5RHY1aXYxRlR3d0J1Z3VuSStqRUF1NVRFNFJRVGJrcTZWUzNGWHhuSjJCblRZQW9XM0w5WG9oamxRMEcydFVXcFlTSnA4SVcxR2dVbGNnSHh4U1BVTTYzaGhUcEJtbTFJcGFMUS8xQ1VVNGxBbDgwTEdXMHpNNUNmSUtSeGtHQUIwUGRCck1CRll1UXNJTVNPdDhoU21icmdMWVNMS1ZpeE5RT293dzhCejZsaFJKNE11UThneDBqQkd6UG9ONVVMdjJJM3F1dFYvTGZYYjUyZVFiMWFnNG8zdjlXeDZZeWg0OVViZFozNVFmcWlydk5HQ1dQNE0wZ0hBWkdCTVlQbTR2Tkx1TGlZODlPSjg5SldQd3o3VWEyRHNzU1VnNDErNlYwZW52eXM1TmFHOUFHNFV6V2czTTF6VU54dHVDUUJoaWNwSlREQkV4RklEbGUrR0tIQVhPUXlHZlh4RXB1LzNJWTBqUCtmYU4xVXo1dFJqSzlrajVIMzV1UHZ2amIwemJoaUJIZ1RIYXdYQkhZeUJja0VSeHBYYVRUYXd5RFRzWEtTVGR4b1I0QWFybE1vL1d1TUJtbXJtTjRVNFpnQ2JwajQ1azgvM2pzdktxYlVFYlJ3djFibGwzbXJsRlo1MnRza0I1QmphVEV4dFNDcG9Ea29iSGVkamk0Qk9jWmRqQXhXbDVqMENqVlJnY3lrNmlLMzBPWXhsTVQ0MkJUQjRsaGdGVjNJa3kyeHZQeWcrMHg0QmtWdGlXbFFxRFkvUFBsNWJjTklhNk5ad0lHUEdRbndUcVlLQnovODdPOWpDenZoU2ZlLzBoOVkwMjZhV2tPdDkrdkpIZDhVU21lLzNoN0JWWE1jZ0RZUU9LRUUrOVVrTWVhekN4a2xNREVBY1hiOU8zTGpXeTMvbGFscjM5YjJYWm02N1ZJMFBOZC92RXdKQVU3cHdNd1lYSm5teFNxNEU1clFZVzRpYWhHVUFqQkNrUHdKVzdpRk0wTndZRkttUktzcU4wR2pJMjY3T3NIeG5zenZhUGRkbXluNzJQY2NuaThPa3N1L1V4UFFrWjIyc3ZBVm03SlhPTWFBajdLcTZRaVlraDFoT0JFcDNIMW5CSSt5RjdkTHV4Unl1d01mbUZtV3krZGM3MllqdGxBSnE0bExyUGQydFp5WkxUb0N3K3d0K3E4OW1Vdm1WQWhYZTBDMnFPdDhFV0I0Q0hIWkk3RFJlbDF3N0J0WkYwOWhVaGJuaGRUUEVoa1dja1V1UUo3eEpFQlNXL0RkVmd1TndrVXBUQlRqdWRSek1JY2ZsdlMxY3BOd3BOUGd3Sks0UWcwMERMNVF2a3hDQXpQb2Q1bU1tWjlYbTBoK0tQU2VsWTVqTHJuNXZSN1B5WGpleXhGNVZmSFRVa1JXU2dpMFN6d2h2ZkRQeVFadWtFaWJkeTRnOFowUllja1BmcFp6VEgvY2tqV1hib3BTejdSemRKNFhUZndhZlByOUhTbTBlRzV5N1ZiRFV3cXkvdXpHazFZS2NKSlJTT0dydUNCNXFSTUl5VW5aSTh0NVZSSEQ3aFBaeHhrRHhrRE1lMENqcWdldmRxRmRTdlBNejhmL2xDSS92NEk3b1YwVE9Cc09HcHNwS2xsWSt3S2F5NlRRYWlEU2ZSL3JiaXFzeWx5UU9ab0IvQWhlV2wxQUI0QXltWGhsZlEyU3lpa3dZZ1ovVEMrWVc1UG5YdS9KUzhPcjJ1emx6Mkc3eE5jQXpCY0xSV2dVaWQrMFBPbmZmcUhuTnhzVS9DRG1wRXNubGRBdFFnakFqYlVDT2R1RGwxbDRWemhDZXNnSlpEV3U2SzdpWG9jSnpEd0VXSU93Nlllc3FTejNCaXhsNFVVb1JCaEdKN0czbjhCODRITURNL2hleWJBQnJKRG9VeVdyYWFVQWlEeTNQc3NHUGZyVm0vS3h2VmxqNnpQb3F2QllEZDczTXMrUXVIWnJOUFB6YW56MXVGR1JFYVZPcEwvaEJ0amxzNk5lcWZSVEFEdnFXTFFySlptM1lxVHI4Rm4yWDNuRzlrRHovVHlINzI1cjdzTGEvcjArTk85YUptMzhGOVdvVm8zSEJ1WUdxMnBzZU9PbStnc2NQaEk3czFrREdBcHZkblhyZlZGeXJsbWh0RHRkY1YzL1krdE84d3JDVS96L2paK0dRVkpMdG9LOVU3SHAzTzduZ01IUXl2Lzdvc1RMWVNCcmNDaFd5UVFUU1dsRUJZY2k0UDZnY1RzSmEwNHJLZ3poalFpUzQxTjV2aUJPWGt3dHlLVERTM3phNlRCZ0JXVGY3MStiblpiaW0rVG9GbVMxcnFMY1dkM3EyMUpkcCtVYWJ6R1UxTDhzdWlpWEhCV2FYQWtHeHhEMXNSWFloYlFnRVVXcXVMbEJ3TDJCS2NxT1VYUHlvR3VVQTBvRkZncU5rc0VNTmt3WkVYQTJMbi8xV1k4dWJCUjIvOEtvekRWZzVybHVJOTlFYWNncm9FYlRCcVJQT0JDc0pzWW5GTHdHeVA0dnVPUFJ0c0hOL2xKQnNuK1ZCOFBEdjB6NXhaeWo3MjlVdlpZWDNVZ2hrUkdoaVlZSXpnTFhweGx2TVptWFNlWVpyYkR4VTEvbzNwZUtHdGVKZU5LejFZd3VBNVVzeWp4VDk4WURaNzhOaEM5czd2Rzh4ZWQzVlBOcU94d2dHaVVTMVJNRXlYWm1wMmtwQmp4ZmEwUUgyT0lXQUNDTzhZZUYwQk9uKzB3WXloR0tTTmZYRVZOQ3A1N0pVeFpJZGZpeDNiN0x1Z3d3cS85N1dwN0J2UHp0dUtDWGtzNlVNc0xnZUVnT3oxaW11Tzh6Ujc3S3FtSWg0WGhMV2QrRHB1UUFMazZJOTV0UnVkaVVXY2hNTjFLRzB1dWQwR29DV1RqZnI4dEN1Y0NVZlNDWEJ6ekhwdWxDZXRpRGpQbkhuY1pQVW9JM3FDSTE4Y1p4WnBpdWRjUkdyTndNbzM4eGxpYnRuSlFFdnlPalU0aklUVEVXUHdoa3NOUVVwVGJCc1g0SUlQcHdXZERuQlpTOUFEZXdaTXlURXNZYUNoOUpxRjJKVFNJQ1hNSGdodjZUSEllL1dNZmtBS3psSWFwVWZaR2VUTWN0cmt0bzlZM1B0c0xYdncyYVhzbkQ1cVlXKzBNYmo1czBIZUdzSmtrVWZNQllTdEFPQy83QnpIb2dYaFFCdkRUYnVnRTBJeUFsckJZUWdPbjF6TzNuOTZLbnZ6RGIzWjI3NW5JSHZsZUhjMks0WGdubnlQREFGR1lXcXVLNXVSbjVQQlgxQjhVWVlnR0FGVkFXRmtwRDlWWlRLeld5QmtJajhnWlVjbUhFOGVqaklCc2dxNi8rbTU3UGFIcDdOelV3MTdNZ0t2WVNVVVpudkNablFoTEorbkI0bFkwMDAyZ1lVOGJvRjFMZ3hYdkZnMHVMdzRQNjJvWXJTbWM2N2RCZ0JPbldHSFhZMjVTOVBjME5JYWQ2NFlIdDhLaEFZZERsMVdGM1FjbFM0cHJOdGRNd0k2Z1dET2pZQXhKVzBNT1pWa2lJSXppK1pOS0JwVDVQQXlrYTZBcGVuaXZKQUNuVERBWTdvdzVHdnBsVG1PS1lNYVpaQXd4NHlBU1hqTjFVTjJuNzhvVGVLV3dLajdJRlJibWVHNGYrUkxOWGlVWDRmNTdLTVZmTGhpU0hHWSt0YVpoZXp1dzdQWlk3cS9IUmdaVjMxNkRDaGhtZExEc1RGWURHN0RSK1pDSHFvT2l1QnRMTGdOZkxtQkxQbzRHalZsWk5ZM09pb2M3MlJNSnRCQ1FnUDZ5aVlydXZ1ZXJtZmZQRmJQZnZBMXZkbVAzZGlmWFgrZ0IvWXpMUUpzdjJKQnkyUTlLTEFqeUp3K1hOUXN6UmlnRDFKbk0zK1VDL0pnSTFvTElqT0dLRDRqNFlrWEZyTFA2RkhuSVoxellQWFV5aGk2NHVmeVFGYjZzMzZJb1dEbFErMUYyMU51Vmc4SHVoZ3NVVlFiRnVlbWRNUGNlU2R4ZE1SNU54aGNuSnVleEFDNGF4NHdqdDA0TktKZWczV0NPbDVUNDdOblF5VjFLVDFLd01tMmVUMTFjRWNSUDJCaTZwZ1Fjbkx3RmxUVlM2MFBLUnM2UEZMeEJqWVJqVWdCTXhTQ2xBRmI5Z3dDWmkzd0dJQ2U1Ym5zbWtHZG1kY1JPbFlEeTEzZFlheDVQc0d3eE1Yd2FZbXJzcnBqc01FT3JmTmExajcwekh6MlZmbWpweGQxRDYwWlVDZHdVQWllTnZ2Z1JySHRMeW80ZzlKd0FuQVQwcGlod3FhanFnbE1LcDY2bFlNL3BLTnMwS0NYSU0yM0RxekhJbjBrajJNV0hOUXluYytnMzNlMG5uM3RXL1hzOVZkM1p6L3kzYjNaOTc2cU45dXZnd3FzaE13QXFDMnMvclFJTU1Qb1cwdE9FbHA2NkdHZWxROXRabktZME9uREI1NWJ5TzQ3TXBjZGtVd1lGd05tQ09FdHROWGw0Zkp4NVRlNXFCM0lJYlFJcnEzRzBJUVl6SEVrcitISWJuMnVBSkE5bllXWlNRd0FTWWdvQ0VhQmRqdUpvK091YTNucXBTa05ldTdRdFRDVlUzTU1iclpxbFd1U1JCS2hVeDg3d1hGU3ZYbW03Wk1oUFZMaFRiU1ptU0JReStvenYwMVJ2Z2FJbklRTVJ0L0pwanc2cmhYTDVMTjBEUnlnSzRDRlk1cm5jWnFtL0lxRU9JTXBoRzNvS2RMSDdDUUM1L1NUVS9jZW1zNWV0VSszQVdNTjdjd3Y2LzUrT1c1Q2FRaHlDOENBWmVTSUdrdmhHVzJXOFVNVno1NWR6QTY5V00vKytreGRiK3lGUjQxOHVwcmJBVjd4RFlNT3FBcWhnZWNQdnNJbHg4RW9PUGkwL1lISTcrYU1KZFF4SUx3a0JhM0FFOHBzMVVGYkh1dG1yMVZMQURXZEhXRFZjUGpVVXZia2k0dlorTkNjOWdlNnM1dXU3Y2x1MEtyZ3FsRzlwYWpOVFc1L3pCbUJFUFFyOU5sQVBIdHBLVHNtbVR5cEY1aU9hTFovZVRyY3gvTjBCR1htSDFuQ2pQMEI1UzNOTUdTaEhtUVdvRiticWxVazVJc2NrR2tOUnpKOVljdC9RZjNYRnk2ZW1WeWpTRk4xYStSYk42bVRCZ0FtOFYzekYxL1FDbUI1VHN2TjN0RERVcFF0TkNFdGduSVljYUE4RzJTSGRQOTRWQWRNYnJwV1gyNlJJUmpUN3U2MDdxVG1aQkRJaXl2cURjcWFJSlJLVnhUT3l4U1kxaUh5R2JWWUlNU0ZFemxEUmJ5Uno4TkJCdFNJRDQveFFqdnNtM1BTTk83WjczNWlPcnZsTHlhem1tYTlNYjFRczNla1I1NW4rT0hESEJnQWxKQlZEM3NnRi9Ycy9LSWU1L0Y2THJ2bHRpa28yZkNXbnYxUm1VSmhWZ3M4Y2hzQXI0VUJzRWpBS1M4S2orS25nem9vaFhCcWo5bFR5SzdqeUl1RERsejc3TW5nZHlOQWF0RmJHQXNreTdzSEZGYTc5Q3U4RHorL2FMY0hQQzRia1pERzlRanYxVmVQYXEramxpM016YWhMMWZseVRBWXplb1NJOGJzZ1paK1FiSGhya1JvWUwrRmRmbkZEYzhFcTRISWdRTjBtazRDMHNHV3ozTmJqRnFLdVZBNjB5N3ZaMDRDck9lcFFVNElSa0tCcmplVzVpYlBIZlFYZ3BCeXVSbVpMK0U0YUFCZ3lwdXNubjVpU0FkQnA3OW9vd3Nmak50dWlGUy9weEprY1dneFFYdEw0K0lQMTdBTS9wN1Bsc3A4Y3FKalNMaS8zaG5YZENnVGxqNTJUVzRMbXpncE1iWll6MmhKYXhWakJRYUVZOERIdStCUXFZNWhsMUFZR3BWWXRROXFnWWx2OW9nYnZIMzFaRGRIYWRWbEtlbkcyeXhUODJEa0thV1dJNXFoQ0g2UW9OYmNPQVdxbTE2Z3lkc2dqa2pqeUJzaktJWkFJeGlEUXlmUEVNcm55eDNKUVJOYXA4M2FtdVBYQ0JVZkJES0FBckhYaGpxcENENUFyck5TSWs1UE53bTVWYUhIMUlUL0x6YmY1SmxXWWhjejU4M1gxdDdROE91aDVPekYwN0kyQU03bFpIdHBkeEUwK1FnVGxqM2d5eUR2UHlBdFhZQ3lhOTNmUjJ3b3BhMmhMeU5QcUNyV3drWXRoRXQzRzh2VHA1eDVQRGNCNkpGcVIzUkN1MHdiQW1KZzUvdlVaUGZpL3FKdnlWNENnd1NiTVhBa3QyNll1Wm5FcElkRkFEd254aHRiZGh4ZXpINzhKMzVOcE1zajI2bGFBKzF6V1V4eXVaS1loYzFCWUl0RWx3VUF4NEIxTkhlczdEVXd2NEpsVkVKU1Y5elJubUVHbE1NdDNOdkJRL0RGdGJ1bmxhVnVtLzlhZGw3Sm45WGl1aXh0WHk2djgrWkpmUTFRNEc0d3hqVXJ5UVdrVm1wUkJHaDVvRVYzTlNJQTNHdEtjUEUva1NRZ0dMNHFBd2dmV0F6M3BvRzNnUVcybHMwcEthRzk0Z1NZWG5wV1A5WWFBSFdoU3g5cEJwNERPK1hJelFMOFJEbi9LcFB3OHFrTkVHRC9iTzlDMys1eGpCUklYNVFHR291RmlFWWtoeG92MkIyTWdQUExWbjhzakVMVFNwdlEyRHdWa3ZNSjhjSXpUdFJ6SjhDM2JIL1p4alBXbGk2ZWUxdG5qbFc0ZGFpc0xySWRwcHdHQU9Wb09USDAyZituc1hHT3BmcmFydC85R0dBcmlKTFJKSjBuVC9UaG1DNXhWR0hzZ0RJMnU3QU9mbjh1dTFiR3ltNjdobTNSNmZLUmJBV2FCR2QwS1lBellLRUpSdzRaZ29CUEp4c2hXQWR3ME84TkVOTURqUUp1WjFPRjhQWWVQVGZLMVdiN3d3KzcwN1EvT1pCKzlkOUtVSHdOaGc5Q1ZYek1aTTBZWW9ERU5xWG85SHFDK2x1RmdPRWlDaDNTQWh6QnRDSW9mU1ZvY3JEdU1nTHNROU1vZG0wRHJuNlpjU1NMQjBLdGMrYjBEK2hacThHZjlKQmlNRUZoTVFPanBZQlRBaGJ3b2tzMms5c3d4NEMyeGRHa2xFOGRaKzExbWdsQUpWM2dJb1RCNUJLS1dIbVdSaUNRMG9GVHZhbEdNTVh0WTVqRUEwcFdKMDZmOUpDQmszYTlHWXN2NGRocUExWmlBK1hxalBuMnFhM0RFQk9vWjE3T09ucThNWFJwcCtSRFdzMTRKOG1VOUR2eWxUOHhtNzN2N1FQYm0xK3JWVXkzL2VmN2RKMFBBZlNHZWxRQTc3R1VIYlRvVnVLcHJrYmpxY0lzSk5sQ2NvQ0lvbmoraTBqSDA4TjA1OGNNZ3VPWCs2ZXo5bjcxb3kvNmFNdm1nREVwZmJQbzUzb2FsNkRuTWh5eVZ5aFg0UEVVMHd5MkEweUJGVlVlbkVrYVBhQ0NDZk5Gam1vNlBwTWtRNkZ0SWx4YXlDVWxlb3NpUWl0LzdEd0xJSnB6dWs2cWhoQ3BDM1VENGdnTFV3bXFBY05oTUpJME5UZnN3YXFoMDVaV0NjaXRrSWp3NGFCajFHQmNxNUxaNERFZCs0TU41Q1NuRjFSS0lic0Q1N0E5a01saWVuenVwWXNuenF3MFEyV0tXVGhrQWwwME9sK2VtbnU4Wk8yaHNJbVNHR3grRDJwVFRLQWhXMzdvb0ZxV0hxS1p3SEgwOXE4ODF2K3ZqTTlrLytjSGU3Si8rY0g5MlVHOTQ2UlJwcGx2R1RJK05iUlhBKzBpK1pHK21VTkM2M0JEY2xSMEQzQTBBQm92SGRpZ2Y3NXAvK0l0VDJWMlB6V1kxV1FJK1N1RUtDaXdmUDAzVHFJTjQ0WHd3Qnd5RE93eG00cUpGTktKSW8yUTRZQlI0U1RJSEFwU0tRZ0tFWUN6cENYbk8xUUxxdjF6UVRxR2NGMDdnSVR3cHNGeEM1YmNkUXBpQk1KNkwwZUF5Tlpsb0tXRHRLU29MTFF5azh3cFRtVmc1cFlUNmdqRk01VUhld0hFbzdrMEdGL0NibFVYT2h0M0NwQ3VBK2RtSjR6blpzTmhOcXk0S3RpSFVLUU1BYXk0YllGZjkwdW5uZWc2ODFqcUdSQk9vTFEySmJjWloxK1lGdkNPc00zT3NsRXJLdytiZlIrNWYwRHZ0QzlsYmIrekozcXpueU5jZjBHTWpuWWZuNVE2YlVaTXlIbHhOMmpaK1l2V3I1WEVhcGJIbWFJT1U1UWdyUjFwZjBHTytwL1ZJNmt0UHpXVmZlWHBlNzhQcnZRWlpoRlM1N2NTZnROVnZCVmd5bXJKSDZHMUhvWFBGVFJob1RsZkgySFFhaklBWkFnWjN6TThTM0p5WWRGeEFwRmZ5aEh3bWg5VXpwb1ZpT05LM1dHc3BoajROU3VnZmxLWStqS1JYWlhsRXlxblI5bURVYUZmQWVydXRLcy9ZeEFWeWpJaElpWGhham1TTHcycWUxOHM0RExrMkw0dFEzbDdVWWhVb3o5bUkrUXRuajBYS1J0SnJFU3pIazZTdEJUdHBBT0FJaHZIZEM2Y1BQemR3M1k4c1NzQlN6YTA3Vi9pVWdtMGFSZGxBTzBoSkcyc2FNVU5TSmg0QjNmcU5sWWxHOVFBQUdDOUpSRUZVaGV3MnZZYytyS09nSEkwZDF2MjJiUnlwUUZGR0pVUGhsTHlGZVJZOU5EU1VEUTRPNm15QlBwQXhPeHVVY0VYT3RSSGNldkNzbm1Pc2s5cTludEFqdTFtV0pYSWMzKzNuMko2RTVFcmViQWdZc0lVbm54bUNXR1ZUT09JTUtKODdDMUd1YVRTSGRCUXNkYTFremR5TWMwVk04Mjh1TEE2TUNHMWZSZWhLWVM2M2o0WmFubkQvYi9YRVR2T1NOQkVVK2YwZVBlVXh0TkJLaGt0WkpwUnV5a1FFbytNMUtGWUVJNkdRSjYwbnFXSGRvSlhXeFc0QnBmd2NYdFBEbmNWekx4NStUb1ZKNWk2Sld0MHIyRjdYYmdNQW96RHVERHVzVFIyNTgrVFk5LzNMbDd0cVBRZkpFR2FlbUZOZzQ4N0poeExGUmw0WUhNWUFXWENSRzU3NURtbFp5R2xCbm8yZm1kVHljc0pmSUZFbSt5ZHpMQk5DOFJyd0dJRGhrVVkyb3EvbVRPb3J1RFA2cGxXcWNFMUYxb3lJdWZCdk1tQjI1M3g2d0hsYVVPeFUyVmZNL2lvUXhuQlN4amtXcW5DRnFqczZ0dFE2S3VCUVJyR3djb1FYWkpMY0lOZk1tcFJhUHdnSGVMaHl6cHBMc2Z3UFN1MzVTRGVHN2RhQW1MWERTT2tTbGR0d0pLNXdMV1NTRXlCektHa2JuYXNTSVNFa1hvNHNtS1RzM1EzQllBQVdYLzdyYi80NWV3QllXcDVudGhhS0V0cmgybTBBa0FnTU95UnMvdUtoVDErNFpuSDJXSzEvOUdDdzFuU0NaOXRrVXhLVDY5S0JGbmVFcHBRUlNUMWhvMGtiUTZTcVJ6bExZTC9RYTZNcTNFT2kzTGxUT0lubEhKS0hNK0o4TUdOQkpudEpmck1HSUcwdFlSK29JV2lZbkdhVDhxc2h6WEVyWWZLTFl4MWkrYXdjS1Bud0pLKzdtRWZ5QzMrT2o5RHdKWnhIaTRvYzAxNlk5R21aY05vZlJhdThsVVVxR0ZZQTRkRmltVXFJZTZraTFlVzJNb1U4WVpWUzVNNURiWkFIblBNSUU4WEhjd0NzSVIwNWRPOGQ1Mk05clZZQVJZTnpaclllYUxjQktITUNzOTZJdWFXNWlTZTZoMFovR0ZFalB3YmhNZ2VmdCtBZzNDUUpHN3htQWtRMU9NWVVadFR6RnBCT1Z3eGxCNmt3d0M1VzJHSmdjb2NCWU04QWkwMm4rWVpjbm1HVmdQT3lNam1tQ0lSUUNKaGlFclFCcHBnZ3F5VUVaampEczRJeUpBbjZEL3pTMXVCSVMxMFJiNXF0U3Mya0p6eW53NXlLQ1NxUGJVc0E5a29zTnRVYjJvTEVtdDFLVEhONmlCV2xYQ1psRzBUZGJGT1RzOGdkU2llN21SR3hOY0IzQ1ZCK2JnTllDZFl2VER3aFN1VkhnRnNqdm9GUzdUWUF5QXhaZWQ4NVpHelZGbDcrMXFORDQ2OWlMQWVoS3VBWk5zQnJrWVZDY2lzNlJSZzYwMjRHbE1pWXRUeFdIM1hGUDJVS3R3NkNsc0VLV2VaSU9sUmcxNERCQUFURmx3RVEzOTNzTkpzU0psblhEVnBsSzNJRk1uSFlLaEo0Rm94OFUwOVJGL2VsdENYUTRvb1A4WUJiVVVFWmdWeThvV2s0NWlPcHJBeGxFaDJQUi80MjJLSW9EYmphYUltVkxjaGxVa295ZVZ3ZTZSTEZFTVZnczFuTmkxc1lBUjREbmo5MVROOUlVbmNXbnN4UkdnVGI2OXB0QU1yY3BRMnBUVDk5NTVPRDEvMjlLYzJlSXd4dVpqWWI3bTJhWFh5NWhwcEQyWmI5cWloOGV5L2czQXpBS0t1QVVMWFM0cmhaeVFybDZJSHdyQm1lN2JDSjd0MExwYlFzRzdqRVNtSk9aRkM0b1BERVRlRmh5TklkSCtLbS9MRWd5Y1JOV3kxdm9CWTREdUd0WEkzVTVSTFpTc1dYVVFhZUV4RmNCcVdWUlhPNmJaUUpwTUlKUnA1SWhkZTN1K3JMVTg4K2RPZVRTc0kyYUpzNFh6MHJhSU82alJ4QU1wdy9DYUgyWG1IVVBiTy9yUzdQUHZqQkYvYS85YjFIYW4zRFA4QVlSdm41QzFtM3dFQVVSOTVCT1lsQUV4TUFiYkpaUFdiaWkvcHMvYUZvMHg1QVRpeVU4MkdGWVdEWmJRWUFxT09tVVEveldqY2FnSmZBVTFHaU1DWml3UDRESTZHT1psd29GVnJuRk5MWks1VDBsQUNqcVBJSWVTaGp2am5yem80MU5TU3dhdTBGTHgrM2RqYlVoaGFraW5LdGhGaWtYbjVJbFljdk5vV25VWVAyL3NmY1U5KzQ0N2RmRUhGcWp5M0tJWFU2bm5CYlhDZFdBRENlaW85NE1BSnpjN05MazZjZjZMdjZoaDhJaWhTVXF0V0p2SzIyanNwdy9vakpURXdxTm9WSnN6MkF5R1pnMWt1RzhselRoaEF1RElDK3ZxTjM4amRyQUx5R1ZEaWhOcGdLSWE3QldDWHhwb3FVS2tLYlhhSW41RU5Wb2tHbndGTnFQSXBhZDFmSVpic1pybE9ackNpM0ZZSXJpS3lPb0c2K1ArQWZic0VBekowKzg4RGNIRyt3bVBQdWdaT09jVlBzRzhWYTJ3aWM4YUQ4Y1Q5bDl2aFh2Nnl2Tnl4aEFCalh4V2JXRm12MldnU1pwZkhGZ0ViTWVOVmpvUmlQOWJKOERnWkNWeTNwN1hVeW1JcmVadVZTM1BuMlBKdUJ0clJQNklXeTRWWUNQdURIbHZUR2N1QXRQNWlqTkc4TDdURWprTFI5SzBNRUdvV3NvTHA3M1c1ckM4dC9QZ1hPdHhuNGRhVGFVbVBweEZQU2pUQlVYV2U4aDcxamlMZlZkV0lGa0RMb0RmQUcxYzcrdjE5K1l1d05QLzlFZDkvd0cvbDBGd1lBeGVCVHo1dDFHeTNoZXdPMko2QksyREN6c3VoNlFtVGx3cnpnaUd6b0xub0l2OEY0Rk9sYkQwRTBPSi9WWXpXbThsUUlqNTdtZVlId2xMQnZrWUphbXJNNWJQc2NTVUdMTjJmWlZiRzB6VDRKN1BRRzhFaVpsNy93STNwSHBhcysrL2dYUC9wdW5nRFFITmNYNElwdWJtZmJPbVVBZkhnNTgzbUQ5R2JnZFAzc2tVLzF2ZnI3Mzhoc2FtOXdhZllOUno2OTJPYWFtQTRBS3huSnJNQ2pUTW9ROEp3MWwzUVZLWXpBeWhJcEo2U0dsUVRZdGZPbTVUWVNOajRpMWNCbFVZcWFuTWRjUXFYcUhlK3dLTDB5UkI2ODBWUmdJMlZXVXRsWkdOcXlRa1k3aThXY0c1NGlEZXZFSjZkUitTRVVQbEI2NmJtam41dzRjNFp2QU9CNCtsanVsbkxjTWw3dXBWTUd3UG1DYWZjMEN0OTM1djRQM1BYS2Q5NzJpOTNkUGRmd0c2Z3NoK3hUMUZ0WUJYaEZtNGVheGFOSVU4bW00WlUwWGV0TUpWY21id0hqRkoyWDlleUs1eThQanh5L0FSN1MyeVRLNVhWdm9PeE96NElSMk1udFlYenh3eXg4bWRobWY3Ny9VRjg4OWVYYjN2OEZKZW1Cb0wwRm1FK1lpdnVRcEtzOHJHQjdYQ2YzQUp4RG1QWUdtV1diZVBLVHArb1hqLzFaTi9jK2FsWllDUlJ6cXhlOExFaXQ2L2xZQVpKMUR4ZnVIZWN3WmpmZ3VNMUNwKzNReStlMDErT1o5RFk0cTlmcmFnTzlLMDBpWFFGY2FWN1dxcDhYZi9oMEdlK2pqR2dGc0VkZnJKbysrL3p0VDl6N1p5ZFZqaDVCUjJ4eFdxTFRwcDV2cHNvNDdLVHpJUWFrVVRTTzg4MjFsKy83NzdmcFlQNFp2dHpMYlVENFNLV0daVnJpY3NLcVpMT3VYRjI1UEVxRDg2Vm1pRzN1dWw0ZEc2SldKcktGdU4wcnF6S0t0azNtVytDakhYWFRIMTUxSG5ERURvT0Rlam1OSHlSaDJjODNLN3VYbHM1OC9YYnBRcGgzWFBsOXdreTVwNmZhN2pwcEFHQWVCL1FHMFVCODQveWpmM2hpNGR6UlA3SlZnTGl3dllCNHVpNXQ5UlVMcTJMZlVIS1lEeTRhMENKOXd6aktYMkd2NnEwTk1IS2xlV2xML2JRRFFyUnJoM25uaVM4eWora25oNW45OGVQNlhOM1VxV2R1ZWZDdWp4d25qeHlUb3hzQmI0WWxkT3JTU1FQZ1BIdEQwaFVBcDV4cUp6LzM3MjV0ek0wOTA2TkhJZmtaZXg3SGVZbHRocjZNTkNnR2ZYbnUwQnNFZE55V29OcmxkVjJwdGxxOTNxQnRsbk5IMmh6YllrWmdoN1VIbm5ocU5Dcmw1eWZZUitWUmZuMnUrcG5QLys0djNxb1E5LzdvUkQ1Qkt1eXRVTEJ6cnRNR2dFYmd2REZ1Qk16S1RUOTMzem41MzlMRTM4QUEySzJBTHZhZCtsQnVaMTNWQ2hTM1NYbDJGb2ViNHViYnJTM1duazFKWVBzeUQybmpiMXkvUE1wSFgvbU5SdDBDTkU0ZXV2OS9IWDMwM25QaUFuMUlaMy8weEhXbm8weDIraWxBeWp5TllzTDB4bUx4QnA3LzQzLzRoYi94bjE3NmJNK2Vneis3ekk5NHlCYjI2TUx2dlRVZDBVMHBYWWt3eXAvVWF6TjRFdDlWd2NTSTJRcG1XNGJhOWtqSSttVUh0UWRXZU9hL2QxaXp2Kzc1TVFBSDltcTZ2M2o2cy8vM3YvNGtPLzlNd3J6OVo1T2lvUGVPdDhLaGt0cnZPcjBDZ09PMFFZUjlGWURGczJYUG1YdC81VGV6aFlVVFBYb3FZTGNDTWdMZCtrNjJuY1NEUXVVcUNleENDVERZK2RqSHVIN0loWjhneHdEczM2TUpibW5oeEpjKzlxdi9ROGsrR2Zyc254b0JXdHhSNWFlQzdUQUExSU56NVM4YmdPVUxEMy8weE5Rem4vLzE3bHFqYms4RnpBRG9PYjE5M3owVXJxNlZCSGFiQkhqa042NWZjOXFuUjMzajhudjFReldqQTQzNmM0OTgvdGNmdXZNUFRxZzk2QUtUb0JzQTR1aEp4eFZmZFpqYlRnTkFoVzRFVXN1SEFHclAzL3FPZXhiT0hQbFFyNTZOOGlNWjV2V3VOQ3VCeWxVUzJHMFM0SWc3UCtXMlQ3K0ZaY292QTNCZ1hEOUtldUxJaC83a3ZlKzRXKzFCOTlaUy9tMHhBdHRsQUx3eHdMSVJRQWo0cnFOLzhLYmZYN3A0OGpOOWVrU0MzdHRYVW5WUFVLdU1nTVJUdWQwaUFWZisvVkorWnYyOVV2NnI5L08xMzlPZi9yMTN2ZWwvcXgzb0hkLzlYOHNBYkV0enQ4c0EwSmkxakVBUXh2ejh3dkZQdlAzWGxxY3ZQTkNybmRLd0NzQVE2UFhieWdoc3k0Q29Lcms4Q2ZDeG1EMjY1ejh3MXBYdDE2TStsdit2T0NDYUd0TzN2KzluZm0xK250K3FNc1ZQbGQvdi9ia0Z3TG11aEZnSHI5dHBBTHdadmdJbzd3VmdCSmFtWDN4bzRvVlAvK3RmYnN4ZWVyUlhLd0ZiQmVoWlJiZmVuZGE3QTlYR29FdXhnanRPQW54OW1sOXV2cXFrL04wTFU0OTg5a1AvNXQzSERuMXpnakV1WDU3OTBZbHRVL3BVY0ZmaUJ0dWZwamxNK1FIWFBYL3VxZG5GeVZOZkdiN2h4OTdZTTloL0RTS3p4MVh4ZmR3cjlYaXdUOGM0Ky9RTzk0Sys0MSt2NjZYaVZpMUlXN09EdzkwYXJJTTZtTUxIV09iMCt3UzczZEVXWmwvYTRpY0N0N05OL05UNFB2MTBPelAvUGkzNzhkZGNwUWxzL3RJamQzMzRsOTcxNkQyM3ZpUitFRFRLajA4My9zQzdBWEFvVk9mZGxUQUF0QXJWS1RjMFZhZnV1WmYrYW5yKzdOUDNqNzMyNzkvWU16UjRuWDA4T0ZnQktWNVl1R3kzSWFnTVFPY0g1RlpydUZJR2dFZlZ3d1BkV3U3amcrTHZaOWt2NWUrYXZmalZ6L3pPdi9vUGo5N3pDWlNmOGM3ei9yTHlnM2RkY0NqVTlyZ3JaUUJvblN1OHczS0x1eGZPSFptZGZ2YUw5NDY4L3FjUDlvMk0zb2lZTExNdXdRaXNWclJNcWozeHlnQzBSNDZkb0hJbERFQ3Zia3YzYUtmL2dINTMwbWQ5bnZOZnZVOWFmdkhVcDI5OTcwKzk1K2hEOTV4WGU1bmhVWDYvL3kvUC9vaGsyNVdmU25lQ0FZQ1AxVnhYZmZMVTRzdGYrNS8zN2ZtYjc2ejNqVjcxL1YxOGpBOVJtUkVJWHhPaThIWklyeklBcTNYVGxjZHZwd0hnK3hVam12WDNqV3JXMTA0L3lzOXUvOVU2NGJkM3VGR2ZlT0h3QnovNEwxNzdHK2ZQbnB5VlpGQjJYL1pqQU5nRDhFMC9IN1lPbGJTOTdrb2FBRnE2MmhUdUFnRmFudlBmL1BBM0I2NTU0NUdCZmRmZjNEM1FzMGUvb1JidXdiVUU2K0l0d2tqS0MzWkNqSlVCNklSVTIwTnpPd3lBZmNldlg2ZjZ0TkhIOC8xOWNjbVBBVGlvbmY3QnJ2bmp4eDc2OC8veWY5NzlsdHVrNGN6NktIeTY3UGVabjJIcXZqMEMyQ0tWSzIwQVlIczlJK0JONjVsNDRrK2ZsWG45MHNncmYyaHY5K0Rvalg1UUVBTGNpM0ZiME1uanc1VUI4SzdZZWJBVEJzQm5IM2IzQjZYNExQZE44WFdQNzgvM3I5TGhIcDd6TDAyZStzemRIL21QLy9tdWo3em5NWWFqdk0vNndQTE1mOFUyL2NvOXQ1cnlsZk4xT3U1OEFObmh3Mk9jOEhwWjJMemVGTWp3aHIvK0Z6Ny9FNFBmOWFQdnF2VVB2MjVSNGwyU1owYzc5OW9LNXNkQTJTaGNabHY0TXJlR0tUNGl5eitzbHpyQ2o0UHFOMnVkYXpHMW14eHQ0WmVJOSs3dHNhY1pGeTh5TWUxdVIxdDRzbkhod21LMnBCK0EzWXFqRkYxS3Z6TGJvL2k4eURQWXowWmYrSVFYRU0vSFBNWTE4OWNXWm8rZWVQSytEOTN5S3ovMUZ5cnF5M3RYZmhRZjRhWXovNDVSZnZHMTZ1eEwyblk3VnllZ0d3RWdieXppVTBOQWVIbndOWC8zd0t0LytzUC91SGYvamY4czYrazlpQkZZa3FneEFqdzFNS2hleFFBdzZCdENLQlJzQVloTk9MSlhCbUFUQXR2bXJCczFBR212KzREajVCNnZvcVB3K0g1K3B0MjgzdVRUbE1ObnUvRkRVbnplNVIvVGpOKzlWRDk5NmRTUmozL3V0Ly85bng0NzlKVnphaTVqRllYM0dkK1YzNDJDSzc2ejRIQ2JKZFZjbmN1Z0dYdmxZczRQRU8rR0FBT1FyZ2JjR0lCZkhyLzVGMTU5OVZ2ZTgvTzllMjk0UjliYmZ5MGZHc1VZbUJHUW1JRm1BQWliandaQkVmN3Nud1M1L0JvQ2hqTzg0cFVCeU1WeDJRSEU2NTFkRW5VVGJmS3NsZTZaOTYyeUFyQTZkR0dQaUpuZFozZi9vVmNVbnQvbjQ4QlpuMFpWL2t1OU1jd1Bkd3pvL1pSUnpmak0vTFhGK1pPVFo0NTk2b0hiZnVPVEQzL3hsaE9xbnpIS0RJL0N1MDluZlJSL1J5cS8rTXI3Z1BCT2N0WnZZc2dOZ0VOZkRhUXJBb3dCNmN1anIzL2JOUWZmK3FzLzNuZmdwcCtwOVkxOWp6NHIwSTB4V0U1V0Jia2hVQUhUZVkydXFQdUNaZzd5RVplZU0rQ0R4U1BEV2dyS1QwMDFzdWxwL1FpMWN5bGF1STBNMUpEenlsNXByOTBDak5mQ0xjREV5aC9VTGpYTkdBYVgvajZCeFlWcmxkZGI2REpDTnF2bGE4SjdwRVVCVHpJWUNSTW1PTDYzWmtvOE1kR3dXNER3ZXhNYUdFcGpkamVGVjlpT2x5dXVKM2dXNWxkNVVmNWVqU2ovbFY0TUFUL1Z6WXpQTC9iVWxyUzBYNXA2L09LSnB6NTMvKzN2dS92UVZ6LzNVbXdPaXUxS0Qwd1ZuNW5mRlIvb2JrY05FK1MzVTUzekJrVEIzYXU3N0pZQWlQSzdVY2dOUWRZN1BITHRQL2pOTjR4Yy82Ti9wM3YwMVQ5VTZ4MSt2WHA3bEJGb0JrRmRZNnNDZFl2MWhpNG9oWWRGYzBXWS9DTmErZzFySnBqVTE5dW5wOFBBSTY4NUsreVJuUTJEQWREbUZSK20wTENkNElDcW5BbGNGNkFyYmc3WHdLWGx5blNJUTlEeUpPRnlQQ2JsR1QwOXJUK2xBOTd5QU9YSDlmeWRWOGtuMVJadS9WQjg4S2I4Z3NVWHAwTFlEWUROL0NnL1NxK1pIc1hYZ2lEcldsNmVYSzVQSFowOS8rSTNqaCs2LzRFN2YvZmRoK3YxYWI3Ynp6aEVvWDNXZDZWM1NGcnFmV1E0VlBMT2NXcnFqblVwYjRRUnZFUENHQUEzQm00RUhJSjNnUS91Kzl2Lzl0cXhHOTkyVTkvK04zeHY5OUNCTjlSNmhyNHJxL1h1VjJtOVhCQ1ZYMTNtdHdxVU5JUGdGR0ljNWNkUHRUSUFxckNWY3hLdDBxNFVqcll4NEZNRGdHQk5xUlJ3NVhJbGFrcEw4NjBYcG9IUTgzeWJpYStSMTJnNlhXaHJOT3pSSXpsbTk2bkphQUNFODluZlBqS2pPT2tvUE4rZ1pNWW5ySC9VZFZHZm9uaDVlV0htK2ZucGM0ZlB2M0Q0OFdjZXV2T3ByMy8yOTA4cWxkL3Fvd2s0Wm5WWGRJZmczSmNWMzd2ZklUUjJsUE9HN1NpbVNzdzRqMEQzR0FEQzlGL1pZd1RBT2ZTOGRBNWwrclV5MkR2eStwOTh4ZUJWTjEvWHMrZFYxM1gzNzN0VlY5L3dLN3E2Ky9kMzFmcjJOR3ExNFM1RjFHdTlkdXBZcGVoQlZnRDRTUTB5WHdHZ1RPdTZqZVJabDBqN01wZ0IwRXlYR2dCVEZyWFRaczBFdWhGWUMzcGFXdGFOU0JOT1RUQjhwQzlRMUplbXBlRlNYaStUMDFGZVp2a3g3Y2lqNE16UnJBQXNIM0tYVjdpZU5aYm1hNDNsNmF5eE1MRzhPUC95MHNMMFMvTlQ1MStZdW5EeStYUEhIajl4N0xHN1R4MTk1SjZMS3NGemUwcENBdWZLN2NxZlFrOXp4WTgxMmdvZ2xBNjBQTHpqb0RkeXh6RldZaWpsazdCN2xEdjFaV05BbXVNODdHV3BnZzdEa2RiYk83U252Ly9nelVPOTQ5ODkzTFBudXVHKzBZTWpYUU5qSXowRGU0ZXk3c0doNFpHQndhR3hnZjdaK1o3K3VibGFmNjI3cDBjZks5QXFRZytndW1yYVRxcnBSMmthZ2h4STBQZERPWlRRMEYwemYxVFJXS2J1SGVIRWViWkh5K1pGeldOVGx5UlFzU2ZHRFpwQ2kwdFRYdUVSanVFSWswZnhwcndSaHlLYVlwS2ZzSmZ6ZE1VaFpuUVZOT01LVkxyUWVWbkpVcUpqajZXcm9mclVSeEtpQkN1MEh1TjBMVW1PVXJqbEpSWFR6OHd1TERVYWk0dURBOHZ6V1dOeGZ2TFMzUHpTL056c1luMTJabUhxd3N6Q3pLV3BtWW5UVXhObmowOWZQUFhNOU9uamZ6VXpNekV4cCtxNFowZHhjVlNQWXp5NE1xUGNoRjNKVStoNG9KY0J1bGZRSFBFZDdlaWozZVJTZmdtN3B3TnRERVdJMGpzT1dJNm5hZER3c2dvYVRTRE9PNVE4M3BrZUJ1SWNsc09XV0VwM1hBVTNMZ0dYZTFvaXhYbllZWnFQc1BkUDJtL2tkZVgxTVBIVXV3RndYRG51NVlEdUZUUkhmRmM0Rjg2dVlEWmhNdVdiY09wZG1WUFlTdUU5bmJKcE9LWGxZYW9takhOWURsdGlLZDF4Rld5UEJGb3BWaG5uY1dBNTdEaUhiZ1JTV0E2N0FTaVg4VGpRWFJwMjNJNkc2V0RlMFl5dXdsektQK0gxZktyb2FiaFZPYXAwdklkYlFYQ3BvMHpsT2lPQnRSVE0wMXJCRkVlNDdGM3B3YWRoajlNYThMaTBiTUFVaHNianV3Wit1d3pXdEIwZUJwYkRhK0hLZWVuRWN2NjBZejEvaWl1SE41S25YS2FLcjVRQVNyY1JsK2J6c0NzczVWdUZIZWN3elZmR2VSb1FSL3F1ZHQ5T0E1UzIwQ0hsTm5rY21JYnB1TlZ3cExrcmwzRTgwTk5TWEJwZUx6M05XNFZYbDhCNml0WXEzWEVPb2U3aGpjQnlIdWZPOFI3ZjFmRGJmWUNXMjVmR054S21jOU44YVdldmhrL3pWT0h0bFVBcjVVeHhhUmpPUE80d3hhV2NrMDUvcC9uUzlGMGIvazRaeE41NWE3VzNuTGFWTXJ0MklPeHl4dGRTek5YUzFzTDdXRmd0enk0WFY4RytON1RBZkdlRkxyZjlsMXYrTzB2YW5XdnQ1U3JxNVpidlhNczZUTGthd0JzVGNDV25qY2xwcCtYNmpsWHNuZFlSRlQrVkJDb0pWQktvSkZCSm9KSkFKWUZLQXBVRUtnbFVFcWdrVUVtZ2trQWxnVW9DbFFRcUNWUVNxQ1JRU2FDU1FDV0JTZ0tWQkNvSlZCS29KRkJKb0pKQUpZRktBcFVFS2dsVUVxZ2tVRW1na2tBbGdVb0NsUVFxQ1ZRU3FDUlFTYUNTUUNXQlNnS1ZCQ29KVkJLb0pGQkpvSkpBSllGS0FwVUVLZ2xVRXFna1VFbWdrc0RHSmZEL0FiUEhaeUY3ZWlnRkFBQUFBRWxGVGtTdVFtQ0MiPgo8c3R5bGU+KiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94fWh0bWwsYm9keXttYXJnaW46MDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59PC9zdHlsZT4KPC9oZWFkPjxib2R5Pgo8ZGl2IGlkPSJyb290Ij48L2Rpdj4KPCEtLV9fU0lNX1BSRVZJRVdfQ09ORklHX18tLT4KPHNjcmlwdCB0eXBlPSJtb2R1bGUiPnZhciBPMSxJLEE5LGw4LGIwLFU5LHc5LEk5LGYxLEgxLGUwLGs5LGExLGQxLHUxLFQ5LEYxPXt9LEQxPVtdLG84PS9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2ksWDE9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBNMChYLEcpe2Zvcih2YXIgSiBpbiBHKVhbSl09R1tKXTtyZXR1cm4gWH1mdW5jdGlvbiBsMShYKXtYJiZYLnBhcmVudE5vZGUmJlgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChYKX1mdW5jdGlvbiBPMChYLEcsSil7dmFyIFkscSxaLCQ9e307Zm9yKFogaW4gRylaPT0ia2V5Ij9ZPUdbWl06Wj09InJlZiI/cT1HW1pdOiRbWl09R1taXTtpZihhcmd1bWVudHMubGVuZ3RoPjImJigkLmNoaWxkcmVuPWFyZ3VtZW50cy5sZW5ndGg+Mz9PMS5jYWxsKGFyZ3VtZW50cywyKTpKKSx0eXBlb2YgWD09ImZ1bmN0aW9uIiYmWC5kZWZhdWx0UHJvcHMhPW51bGwpZm9yKFogaW4gWC5kZWZhdWx0UHJvcHMpJFtaXT09PXZvaWQgMCYmKCRbWl09WC5kZWZhdWx0UHJvcHNbWl0pO3JldHVybiBCMShYLCQsWSxxLG51bGwpfWZ1bmN0aW9uIEIxKFgsRyxKLFkscSl7dmFyIFo9e3R5cGU6WCxwcm9wczpHLGtleTpKLHJlZjpZLF9fazpudWxsLF9fOm51bGwsX19iOjAsX19lOm51bGwsX19jOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjpxPT1udWxsPysrQTk6cSxfX2k6LTEsX191OjB9O3JldHVybiBxPT1udWxsJiZJLnZub2RlIT1udWxsJiZJLnZub2RlKFopLFp9ZnVuY3Rpb24gYShYKXtyZXR1cm4gWC5jaGlsZHJlbn1mdW5jdGlvbiBlKFgsRyl7dGhpcy5wcm9wcz1YLHRoaXMuY29udGV4dD1HfWZ1bmN0aW9uIGMwKFgsRyl7aWYoRz09bnVsbClyZXR1cm4gWC5fXz9jMChYLl9fLFguX19pKzEpOm51bGw7Zm9yKHZhciBKO0c8WC5fX2subGVuZ3RoO0crKylpZigoSj1YLl9fa1tHXSkhPW51bGwmJkouX19lIT1udWxsKXJldHVybiBKLl9fZTtyZXR1cm4gdHlwZW9mIFgudHlwZT09ImZ1bmN0aW9uIj9jMChYKTpudWxsfWZ1bmN0aW9uIHI4KFgpe2lmKFguX19QJiZYLl9fZCl7dmFyIEc9WC5fX3YsSj1HLl9fZSxZPVtdLHE9W10sWj1NMCh7fSxHKTtaLl9fdj1HLl9fdisxLEkudm5vZGUmJkkudm5vZGUoWiksbzEoWC5fX1AsWixHLFguX19uLFguX19QLm5hbWVzcGFjZVVSSSwzMiZHLl9fdT9bSl06bnVsbCxZLEo9PW51bGw/YzAoRyk6SiwhISgzMiZHLl9fdSkscSksWi5fX3Y9Ry5fX3YsWi5fXy5fX2tbWi5fX2ldPVosYjkoWSxaLHEpLEcuX19lPUcuX189bnVsbCxaLl9fZSE9SiYmRTkoWil9fWZ1bmN0aW9uIEU5KFgpe2lmKChYPVguX18pIT1udWxsJiZYLl9fYyE9bnVsbClyZXR1cm4gWC5fX2U9WC5fX2MuYmFzZT1udWxsLFguX19rLnNvbWUoZnVuY3Rpb24oRyl7aWYoRyE9bnVsbCYmRy5fX2UhPW51bGwpcmV0dXJuIFguX19lPVguX19jLmJhc2U9Ry5fX2V9KSxFOShYKX1mdW5jdGlvbiBjMShYKXsoIVguX19kJiYoWC5fX2Q9ITApJiZiMC5wdXNoKFgpJiYhTjEuX19yKyt8fFU5IT1JLmRlYm91bmNlUmVuZGVyaW5nKSYmKChVOT1JLmRlYm91bmNlUmVuZGVyaW5nKXx8dzkpKE4xKX1mdW5jdGlvbiBOMSgpe3RyeXtmb3IodmFyIFgsRz0xO2IwLmxlbmd0aDspYjAubGVuZ3RoPkcmJmIwLnNvcnQoSTkpLFg9YjAuc2hpZnQoKSxHPWIwLmxlbmd0aCxyOChYKX1maW5hbGx5e2IwLmxlbmd0aD1OMS5fX3I9MH19ZnVuY3Rpb24gQzkoWCxHLEosWSxxLFosJCxWLEssXyxIKXt2YXIgeixMLEIsTSxOLE8sUCxBPVkmJlkuX19rfHxEMSx2PUcubGVuZ3RoO2ZvcihLPXM4KEosRyxBLEssdiksej0wO3o8djt6KyspKEI9Si5fX2tbel0pIT1udWxsJiYoTD1CLl9faSE9LTEmJkFbQi5fX2ldfHxGMSxCLl9faT16LE89bzEoWCxCLEwscSxaLCQsVixLLF8sSCksTT1CLl9fZSxCLnJlZiYmTC5yZWYhPUIucmVmJiYoTC5yZWYmJnIxKEwucmVmLG51bGwsQiksSC5wdXNoKEIucmVmLEIuX19jfHxNLEIpKSxOPT1udWxsJiZNIT1udWxsJiYoTj1NKSwoUD0hISg0JkIuX191KSl8fEwuX19rPT09Qi5fX2s/KEs9UjkoQixLLFgsUCksUCYmTC5fX2UmJihMLl9fZT1udWxsKSk6dHlwZW9mIEIudHlwZT09ImZ1bmN0aW9uIiYmTyE9PXZvaWQgMD9LPU86TSYmKEs9TS5uZXh0U2libGluZyksQi5fX3UmPS03KTtyZXR1cm4gSi5fX2U9TixLfWZ1bmN0aW9uIHM4KFgsRyxKLFkscSl7dmFyIFosJCxWLEssXyxIPUoubGVuZ3RoLHo9SCxMPTA7Zm9yKFguX19rPUFycmF5KHEpLFo9MDtaPHE7WisrKSgkPUdbWl0pIT1udWxsJiZ0eXBlb2YgJCE9ImJvb2xlYW4iJiZ0eXBlb2YgJCE9ImZ1bmN0aW9uIj8odHlwZW9mICQ9PSJzdHJpbmcifHx0eXBlb2YgJD09Im51bWJlciJ8fHR5cGVvZiAkPT0iYmlnaW50Inx8JC5jb25zdHJ1Y3Rvcj09U3RyaW5nPyQ9WC5fX2tbWl09QjEobnVsbCwkLG51bGwsbnVsbCxudWxsKTpYMSgkKT8kPVguX19rW1pdPUIxKGEse2NoaWxkcmVuOiR9LG51bGwsbnVsbCxudWxsKTokLmNvbnN0cnVjdG9yPT09dm9pZCAwJiYkLl9fYj4wPyQ9WC5fX2tbWl09QjEoJC50eXBlLCQucHJvcHMsJC5rZXksJC5yZWY/JC5yZWY6bnVsbCwkLl9fdik6WC5fX2tbWl09JCxLPVorTCwkLl9fPVgsJC5fX2I9WC5fX2IrMSxWPW51bGwsKF89JC5fX2k9dDgoJCxKLEsseikpIT0tMSYmKHotLSwoVj1KW19dKSYmKFYuX191fD0yKSksVj09bnVsbHx8Vi5fX3Y9PW51bGw/KF89PS0xJiYocT5IP0wtLTpxPEgmJkwrKyksdHlwZW9mICQudHlwZSE9ImZ1bmN0aW9uIiYmKCQuX191fD00KSk6XyE9SyYmKF89PUstMT9MLS06Xz09SysxP0wrKzooXz5LP0wtLTpMKyssJC5fX3V8PTQpKSk6WC5fX2tbWl09bnVsbDtpZih6KWZvcihaPTA7WjxIO1orKykoVj1KW1pdKSE9bnVsbCYmKDImVi5fX3UpPT0wJiYoVi5fX2U9PVkmJihZPWMwKFYpKSxTOShWLFYpKTtyZXR1cm4gWX1mdW5jdGlvbiBSOShYLEcsSixZKXt2YXIgcSxaO2lmKHR5cGVvZiBYLnR5cGU9PSJmdW5jdGlvbiIpe2ZvcihxPVguX19rLFo9MDtxJiZaPHEubGVuZ3RoO1orKylxW1pdJiYocVtaXS5fXz1YLEc9UjkocVtaXSxHLEosWSkpO3JldHVybiBHfVguX19lIT1HJiYoWSYmKEcmJlgudHlwZSYmIUcucGFyZW50Tm9kZSYmKEc9YzAoWCkpLEouaW5zZXJ0QmVmb3JlKFguX19lLEd8fG51bGwpKSxHPVguX19lKTtkbyBHPUcmJkcubmV4dFNpYmxpbmc7d2hpbGUoRyE9bnVsbCYmRy5ub2RlVHlwZT09OCk7cmV0dXJuIEd9ZnVuY3Rpb24gQTAoWCxHKXtyZXR1cm4gRz1HfHxbXSxYPT1udWxsfHx0eXBlb2YgWD09ImJvb2xlYW4ifHwoWDEoWCk/WC5zb21lKGZ1bmN0aW9uKEope0EwKEosRyl9KTpHLnB1c2goWCkpLEd9ZnVuY3Rpb24gdDgoWCxHLEosWSl7dmFyIHEsWiwkLFY9WC5rZXksSz1YLnR5cGUsXz1HW0pdLEg9XyE9bnVsbCYmKDImXy5fX3UpPT0wO2lmKF89PT1udWxsJiZWPT1udWxsfHxIJiZWPT1fLmtleSYmSz09Xy50eXBlKXJldHVybiBKO2lmKFk+KEg/MTowKSl7Zm9yKHE9Si0xLFo9SisxO3E+PTB8fFo8Ry5sZW5ndGg7KWlmKChfPUdbJD1xPj0wP3EtLTpaKytdKSE9bnVsbCYmKDImXy5fX3UpPT0wJiZWPT1fLmtleSYmSz09Xy50eXBlKXJldHVybiAkfXJldHVybi0xfWZ1bmN0aW9uIFA5KFgsRyxKKXtHWzBdPT0iLSI/WC5zZXRQcm9wZXJ0eShHLEo9PW51bGw/IiI6Sik6WFtHXT1KPT1udWxsPyIiOnR5cGVvZiBKIT0ibnVtYmVyInx8bzgudGVzdChHKT9KOkorInB4In1mdW5jdGlvbiBMMShYLEcsSixZLHEpe3ZhciBaLCQ7WDppZihHPT0ic3R5bGUiKWlmKHR5cGVvZiBKPT0ic3RyaW5nIilYLnN0eWxlLmNzc1RleHQ9SjtlbHNle2lmKHR5cGVvZiBZPT0ic3RyaW5nIiYmKFguc3R5bGUuY3NzVGV4dD1ZPSIiKSxZKWZvcihHIGluIFkpSiYmRyBpbiBKfHxQOShYLnN0eWxlLEcsIiIpO2lmKEopZm9yKEcgaW4gSilZJiZKW0ddPT1ZW0ddfHxQOShYLnN0eWxlLEcsSltHXSl9ZWxzZSBpZihHWzBdPT0ibyImJkdbMV09PSJuIilaPUchPShHPUcucmVwbGFjZShrOSwiJDEiKSksJD1HLnRvTG93ZXJDYXNlKCksRz0kIGluIFh8fEc9PSJvbkZvY3VzT3V0Inx8Rz09Im9uRm9jdXNJbiI/JC5zbGljZSgyKTpHLnNsaWNlKDIpLFgubHx8KFgubD17fSksWC5sW0crWl09SixKP1k/SltlMF09WVtlMF06KEpbZTBdPWExLFguYWRkRXZlbnRMaXN0ZW5lcihHLFo/dTE6ZDEsWikpOlgucmVtb3ZlRXZlbnRMaXN0ZW5lcihHLFo/dTE6ZDEsWik7ZWxzZXtpZihxPT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKUc9Ry5yZXBsYWNlKC94bGluayhIfDpoKS8sImgiKS5yZXBsYWNlKC9zTmFtZSQvLCJzIik7ZWxzZSBpZihHIT0id2lkdGgiJiZHIT0iaGVpZ2h0IiYmRyE9ImhyZWYiJiZHIT0ibGlzdCImJkchPSJmb3JtIiYmRyE9InRhYkluZGV4IiYmRyE9ImRvd25sb2FkIiYmRyE9InJvd1NwYW4iJiZHIT0iY29sU3BhbiImJkchPSJyb2xlIiYmRyE9InBvcG92ZXIiJiZHIGluIFgpdHJ5e1hbR109Sj09bnVsbD8iIjpKO2JyZWFrIFh9Y2F0Y2goVil7fXR5cGVvZiBKPT0iZnVuY3Rpb24ifHwoSj09bnVsbHx8Sj09PSExJiZHWzRdIT0iLSI/WC5yZW1vdmVBdHRyaWJ1dGUoRyk6WC5zZXRBdHRyaWJ1dGUoRyxHPT0icG9wb3ZlciImJko9PTE/IiI6SikpfX1mdW5jdGlvbiBNOShYKXtyZXR1cm4gZnVuY3Rpb24oRyl7aWYodGhpcy5sKXt2YXIgSj10aGlzLmxbRy50eXBlK1hdO2lmKEdbSDFdPT1udWxsKUdbSDFdPWExKys7ZWxzZSBpZihHW0gxXTxKW2UwXSlyZXR1cm47cmV0dXJuIEooSS5ldmVudD9JLmV2ZW50KEcpOkcpfX19ZnVuY3Rpb24gbzEoWCxHLEosWSxxLFosJCxWLEssXyl7dmFyIEgseixMLEIsTSxOLE8sUCxBLHYseSx1LHAsYyx6MCxzPUcudHlwZTtpZihHLmNvbnN0cnVjdG9yIT09dm9pZCAwKXJldHVybiBudWxsOzEyOCZKLl9fdSYmKEs9ISEoMzImSi5fX3UpLFo9W1Y9Ry5fX2U9Si5fX2VdKSwoSD1JLl9fYikmJkgoRyk7WDppZih0eXBlb2Ygcz09ImZ1bmN0aW9uIil0cnl7aWYoUD1HLnByb3BzLEE9cy5wcm90b3R5cGUmJnMucHJvdG90eXBlLnJlbmRlcix2PShIPXMuY29udGV4dFR5cGUpJiZZW0guX19jXSx5PUg/dj92LnByb3BzLnZhbHVlOkguX186WSxKLl9fYz9PPSh6PUcuX19jPUouX19jKS5fXz16Ll9fRTooQT9HLl9fYz16PW5ldyBzKFAseSk6KEcuX19jPXo9bmV3IGUoUCx5KSx6LmNvbnN0cnVjdG9yPXMsei5yZW5kZXI9ZTgpLHYmJnYuc3ViKHopLHouc3RhdGV8fCh6LnN0YXRlPXt9KSx6Ll9fbj1ZLEw9ei5fX2Q9ITAsei5fX2g9W10sei5fc2I9W10pLEEmJnouX19zPT1udWxsJiYoei5fX3M9ei5zdGF0ZSksQSYmcy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMhPW51bGwmJih6Ll9fcz09ei5zdGF0ZSYmKHouX19zPU0wKHt9LHouX19zKSksTTAoei5fX3Mscy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoUCx6Ll9fcykpKSxCPXoucHJvcHMsTT16LnN0YXRlLHouX192PUcsTClBJiZzLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz09bnVsbCYmei5jb21wb25lbnRXaWxsTW91bnQhPW51bGwmJnouY29tcG9uZW50V2lsbE1vdW50KCksQSYmei5jb21wb25lbnREaWRNb3VudCE9bnVsbCYmei5fX2gucHVzaCh6LmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKEEmJnMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT1udWxsJiZQIT09QiYmei5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT1udWxsJiZ6LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoUCx5KSxHLl9fdj09Si5fX3Z8fCF6Ll9fZSYmei5zaG91bGRDb21wb25lbnRVcGRhdGUhPW51bGwmJnouc2hvdWxkQ29tcG9uZW50VXBkYXRlKFAsei5fX3MseSk9PT0hMSl7Ry5fX3YhPUouX192JiYoei5wcm9wcz1QLHouc3RhdGU9ei5fX3Msei5fX2Q9ITEpLEcuX19lPUouX19lLEcuX19rPUouX19rLEcuX19rLnNvbWUoZnVuY3Rpb24odCl7dCYmKHQuX189Ryl9KSxEMS5wdXNoLmFwcGx5KHouX19oLHouX3NiKSx6Ll9zYj1bXSx6Ll9faC5sZW5ndGgmJiQucHVzaCh6KTticmVhayBYfXouY29tcG9uZW50V2lsbFVwZGF0ZSE9bnVsbCYmei5jb21wb25lbnRXaWxsVXBkYXRlKFAsei5fX3MseSksQSYmei5jb21wb25lbnREaWRVcGRhdGUhPW51bGwmJnouX19oLnB1c2goZnVuY3Rpb24oKXt6LmNvbXBvbmVudERpZFVwZGF0ZShCLE0sTil9KX1pZih6LmNvbnRleHQ9eSx6LnByb3BzPVAsei5fX1A9WCx6Ll9fZT0hMSx1PUkuX19yLHA9MCxBKXouc3RhdGU9ei5fX3Msei5fX2Q9ITEsdSYmdShHKSxIPXoucmVuZGVyKHoucHJvcHMsei5zdGF0ZSx6LmNvbnRleHQpLEQxLnB1c2guYXBwbHkoei5fX2gsei5fc2IpLHouX3NiPVtdO2Vsc2UgZG8gei5fX2Q9ITEsdSYmdShHKSxIPXoucmVuZGVyKHoucHJvcHMsei5zdGF0ZSx6LmNvbnRleHQpLHouc3RhdGU9ei5fX3M7d2hpbGUoei5fX2QmJisrcDwyNSk7ei5zdGF0ZT16Ll9fcyx6LmdldENoaWxkQ29udGV4dCE9bnVsbCYmKFk9TTAoTTAoe30sWSksei5nZXRDaGlsZENvbnRleHQoKSkpLEEmJiFMJiZ6LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIT1udWxsJiYoTj16LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKEIsTSkpLGM9SCE9bnVsbCYmSC50eXBlPT09YSYmSC5rZXk9PW51bGw/ajkoSC5wcm9wcy5jaGlsZHJlbik6SCxWPUM5KFgsWDEoYyk/YzpbY10sRyxKLFkscSxaLCQsVixLLF8pLHouYmFzZT1HLl9fZSxHLl9fdSY9LTE2MSx6Ll9faC5sZW5ndGgmJiQucHVzaCh6KSxPJiYoei5fX0U9ei5fXz1udWxsKX1jYXRjaCh0KXtpZihHLl9fdj1udWxsLEt8fFohPW51bGwpaWYodC50aGVuKXtmb3IoRy5fX3V8PUs/MTYwOjEyODtWJiZWLm5vZGVUeXBlPT04JiZWLm5leHRTaWJsaW5nOylWPVYubmV4dFNpYmxpbmc7WltaLmluZGV4T2YoVildPW51bGwsRy5fX2U9Vn1lbHNle2Zvcih6MD1aLmxlbmd0aDt6MC0tOylsMShaW3owXSk7aTEoRyl9ZWxzZSBHLl9fZT1KLl9fZSxHLl9faz1KLl9fayx0LnRoZW58fGkxKEcpO0kuX19lKHQsRyxKKX1lbHNlIFo9PW51bGwmJkcuX192PT1KLl9fdj8oRy5fX2s9Si5fX2ssRy5fX2U9Si5fX2UpOlY9Ry5fX2U9bjgoSi5fX2UsRyxKLFkscSxaLCQsSyxfKTtyZXR1cm4oSD1JLmRpZmZlZCkmJkgoRyksMTI4JkcuX191P3ZvaWQgMDpWfWZ1bmN0aW9uIGkxKFgpe1gmJihYLl9fYyYmKFguX19jLl9fZT0hMCksWC5fX2smJlguX19rLnNvbWUoaTEpKX1mdW5jdGlvbiBiOShYLEcsSil7Zm9yKHZhciBZPTA7WTxKLmxlbmd0aDtZKyspcjEoSltZXSxKWysrWV0sSlsrK1ldKTtJLl9fYyYmSS5fX2MoRyxYKSxYLnNvbWUoZnVuY3Rpb24ocSl7dHJ5e1g9cS5fX2gscS5fX2g9W10sWC5zb21lKGZ1bmN0aW9uKFope1ouY2FsbChxKX0pfWNhdGNoKFope0kuX19lKFoscS5fX3YpfX0pfWZ1bmN0aW9uIGo5KFgpe3JldHVybiB0eXBlb2YgWCE9Im9iamVjdCJ8fFg9PW51bGx8fFguX19iPjA/WDpYMShYKT9YLm1hcChqOSk6TTAoe30sWCl9ZnVuY3Rpb24gbjgoWCxHLEosWSxxLFosJCxWLEspe3ZhciBfLEgseixMLEIsTSxOLE89Si5wcm9wc3x8RjEsUD1HLnByb3BzLEE9Ry50eXBlO2lmKEE9PSJzdmciP3E9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjpBPT0ibWF0aCI/cT0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI6cXx8KHE9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiKSxaIT1udWxsKXtmb3IoXz0wO188Wi5sZW5ndGg7XysrKWlmKChCPVpbX10pJiYic2V0QXR0cmlidXRlImluIEI9PSEhQSYmKEE/Qi5sb2NhbE5hbWU9PUE6Qi5ub2RlVHlwZT09Mykpe1g9QixaW19dPW51bGw7YnJlYWt9fWlmKFg9PW51bGwpe2lmKEE9PW51bGwpcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFApO1g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHEsQSxQLmlzJiZQKSxWJiYoSS5fX20mJkkuX19tKEcsWiksVj0hMSksWj1udWxsfWlmKEE9PW51bGwpTz09PVB8fFYmJlguZGF0YT09UHx8KFguZGF0YT1QKTtlbHNle2lmKFo9WiYmTzEuY2FsbChYLmNoaWxkTm9kZXMpLCFWJiZaIT1udWxsKWZvcihPPXt9LF89MDtfPFguYXR0cmlidXRlcy5sZW5ndGg7XysrKU9bKEI9WC5hdHRyaWJ1dGVzW19dKS5uYW1lXT1CLnZhbHVlO2ZvcihfIGluIE8pQj1PW19dLF89PSJkYW5nZXJvdXNseVNldElubmVySFRNTCI/ej1COl89PSJjaGlsZHJlbiJ8fChfIGluIFApfHxfPT0idmFsdWUiJiYoImRlZmF1bHRWYWx1ZSJpbiBQKXx8Xz09ImNoZWNrZWQiJiYoImRlZmF1bHRDaGVja2VkImluIFApfHxMMShYLF8sbnVsbCxCLHEpO2ZvcihfIGluIFApQj1QW19dLF89PSJjaGlsZHJlbiI/TD1COl89PSJkYW5nZXJvdXNseVNldElubmVySFRNTCI/SD1COl89PSJ2YWx1ZSI/TT1COl89PSJjaGVja2VkIj9OPUI6ViYmdHlwZW9mIEIhPSJmdW5jdGlvbiJ8fE9bX109PT1CfHxMMShYLF8sQixPW19dLHEpO2lmKEgpVnx8eiYmKEguX19odG1sPT16Ll9faHRtbHx8SC5fX2h0bWw9PVguaW5uZXJIVE1MKXx8KFguaW5uZXJIVE1MPUguX19odG1sKSxHLl9faz1bXTtlbHNlIGlmKHomJihYLmlubmVySFRNTD0iIiksQzkoRy50eXBlPT0idGVtcGxhdGUiP1guY29udGVudDpYLFgxKEwpP0w6W0xdLEcsSixZLEE9PSJmb3JlaWduT2JqZWN0Ij8iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI6cSxaLCQsWj9aWzBdOkouX19rJiZjMChKLDApLFYsSyksWiE9bnVsbClmb3IoXz1aLmxlbmd0aDtfLS07KWwxKFpbX10pO1Z8fChfPSJ2YWx1ZSIsQT09InByb2dyZXNzIiYmTT09bnVsbD9YLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTpNIT1udWxsJiYoTSE9PVhbX118fEE9PSJwcm9ncmVzcyImJiFNfHxBPT0ib3B0aW9uIiYmTSE9T1tfXSkmJkwxKFgsXyxNLE9bX10scSksXz0iY2hlY2tlZCIsTiE9bnVsbCYmTiE9WFtfXSYmTDEoWCxfLE4sT1tfXSxxKSl9cmV0dXJuIFh9ZnVuY3Rpb24gcjEoWCxHLEope3RyeXtpZih0eXBlb2YgWD09ImZ1bmN0aW9uIil7dmFyIFk9dHlwZW9mIFguX191PT0iZnVuY3Rpb24iO1kmJlguX191KCksWSYmRz09bnVsbHx8KFguX191PVgoRykpfWVsc2UgWC5jdXJyZW50PUd9Y2F0Y2gocSl7SS5fX2UocSxKKX19ZnVuY3Rpb24gUzkoWCxHLEope3ZhciBZLHE7aWYoSS51bm1vdW50JiZJLnVubW91bnQoWCksKFk9WC5yZWYpJiYoWS5jdXJyZW50JiZZLmN1cnJlbnQhPVguX19lfHxyMShZLG51bGwsRykpLChZPVguX19jKSE9bnVsbCl7aWYoWS5jb21wb25lbnRXaWxsVW5tb3VudCl0cnl7WS5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKFope0kuX19lKFosRyl9WS5iYXNlPVkuX19QPW51bGx9aWYoWT1YLl9faylmb3IocT0wO3E8WS5sZW5ndGg7cSsrKVlbcV0mJlM5KFlbcV0sRyxKfHx0eXBlb2YgWC50eXBlIT0iZnVuY3Rpb24iKTtKfHxsMShYLl9fZSksWC5fX2M9WC5fXz1YLl9fZT12b2lkIDB9ZnVuY3Rpb24gZTgoWCxHLEope3JldHVybiB0aGlzLmNvbnN0cnVjdG9yKFgsSil9ZnVuY3Rpb24gVTEoWCxHLEope3ZhciBZLHEsWiwkO0c9PWRvY3VtZW50JiYoRz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLEkuX18mJkkuX18oWCxHKSxxPShZPXR5cGVvZiBKPT0iZnVuY3Rpb24iKT9udWxsOkomJkouX19rfHxHLl9fayxaPVtdLCQ9W10sbzEoRyxYPSghWSYmSnx8RykuX19rPU8wKGEsbnVsbCxbWF0pLHF8fEYxLEYxLEcubmFtZXNwYWNlVVJJLCFZJiZKP1tKXTpxP251bGw6Ry5maXJzdENoaWxkP08xLmNhbGwoRy5jaGlsZE5vZGVzKTpudWxsLFosIVkmJko/SjpxP3EuX19lOkcuZmlyc3RDaGlsZCxZLCQpLGI5KFosWCwkKX1mdW5jdGlvbiB3MChYKXtmdW5jdGlvbiBHKEope3ZhciBZLHE7cmV0dXJuIHRoaXMuZ2V0Q2hpbGRDb250ZXh0fHwoWT1uZXcgU2V0LChxPXt9KVtHLl9fY109dGhpcyx0aGlzLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiBxfSx0aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7WT1udWxsfSx0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihaKXt0aGlzLnByb3BzLnZhbHVlIT1aLnZhbHVlJiZZLmZvckVhY2goZnVuY3Rpb24oJCl7JC5fX2U9ITAsYzEoJCl9KX0sdGhpcy5zdWI9ZnVuY3Rpb24oWil7WS5hZGQoWik7dmFyICQ9Wi5jb21wb25lbnRXaWxsVW5tb3VudDtaLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7WSYmWS5kZWxldGUoWiksJCYmJC5jYWxsKFopfX0pLEouY2hpbGRyZW59cmV0dXJuIEcuX19jPSJfX2NDIitUOSsrLEcuX189WCxHLlByb3ZpZGVyPUcuX19sPShHLkNvbnN1bWVyPWZ1bmN0aW9uKEosWSl7cmV0dXJuIEouY2hpbGRyZW4oWSl9KS5jb250ZXh0VHlwZT1HLEd9TzE9RDEuc2xpY2UsST17X19lOmZ1bmN0aW9uKFgsRyxKLFkpe2Zvcih2YXIgcSxaLCQ7Rz1HLl9fOylpZigocT1HLl9fYykmJiFxLl9fKXRyeXtpZigoWj1xLmNvbnN0cnVjdG9yKSYmWi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IhPW51bGwmJihxLnNldFN0YXRlKFouZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKFgpKSwkPXEuX19kKSxxLmNvbXBvbmVudERpZENhdGNoIT1udWxsJiYocS5jb21wb25lbnREaWRDYXRjaChYLFl8fHt9KSwkPXEuX19kKSwkKXJldHVybiBxLl9fRT1xfWNhdGNoKFYpe1g9Vn10aHJvdyBYfX0sQTk9MCxsOD1mdW5jdGlvbihYKXtyZXR1cm4gWCE9bnVsbCYmWC5jb25zdHJ1Y3Rvcj09PXZvaWQgMH0sZS5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oWCxHKXt2YXIgSjtKPXRoaXMuX19zIT1udWxsJiZ0aGlzLl9fcyE9dGhpcy5zdGF0ZT90aGlzLl9fczp0aGlzLl9fcz1NMCh7fSx0aGlzLnN0YXRlKSx0eXBlb2YgWD09ImZ1bmN0aW9uIiYmKFg9WChNMCh7fSxKKSx0aGlzLnByb3BzKSksWCYmTTAoSixYKSxYIT1udWxsJiZ0aGlzLl9fdiYmKEcmJnRoaXMuX3NiLnB1c2goRyksYzEodGhpcykpfSxlLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihYKXt0aGlzLl9fdiYmKHRoaXMuX19lPSEwLFgmJnRoaXMuX19oLnB1c2goWCksYzEodGhpcykpfSxlLnByb3RvdHlwZS5yZW5kZXI9YSxiMD1bXSx3OT10eXBlb2YgUHJvbWlzZT09ImZ1bmN0aW9uIj9Qcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpOnNldFRpbWVvdXQsSTk9ZnVuY3Rpb24oWCxHKXtyZXR1cm4gWC5fX3YuX19iLUcuX192Ll9fYn0sTjEuX19yPTAsZjE9TWF0aC5yYW5kb20oKS50b1N0cmluZyg4KSxIMT0iX19kIitmMSxlMD0iX19hIitmMSxrOT0vKFBvaW50ZXJDYXB0dXJlKSR8Q2FwdHVyZSQvaSxhMT0wLGQxPU05KCExKSx1MT1NOSghMCksVDk9MDt2YXIgaTAseCxzMSx5OSxHMT0wLGQ5PVtdLGw9SSx2OT1sLl9fYixoOT1sLl9fcixtOT1sLmRpZmZlZCxnOT1sLl9fYyx4OT1sLnVubW91bnQscDk9bC5fXztmdW5jdGlvbiBNMShYLEcpe2wuX19oJiZsLl9faCh4LFgsRzF8fEcpLEcxPTA7dmFyIEo9eC5fX0h8fCh4Ll9fSD17X186W10sX19oOltdfSk7cmV0dXJuIFg+PUouX18ubGVuZ3RoJiZKLl9fLnB1c2goe30pLEouX19bWF19ZnVuY3Rpb24gVChYKXtyZXR1cm4gRzE9MSxuMShjOSxYKX1mdW5jdGlvbiBuMShYLEcsSil7dmFyIFk9TTEoaTArKywyKTtpZihZLnQ9WCwhWS5fX2MmJihZLl9fPVtKP0ooRyk6Yzkodm9pZCAwLEcpLGZ1bmN0aW9uKFYpe3ZhciBLPVkuX19OP1kuX19OWzBdOlkuX19bMF0sXz1ZLnQoSyxWKTtLIT09XyYmKFkuX19OPVtfLFkuX19bMV1dLFkuX19jLnNldFN0YXRlKHt9KSl9XSxZLl9fYz14LCF4Ll9fZikpe3ZhciBxPWZ1bmN0aW9uKFYsSyxfKXtpZighWS5fX2MuX19IKXJldHVybiEwO3ZhciBIPVkuX19jLl9fSC5fXy5maWx0ZXIoZnVuY3Rpb24oTCl7cmV0dXJuIEwuX19jfSk7aWYoSC5ldmVyeShmdW5jdGlvbihMKXtyZXR1cm4hTC5fX059KSlyZXR1cm4hWnx8Wi5jYWxsKHRoaXMsVixLLF8pO3ZhciB6PVkuX19jLnByb3BzIT09VjtyZXR1cm4gSC5zb21lKGZ1bmN0aW9uKEwpe2lmKEwuX19OKXt2YXIgQj1MLl9fWzBdO0wuX189TC5fX04sTC5fX049dm9pZCAwLEIhPT1MLl9fWzBdJiYoej0hMCl9fSksWiYmWi5jYWxsKHRoaXMsVixLLF8pfHx6fTt4Ll9fZj0hMDt2YXJ7c2hvdWxkQ29tcG9uZW50VXBkYXRlOlosY29tcG9uZW50V2lsbFVwZGF0ZTokfT14O3guY29tcG9uZW50V2lsbFVwZGF0ZT1mdW5jdGlvbihWLEssXyl7aWYodGhpcy5fX2Upe3ZhciBIPVo7Wj12b2lkIDAscShWLEssXyksWj1IfSQmJiQuY2FsbCh0aGlzLFYsSyxfKX0seC5zaG91bGRDb21wb25lbnRVcGRhdGU9cX1yZXR1cm4gWS5fX058fFkuX199ZnVuY3Rpb24gUihYLEcpe3ZhciBKPU0xKGkwKyssMyk7IWwuX19zJiZ1OShKLl9fSCxHKSYmKEouX189WCxKLnU9Ryx4Ll9fSC5fX2gucHVzaChKKSl9ZnVuY3Rpb24gYihYKXtyZXR1cm4gRzE9NSxqMChmdW5jdGlvbigpe3JldHVybntjdXJyZW50Olh9fSxbXSl9ZnVuY3Rpb24gajAoWCxHKXt2YXIgSj1NMShpMCsrLDcpO3JldHVybiB1OShKLl9fSCxHKSYmKEouX189WCgpLEouX19IPUcsSi5fX2g9WCksSi5fX31mdW5jdGlvbiBqKFgsRyl7cmV0dXJuIEcxPTgsajAoZnVuY3Rpb24oKXtyZXR1cm4gWH0sRyl9ZnVuY3Rpb24gUzAoWCl7dmFyIEc9eC5jb250ZXh0W1guX19jXSxKPU0xKGkwKyssOSk7cmV0dXJuIEouYz1YLEc/KEouX189PW51bGwmJihKLl9fPSEwLEcuc3ViKHgpKSxHLnByb3BzLnZhbHVlKTpYLl9ffWZ1bmN0aW9uIFg0KCl7Zm9yKHZhciBYO1g9ZDkuc2hpZnQoKTspe3ZhciBHPVguX19IO2lmKFguX19QJiZHKXRyeXtHLl9faC5zb21lKFAxKSxHLl9faC5zb21lKHQxKSxHLl9faD1bXX1jYXRjaChKKXtHLl9faD1bXSxsLl9fZShKLFguX192KX19fWwuX19iPWZ1bmN0aW9uKFgpe3g9bnVsbCx2OSYmdjkoWCl9LGwuX189ZnVuY3Rpb24oWCxHKXtYJiZHLl9fayYmRy5fX2suX19tJiYoWC5fX209Ry5fX2suX19tKSxwOSYmcDkoWCxHKX0sbC5fX3I9ZnVuY3Rpb24oWCl7aDkmJmg5KFgpLGkwPTA7dmFyIEc9KHg9WC5fX2MpLl9fSDtHJiYoczE9PT14PyhHLl9faD1bXSx4Ll9faD1bXSxHLl9fLnNvbWUoZnVuY3Rpb24oSil7Si5fX04mJihKLl9fPUouX19OKSxKLnU9Si5fX049dm9pZCAwfSkpOihHLl9faC5zb21lKFAxKSxHLl9faC5zb21lKHQxKSxHLl9faD1bXSxpMD0wKSksczE9eH0sbC5kaWZmZWQ9ZnVuY3Rpb24oWCl7bTkmJm05KFgpO3ZhciBHPVguX19jO0cmJkcuX19IJiYoRy5fX0guX19oLmxlbmd0aCYmKGQ5LnB1c2goRykhPT0xJiZ5OT09PWwucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHwoKHk5PWwucmVxdWVzdEFuaW1hdGlvbkZyYW1lKXx8RzQpKFg0KSksRy5fX0guX18uc29tZShmdW5jdGlvbihKKXtKLnUmJihKLl9fSD1KLnUpLEoudT12b2lkIDB9KSksczE9eD1udWxsfSxsLl9fYz1mdW5jdGlvbihYLEcpe0cuc29tZShmdW5jdGlvbihKKXt0cnl7Si5fX2guc29tZShQMSksSi5fX2g9Si5fX2guZmlsdGVyKGZ1bmN0aW9uKFkpe3JldHVybiFZLl9ffHx0MShZKX0pfWNhdGNoKFkpe0cuc29tZShmdW5jdGlvbihxKXtxLl9faCYmKHEuX19oPVtdKX0pLEc9W10sbC5fX2UoWSxKLl9fdil9fSksZzkmJmc5KFgsRyl9LGwudW5tb3VudD1mdW5jdGlvbihYKXt4OSYmeDkoWCk7dmFyIEcsSj1YLl9fYztKJiZKLl9fSCYmKEouX19ILl9fLnNvbWUoZnVuY3Rpb24oWSl7dHJ5e1AxKFkpfWNhdGNoKHEpe0c9cX19KSxKLl9fSD12b2lkIDAsRyYmbC5fX2UoRyxKLl9fdikpfTt2YXIgZjk9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT09ImZ1bmN0aW9uIjtmdW5jdGlvbiBHNChYKXt2YXIgRyxKPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KFkpLGY5JiZjYW5jZWxBbmltYXRpb25GcmFtZShHKSxzZXRUaW1lb3V0KFgpfSxZPXNldFRpbWVvdXQoSiwzNSk7ZjkmJihHPXJlcXVlc3RBbmltYXRpb25GcmFtZShKKSl9ZnVuY3Rpb24gUDEoWCl7dmFyIEc9eCxKPVguX19jO3R5cGVvZiBKPT0iZnVuY3Rpb24iJiYoWC5fX2M9dm9pZCAwLEooKSkseD1HfWZ1bmN0aW9uIHQxKFgpe3ZhciBHPXg7WC5fX2M9WC5fXygpLHg9R31mdW5jdGlvbiB1OShYLEcpe3JldHVybiFYfHxYLmxlbmd0aCE9PUcubGVuZ3RofHxHLnNvbWUoZnVuY3Rpb24oSixZKXtyZXR1cm4gSiE9PVhbWV19KX1mdW5jdGlvbiBjOShYLEcpe3JldHVybiB0eXBlb2YgRz09ImZ1bmN0aW9uIj9HKFgpOkd9ZnVuY3Rpb24gXzQoWCxHKXtmb3IodmFyIEogaW4gRylYW0pdPUdbSl07cmV0dXJuIFh9ZnVuY3Rpb24gaTkoWCxHKXtmb3IodmFyIEogaW4gWClpZihKIT09Il9fc291cmNlIiYmIShKIGluIEcpKXJldHVybiEwO2Zvcih2YXIgWSBpbiBHKWlmKFkhPT0iX19zb3VyY2UiJiZYW1ldIT09R1tZXSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBhOShYLEcpe3RoaXMucHJvcHM9WCx0aGlzLmNvbnRleHQ9R30oYTkucHJvdG90eXBlPW5ldyBlKS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMCxhOS5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKFgsRyl7cmV0dXJuIGk5KHRoaXMucHJvcHMsWCl8fGk5KHRoaXMuc3RhdGUsRyl9O3ZhciBsOT1JLl9fYjtJLl9fYj1mdW5jdGlvbihYKXtYLnR5cGUmJlgudHlwZS5fX2YmJlgucmVmJiYoWC5wcm9wcy5yZWY9WC5yZWYsWC5yZWY9bnVsbCksbDkmJmw5KFgpfTt2YXIgVjQ9SS5fX2U7SS5fX2U9ZnVuY3Rpb24oWCxHLEosWSl7aWYoWC50aGVuKXtmb3IodmFyIHEsWj1HO1o9Wi5fXzspaWYoKHE9Wi5fX2MpJiZxLl9fYylyZXR1cm4gRy5fX2U9PW51bGwmJihHLl9fZT1KLl9fZSxHLl9faz1KLl9faykscS5fX2MoWCxHKX1WNChYLEcsSixZKX07dmFyIG85PUkudW5tb3VudDtmdW5jdGlvbiBYOChYLEcsSil7cmV0dXJuIFgmJihYLl9fYyYmWC5fX2MuX19IJiYoWC5fX2MuX19ILl9fLmZvckVhY2goZnVuY3Rpb24oWSl7dHlwZW9mIFkuX19jPT0iZnVuY3Rpb24iJiZZLl9fYygpfSksWC5fX2MuX19IPW51bGwpLChYPV80KHt9LFgpKS5fX2MhPW51bGwmJihYLl9fYy5fX1A9PT1KJiYoWC5fX2MuX19QPUcpLFguX19jLl9fZT0hMCxYLl9fYz1udWxsKSxYLl9faz1YLl9fayYmWC5fX2subWFwKGZ1bmN0aW9uKFkpe3JldHVybiBYOChZLEcsSil9KSksWH1mdW5jdGlvbiBHOChYLEcsSil7cmV0dXJuIFgmJkomJihYLl9fdj1udWxsLFguX19rPVguX19rJiZYLl9fay5tYXAoZnVuY3Rpb24oWSl7cmV0dXJuIEc4KFksRyxKKX0pLFguX19jJiZYLl9fYy5fX1A9PT1HJiYoWC5fX2UmJkouYXBwZW5kQ2hpbGQoWC5fX2UpLFguX19jLl9fZT0hMCxYLl9fYy5fX1A9SikpLFh9ZnVuY3Rpb24gZTEoKXt0aGlzLl9fdT0wLHRoaXMubz1udWxsLHRoaXMuX19iPW51bGx9ZnVuY3Rpb24gSjgoWCl7dmFyIEc9WC5fXyYmWC5fXy5fX2M7cmV0dXJuIEcmJkcuX19hJiZHLl9fYShYKX1mdW5jdGlvbiBBMSgpe3RoaXMuaT1udWxsLHRoaXMubD1udWxsfUkudW5tb3VudD1mdW5jdGlvbihYKXt2YXIgRz1YLl9fYztHJiYoRy5fX3o9ITApLEcmJkcuX19SJiZHLl9fUigpLEcmJjMyJlguX191JiYoWC50eXBlPW51bGwpLG85JiZvOShYKX0sKGUxLnByb3RvdHlwZT1uZXcgZSkuX19jPWZ1bmN0aW9uKFgsRyl7dmFyIEo9Ry5fX2MsWT10aGlzO1kubz09bnVsbCYmKFkubz1bXSksWS5vLnB1c2goSik7dmFyIHE9SjgoWS5fX3YpLFo9ITEsJD1mdW5jdGlvbigpe1p8fFkuX196fHwoWj0hMCxKLl9fUj1udWxsLHE/cShLKTpLKCkpfTtKLl9fUj0kO3ZhciBWPUouX19QO0ouX19QPW51bGw7dmFyIEs9ZnVuY3Rpb24oKXtpZighLS1ZLl9fdSl7aWYoWS5zdGF0ZS5fX2Epe3ZhciBfPVkuc3RhdGUuX19hO1kuX192Ll9fa1swXT1HOChfLF8uX19jLl9fUCxfLl9fYy5fX08pfXZhciBIO2ZvcihZLnNldFN0YXRlKHtfX2E6WS5fX2I9bnVsbH0pO0g9WS5vLnBvcCgpOylILl9fUD1WLEguZm9yY2VVcGRhdGUoKX19O1kuX191Kyt8fDMyJkcuX191fHxZLnNldFN0YXRlKHtfX2E6WS5fX2I9WS5fX3YuX19rWzBdfSksWC50aGVuKCQsJCl9LGUxLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMubz1bXX0sZTEucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihYLEcpe2lmKHRoaXMuX19iKXtpZih0aGlzLl9fdi5fX2spe3ZhciBKPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLFk9dGhpcy5fX3YuX19rWzBdLl9fYzt0aGlzLl9fdi5fX2tbMF09WDgodGhpcy5fX2IsSixZLl9fTz1ZLl9fUCl9dGhpcy5fX2I9bnVsbH12YXIgcT1HLl9fYSYmTzAoYSxudWxsLFguZmFsbGJhY2spO3JldHVybiBxJiYocS5fX3UmPS0zMyksW08wKGEsbnVsbCxHLl9fYT9udWxsOlguY2hpbGRyZW4pLHFdfTt2YXIgcjk9ZnVuY3Rpb24oWCxHLEope2lmKCsrSlsxXT09PUpbMF0mJlgubC5kZWxldGUoRyksWC5wcm9wcy5yZXZlYWxPcmRlciYmKFgucHJvcHMucmV2ZWFsT3JkZXJbMF0hPT0idCJ8fCFYLmwuc2l6ZSkpZm9yKEo9WC5pO0o7KXtmb3IoO0oubGVuZ3RoPjM7KUoucG9wKCkoKTtpZihKWzFdPEpbMF0pYnJlYWs7WC5pPUo9SlsyXX19OyhBMS5wcm90b3R5cGU9bmV3IGUpLl9fYT1mdW5jdGlvbihYKXt2YXIgRz10aGlzLEo9SjgoRy5fX3YpLFk9Ry5sLmdldChYKTtyZXR1cm4gWVswXSsrLGZ1bmN0aW9uKHEpe3ZhciBaPWZ1bmN0aW9uKCl7Ry5wcm9wcy5yZXZlYWxPcmRlcj8oWS5wdXNoKHEpLHI5KEcsWCxZKSk6cSgpfTtKP0ooWik6WigpfX0sQTEucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihYKXt0aGlzLmk9bnVsbCx0aGlzLmw9bmV3IE1hcDt2YXIgRz1BMChYLmNoaWxkcmVuKTtYLnJldmVhbE9yZGVyJiZYLnJldmVhbE9yZGVyWzBdPT09ImIiJiZHLnJldmVyc2UoKTtmb3IodmFyIEo9Ry5sZW5ndGg7Si0tOyl0aGlzLmwuc2V0KEdbSl0sdGhpcy5pPVsxLDAsdGhpcy5pXSk7cmV0dXJuIFguY2hpbGRyZW59LEExLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9QTEucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyIFg9dGhpczt0aGlzLmwuZm9yRWFjaChmdW5jdGlvbihHLEope3I5KFgsSixHKX0pfTt2YXIgejQ9dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDMsSzQ9L14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxpbWFnZSghUyl8bGV0dGVyfGxpZ2h0aW5nfG1hcmtlcig/IUh8V3xVKXxvdmVybGluZXxwYWludHxwb2ludGVyfHNoYXBlfHN0b3B8c3RyaWtldGhyb3VnaHxzdHJva2V8dGV4dCg/IUwpfHRyYW5zZm9ybXx1bmRlcmxpbmV8dW5pY29kZXx1bml0c3x2fHZlY3Rvcnx2ZXJ0fHdvcmR8d3JpdGluZ3x4KD8hQykpW0EtWl0vLFc0PS9eb24oQW5pfFRyYXxUb3V8QmVmb3JlSW5wfENvbXBvKS8sTDQ9L1tBLVowLTldL2csSDQ9dHlwZW9mIGRvY3VtZW50PCJ1IixCND1mdW5jdGlvbihYKXtyZXR1cm4odHlwZW9mIFN5bWJvbDwidSImJnR5cGVvZiBTeW1ib2woKT09InN5bWJvbCI/L2ZpbHxjaGV8cmFkLzovZmlsfGNoZXxyYS8pLnRlc3QoWCl9O2Z1bmN0aW9uIFk4KFgsRyxKKXtyZXR1cm4gRy5fX2s9PW51bGwmJihHLnRleHRDb250ZW50PSIiKSxVMShYLEcpLHR5cGVvZiBKPT0iZnVuY3Rpb24iJiZKKCksWD9YLl9fYzpudWxsfWUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9ITAsWyJjb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwiY29tcG9uZW50V2lsbFVwZGF0ZSJdLmZvckVhY2goZnVuY3Rpb24oWCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFgse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1siVU5TQUZFXyIrWF19LHNldDpmdW5jdGlvbihHKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxYLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6R30pfX0pfSk7dmFyIHM5PUkuZXZlbnQ7SS5ldmVudD1mdW5jdGlvbihYKXtyZXR1cm4gczkmJihYPXM5KFgpKSxYLnBlcnNpc3Q9ZnVuY3Rpb24oKXt9LFguaXNQcm9wYWdhdGlvblN0b3BwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWxCdWJibGV9LFguaXNEZWZhdWx0UHJldmVudGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFByZXZlbnRlZH0sWC5uYXRpdmVFdmVudD1YfTt2YXIgWjgsRjQ9e2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbGFzc319LHQ5PUkudm5vZGU7SS52bm9kZT1mdW5jdGlvbihYKXt0eXBlb2YgWC50eXBlPT0ic3RyaW5nIiYmZnVuY3Rpb24oRyl7dmFye3Byb3BzOkosdHlwZTpZfT1HLHE9e30sWj1ZLmluZGV4T2YoIi0iKT09LTE7Zm9yKHZhciAkIGluIEope3ZhciBWPUpbJF07aWYoISgkPT09InZhbHVlIiYmKCJkZWZhdWx0VmFsdWUiaW4gSikmJlY9PW51bGx8fEg0JiYkPT09ImNoaWxkcmVuIiYmWT09PSJub3NjcmlwdCJ8fCQ9PT0iY2xhc3MifHwkPT09ImNsYXNzTmFtZSIpKXt2YXIgSz0kLnRvTG93ZXJDYXNlKCk7JD09PSJkZWZhdWx0VmFsdWUiJiYidmFsdWUiaW4gSiYmSi52YWx1ZT09bnVsbD8kPSJ2YWx1ZSI6JD09PSJkb3dubG9hZCImJlY9PT0hMD9WPSIiOks9PT0idHJhbnNsYXRlIiYmVj09PSJubyI/Vj0hMTpLWzBdPT09Im8iJiZLWzFdPT09Im4iP0s9PT0ib25kb3VibGVjbGljayI/JD0ib25kYmxjbGljayI6SyE9PSJvbmNoYW5nZSJ8fFkhPT0iaW5wdXQiJiZZIT09InRleHRhcmVhInx8QjQoSi50eXBlKT9LPT09Im9uZm9jdXMiPyQ9Im9uZm9jdXNpbiI6Sz09PSJvbmJsdXIiPyQ9Im9uZm9jdXNvdXQiOlc0LnRlc3QoJCkmJigkPUspOks9JD0ib25pbnB1dCI6WiYmSzQudGVzdCgkKT8kPSQucmVwbGFjZShMNCwiLSQmIikudG9Mb3dlckNhc2UoKTpWPT09bnVsbCYmKFY9dm9pZCAwKSxLPT09Im9uaW5wdXQiJiZxWyQ9S10mJigkPSJvbmlucHV0Q2FwdHVyZSIpLHFbJF09Vn19WT09InNlbGVjdCImJihxLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KHEudmFsdWUpJiYocS52YWx1ZT1BMChKLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKF8pe18ucHJvcHMuc2VsZWN0ZWQ9cS52YWx1ZS5pbmRleE9mKF8ucHJvcHMudmFsdWUpIT0tMX0pKSxxLmRlZmF1bHRWYWx1ZSE9bnVsbCYmKHEudmFsdWU9QTAoSi5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbihfKXtfLnByb3BzLnNlbGVjdGVkPXEubXVsdGlwbGU/cS5kZWZhdWx0VmFsdWUuaW5kZXhPZihfLnByb3BzLnZhbHVlKSE9LTE6cS5kZWZhdWx0VmFsdWU9PV8ucHJvcHMudmFsdWV9KSkpLEouY2xhc3MmJiFKLmNsYXNzTmFtZT8ocS5jbGFzcz1KLmNsYXNzLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShxLCJjbGFzc05hbWUiLEY0KSk6Si5jbGFzc05hbWUmJihxLmNsYXNzPXEuY2xhc3NOYW1lPUouY2xhc3NOYW1lKSxHLnByb3BzPXF9KFgpLFguJCR0eXBlb2Y9ejQsdDkmJnQ5KFgpfTt2YXIgbjk9SS5fX3I7SS5fX3I9ZnVuY3Rpb24oWCl7bjkmJm45KFgpLFo4PVguX19jfTt2YXIgZTk9SS5kaWZmZWQ7SS5kaWZmZWQ9ZnVuY3Rpb24oWCl7ZTkmJmU5KFgpO3Zhcntwcm9wczpHLF9fZTpKfT1YO0ohPW51bGwmJlgudHlwZT09PSJ0ZXh0YXJlYSImJiJ2YWx1ZSJpbiBHJiZHLnZhbHVlIT09Si52YWx1ZSYmKEoudmFsdWU9Ry52YWx1ZT09bnVsbD8iIjpHLnZhbHVlKSxaOD1udWxsfTtmdW5jdGlvbiBxOChYKXtyZXR1cm4hIVguX19rJiYoVTEobnVsbCxYKSwhMCl9ZnVuY3Rpb24gUTgoWCl7cmV0dXJue3JlbmRlcjpmdW5jdGlvbihHKXtZOChHLFgpfSx1bm1vdW50OmZ1bmN0aW9uKCl7cTgoWCl9fX12YXIgJDg9Imh0dHBzOi8vZ2l0aHViLmNvbS9jYW1lcm9uY29va2UvQVhlIixfOD0iQVhlIGlzIG5vdCBpbnN0YWxsZWQuIEluc3RhbGwgaXQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vY2FtZXJvbmNvb2tlL0FYZS4iO2Z1bmN0aW9uIFY4KFgpe2xldCBHPVtdLEo9bmV3IE1hcDtmb3IobGV0IFkgb2YgWCl7bGV0IHE9WS5hcHBOYW1lfHxZLmJ1bmRsZUlkfHwiVW5rbm93biIsWj1ZLmJ1bmRsZUlkfHxxLCQ9Si5nZXQoWik7aWYoISQpJD17a2V5OlosYXBwTmFtZTpxLGJ1bmRsZUlkOlkuYnVuZGxlSWQsdGFyZ2V0czpbXX0sSi5zZXQoWiwkKSxHLnB1c2goWik7JC50YXJnZXRzLnB1c2goWSl9cmV0dXJuIEcubWFwKChZKT0+Si5nZXQoWSkpfWZ1bmN0aW9uIE44KFgsRyl7Zm9yKHZhciBKIGluIEcpWFtKXT1HW0pdO3JldHVybiBYfWZ1bmN0aW9uIEo5KFgsRyl7Zm9yKHZhciBKIGluIFgpaWYoSiE9PSJfX3NvdXJjZSImJiEoSiBpbiBHKSlyZXR1cm4hMDtmb3IodmFyIFkgaW4gRylpZihZIT09Il9fc291cmNlIiYmWFtZXSE9PUdbWV0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gejgoWCxHKXt0aGlzLnByb3BzPVgsdGhpcy5jb250ZXh0PUd9ZnVuY3Rpb24gWTkoWCxHKXtmdW5jdGlvbiBKKHEpe3ZhciBaPXRoaXMucHJvcHMucmVmO3JldHVybiBaIT1xLnJlZiYmWiYmKHR5cGVvZiBaPT0iZnVuY3Rpb24iP1oobnVsbCk6Wi5jdXJyZW50PW51bGwpLEc/IUcodGhpcy5wcm9wcyxxKXx8WiE9cS5yZWY6SjkodGhpcy5wcm9wcyxxKX1mdW5jdGlvbiBZKHEpe3JldHVybiB0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZT1KLE8wKFgscSl9cmV0dXJuIFkuZGlzcGxheU5hbWU9Ik1lbW8oIisoWC5kaXNwbGF5TmFtZXx8WC5uYW1lKSsiKSIsWS5fX2Y9WS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD0hMCxZLnR5cGU9WCxZfSh6OC5wcm90b3R5cGU9bmV3IGUpLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLHo4LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oWCxHKXtyZXR1cm4gSjkodGhpcy5wcm9wcyxYKXx8SjkodGhpcy5zdGF0ZSxHKX07dmFyIEs4PUkuX19iO0kuX19iPWZ1bmN0aW9uKFgpe1gudHlwZSYmWC50eXBlLl9fZiYmWC5yZWYmJihYLnByb3BzLnJlZj1YLnJlZixYLnJlZj1udWxsKSxLOCYmSzgoWCl9O3ZhciBEND10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKXx8MzkxMTtmdW5jdGlvbiBhMChYKXtmdW5jdGlvbiBHKEope3ZhciBZPU44KHt9LEopO3JldHVybiBkZWxldGUgWS5yZWYsWChZLEoucmVmfHxudWxsKX1yZXR1cm4gRy4kJHR5cGVvZj1ENCxHLnJlbmRlcj1YLEcucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9Ry5fX2Y9ITAsRy5kaXNwbGF5TmFtZT0iRm9yd2FyZFJlZigiKyhYLmRpc3BsYXlOYW1lfHxYLm5hbWUpKyIpIixHfXZhciBOND1JLl9fZTtJLl9fZT1mdW5jdGlvbihYLEcsSixZKXtpZihYLnRoZW4pe2Zvcih2YXIgcSxaPUc7Wj1aLl9fOylpZigocT1aLl9fYykmJnEuX19jKXJldHVybiBHLl9fZT09bnVsbCYmKEcuX19lPUouX19lLEcuX19rPUouX19rKSxxLl9fYyhYLEcpfU40KFgsRyxKLFkpfTt2YXIgVzg9SS51bm1vdW50O2Z1bmN0aW9uIE84KFgsRyxKKXtyZXR1cm4gWCYmKFguX19jJiZYLl9fYy5fX0gmJihYLl9fYy5fX0guX18uZm9yRWFjaChmdW5jdGlvbihZKXt0eXBlb2YgWS5fX2M9PSJmdW5jdGlvbiImJlkuX19jKCl9KSxYLl9fYy5fX0g9bnVsbCksKFg9Tjgoe30sWCkpLl9fYyE9bnVsbCYmKFguX19jLl9fUD09PUomJihYLl9fYy5fX1A9RyksWC5fX2MuX19lPSEwLFguX19jPW51bGwpLFguX19rPVguX19rJiZYLl9fay5tYXAoZnVuY3Rpb24oWSl7cmV0dXJuIE84KFksRyxKKX0pKSxYfWZ1bmN0aW9uIFU4KFgsRyxKKXtyZXR1cm4gWCYmSiYmKFguX192PW51bGwsWC5fX2s9WC5fX2smJlguX19rLm1hcChmdW5jdGlvbihZKXtyZXR1cm4gVTgoWSxHLEopfSksWC5fX2MmJlguX19jLl9fUD09PUcmJihYLl9fZSYmSi5hcHBlbmRDaGlsZChYLl9fZSksWC5fX2MuX19lPSEwLFguX19jLl9fUD1KKSksWH1mdW5jdGlvbiBHOSgpe3RoaXMuX191PTAsdGhpcy5vPW51bGwsdGhpcy5fX2I9bnVsbH1mdW5jdGlvbiBQOChYKXt2YXIgRz1YLl9fJiZYLl9fLl9fYztyZXR1cm4gRyYmRy5fX2EmJkcuX19hKFgpfWZ1bmN0aW9uIHcxKCl7dGhpcy5pPW51bGwsdGhpcy5sPW51bGx9SS51bm1vdW50PWZ1bmN0aW9uKFgpe3ZhciBHPVguX19jO0cmJihHLl9fej0hMCksRyYmRy5fX1ImJkcuX19SKCksRyYmMzImWC5fX3UmJihYLnR5cGU9bnVsbCksVzgmJlc4KFgpfSwoRzkucHJvdG90eXBlPW5ldyBlKS5fX2M9ZnVuY3Rpb24oWCxHKXt2YXIgSj1HLl9fYyxZPXRoaXM7WS5vPT1udWxsJiYoWS5vPVtdKSxZLm8ucHVzaChKKTt2YXIgcT1QOChZLl9fdiksWj0hMSwkPWZ1bmN0aW9uKCl7Wnx8WS5fX3p8fChaPSEwLEouX19SPW51bGwscT9xKEspOksoKSl9O0ouX19SPSQ7dmFyIFY9Si5fX1A7Si5fX1A9bnVsbDt2YXIgSz1mdW5jdGlvbigpe2lmKCEtLVkuX191KXtpZihZLnN0YXRlLl9fYSl7dmFyIF89WS5zdGF0ZS5fX2E7WS5fX3YuX19rWzBdPVU4KF8sXy5fX2MuX19QLF8uX19jLl9fTyl9dmFyIEg7Zm9yKFkuc2V0U3RhdGUoe19fYTpZLl9fYj1udWxsfSk7SD1ZLm8ucG9wKCk7KUguX19QPVYsSC5mb3JjZVVwZGF0ZSgpfX07WS5fX3UrK3x8MzImRy5fX3V8fFkuc2V0U3RhdGUoe19fYTpZLl9fYj1ZLl9fdi5fX2tbMF19KSxYLnRoZW4oJCwkKX0sRzkucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5vPVtdfSxHOS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKFgsRyl7aWYodGhpcy5fX2Ipe2lmKHRoaXMuX192Ll9fayl7dmFyIEo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksWT10aGlzLl9fdi5fX2tbMF0uX19jO3RoaXMuX192Ll9fa1swXT1POCh0aGlzLl9fYixKLFkuX19PPVkuX19QKX10aGlzLl9fYj1udWxsfXZhciBxPUcuX19hJiZPMChhLG51bGwsWC5mYWxsYmFjayk7cmV0dXJuIHEmJihxLl9fdSY9LTMzKSxbTzAoYSxudWxsLEcuX19hP251bGw6WC5jaGlsZHJlbikscV19O3ZhciBMOD1mdW5jdGlvbihYLEcsSil7aWYoKytKWzFdPT09SlswXSYmWC5sLmRlbGV0ZShHKSxYLnByb3BzLnJldmVhbE9yZGVyJiYoWC5wcm9wcy5yZXZlYWxPcmRlclswXSE9PSJ0Inx8IVgubC5zaXplKSlmb3IoSj1YLmk7Sjspe2Zvcig7Si5sZW5ndGg+MzspSi5wb3AoKSgpO2lmKEpbMV08SlswXSlicmVhaztYLmk9Sj1KWzJdfX07KHcxLnByb3RvdHlwZT1uZXcgZSkuX19hPWZ1bmN0aW9uKFgpe3ZhciBHPXRoaXMsSj1QOChHLl9fdiksWT1HLmwuZ2V0KFgpO3JldHVybiBZWzBdKyssZnVuY3Rpb24ocSl7dmFyIFo9ZnVuY3Rpb24oKXtHLnByb3BzLnJldmVhbE9yZGVyPyhZLnB1c2gocSksTDgoRyxYLFkpKTpxKCl9O0o/SihaKTpaKCl9fSx3MS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKFgpe3RoaXMuaT1udWxsLHRoaXMubD1uZXcgTWFwO3ZhciBHPUEwKFguY2hpbGRyZW4pO1gucmV2ZWFsT3JkZXImJlgucmV2ZWFsT3JkZXJbMF09PT0iYiImJkcucmV2ZXJzZSgpO2Zvcih2YXIgSj1HLmxlbmd0aDtKLS07KXRoaXMubC5zZXQoR1tKXSx0aGlzLmk9WzEsMCx0aGlzLmldKTtyZXR1cm4gWC5jaGlsZHJlbn0sdzEucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZT13MS5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgWD10aGlzO3RoaXMubC5mb3JFYWNoKGZ1bmN0aW9uKEcsSil7TDgoWCxKLEcpfSl9O3ZhciBPND10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMyxVND0vXig/OmFjY2VudHxhbGlnbm1lbnR8YXJhYmljfGJhc2VsaW5lfGNhcHxjbGlwKD8hUGF0aFUpfGNvbG9yfGRvbWluYW50fGZpbGx8Zmxvb2R8Zm9udHxnbHlwaCg/IVIpfGhvcml6fGltYWdlKCFTKXxsZXR0ZXJ8bGlnaHRpbmd8bWFya2VyKD8hSHxXfFUpfG92ZXJsaW5lfHBhaW50fHBvaW50ZXJ8c2hhcGV8c3RvcHxzdHJpa2V0aHJvdWdofHN0cm9rZXx0ZXh0KD8hTCl8dHJhbnNmb3JtfHVuZGVybGluZXx1bmljb2RlfHVuaXRzfHZ8dmVjdG9yfHZlcnR8d29yZHx3cml0aW5nfHgoPyFDKSlbQS1aXS8sUDQ9L15vbihBbml8VHJhfFRvdXxCZWZvcmVJbnB8Q29tcG8pLyxNND0vW0EtWjAtOV0vZyxBND10eXBlb2YgZG9jdW1lbnQ8InUiLHc0PWZ1bmN0aW9uKFgpe3JldHVybih0eXBlb2YgU3ltYm9sPCJ1IiYmdHlwZW9mIFN5bWJvbCgpPT0ic3ltYm9sIj8vZmlsfGNoZXxyYWQvOi9maWx8Y2hlfHJhLykudGVzdChYKX07ZS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD0hMCxbImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJjb21wb25lbnRXaWxsVXBkYXRlIl0uZm9yRWFjaChmdW5jdGlvbihYKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsWCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzWyJVTlNBRkVfIitYXX0sc2V0OmZ1bmN0aW9uKEcpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFgse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpHfSl9fSl9KTt2YXIgSDg9SS5ldmVudDtJLmV2ZW50PWZ1bmN0aW9uKFgpe3JldHVybiBIOCYmKFg9SDgoWCkpLFgucGVyc2lzdD1mdW5jdGlvbigpe30sWC5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbmNlbEJ1YmJsZX0sWC5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0UHJldmVudGVkfSxYLm5hdGl2ZUV2ZW50PVh9O3ZhciBNOCxJND17Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsYXNzfX0sQjg9SS52bm9kZTtJLnZub2RlPWZ1bmN0aW9uKFgpe3R5cGVvZiBYLnR5cGU9PSJzdHJpbmciJiZmdW5jdGlvbihHKXt2YXJ7cHJvcHM6Six0eXBlOll9PUcscT17fSxaPVkuaW5kZXhPZigiLSIpPT0tMTtmb3IodmFyICQgaW4gSil7dmFyIFY9SlskXTtpZighKCQ9PT0idmFsdWUiJiYoImRlZmF1bHRWYWx1ZSJpbiBKKSYmVj09bnVsbHx8QTQmJiQ9PT0iY2hpbGRyZW4iJiZZPT09Im5vc2NyaXB0Inx8JD09PSJjbGFzcyJ8fCQ9PT0iY2xhc3NOYW1lIikpe3ZhciBLPSQudG9Mb3dlckNhc2UoKTskPT09ImRlZmF1bHRWYWx1ZSImJiJ2YWx1ZSJpbiBKJiZKLnZhbHVlPT1udWxsPyQ9InZhbHVlIjokPT09ImRvd25sb2FkIiYmVj09PSEwP1Y9IiI6Sz09PSJ0cmFuc2xhdGUiJiZWPT09Im5vIj9WPSExOktbMF09PT0ibyImJktbMV09PT0ibiI/Sz09PSJvbmRvdWJsZWNsaWNrIj8kPSJvbmRibGNsaWNrIjpLIT09Im9uY2hhbmdlInx8WSE9PSJpbnB1dCImJlkhPT0idGV4dGFyZWEifHx3NChKLnR5cGUpP0s9PT0ib25mb2N1cyI/JD0ib25mb2N1c2luIjpLPT09Im9uYmx1ciI/JD0ib25mb2N1c291dCI6UDQudGVzdCgkKSYmKCQ9Syk6Sz0kPSJvbmlucHV0IjpaJiZVNC50ZXN0KCQpPyQ9JC5yZXBsYWNlKE00LCItJCYiKS50b0xvd2VyQ2FzZSgpOlY9PT1udWxsJiYoVj12b2lkIDApLEs9PT0ib25pbnB1dCImJnFbJD1LXSYmKCQ9Im9uaW5wdXRDYXB0dXJlIikscVskXT1WfX1ZPT0ic2VsZWN0IiYmKHEubXVsdGlwbGUmJkFycmF5LmlzQXJyYXkocS52YWx1ZSkmJihxLnZhbHVlPUEwKEouY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24oXyl7Xy5wcm9wcy5zZWxlY3RlZD1xLnZhbHVlLmluZGV4T2YoXy5wcm9wcy52YWx1ZSkhPS0xfSkpLHEuZGVmYXVsdFZhbHVlIT1udWxsJiYocS52YWx1ZT1BMChKLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKF8pe18ucHJvcHMuc2VsZWN0ZWQ9cS5tdWx0aXBsZT9xLmRlZmF1bHRWYWx1ZS5pbmRleE9mKF8ucHJvcHMudmFsdWUpIT0tMTpxLmRlZmF1bHRWYWx1ZT09Xy5wcm9wcy52YWx1ZX0pKSksSi5jbGFzcyYmIUouY2xhc3NOYW1lPyhxLmNsYXNzPUouY2xhc3MsT2JqZWN0LmRlZmluZVByb3BlcnR5KHEsImNsYXNzTmFtZSIsSTQpKTpKLmNsYXNzTmFtZSYmKHEuY2xhc3M9cS5jbGFzc05hbWU9Si5jbGFzc05hbWUpLEcucHJvcHM9cX0oWCksWC4kJHR5cGVvZj1PNCxCOCYmQjgoWCl9O3ZhciBGOD1JLl9fcjtJLl9fcj1mdW5jdGlvbihYKXtGOCYmRjgoWCksTTg9WC5fX2N9O3ZhciBEOD1JLmRpZmZlZDtJLmRpZmZlZD1mdW5jdGlvbihYKXtEOCYmRDgoWCk7dmFye3Byb3BzOkcsX19lOkp9PVg7SiE9bnVsbCYmWC50eXBlPT09InRleHRhcmVhIiYmInZhbHVlImluIEcmJkcudmFsdWUhPT1KLnZhbHVlJiYoSi52YWx1ZT1HLnZhbHVlPT1udWxsPyIiOkcudmFsdWUpLE04PW51bGx9O3ZhciB5MD0zO2Z1bmN0aW9uIFo5KFgpe3JldHVybiBYPT09ImxhbmRzY2FwZV9sZWZ0Inx8WD09PSJsYW5kc2NhcGVfcmlnaHQifWZ1bmN0aW9uIEoxKFgpe3JldHVybiEhWCYmKFo5KFgub3JpZW50YXRpb24pfHxYLndpZHRoPlguaGVpZ2h0KX1mdW5jdGlvbiBJMShYKXtpZighWHx8WC53aWR0aDw9MHx8WC5oZWlnaHQ8PTApcmV0dXJuIG51bGw7bGV0IEc9WjkoWC5vcmllbnRhdGlvbil8fFgud2lkdGg+WC5oZWlnaHQsSj1HP01hdGgubWF4KFgud2lkdGgsWC5oZWlnaHQpOk1hdGgubWluKFgud2lkdGgsWC5oZWlnaHQpLFk9Rz9NYXRoLm1pbihYLndpZHRoLFguaGVpZ2h0KTpNYXRoLm1heChYLndpZHRoLFguaGVpZ2h0KTtpZihKPT09WC53aWR0aCYmWT09PVguaGVpZ2h0KXJldHVybiBYO3JldHVybnsuLi5YLHdpZHRoOkosaGVpZ2h0Oll9fWZ1bmN0aW9uIFkxKFgpe2xldCBHPUkxKFgpLEo9QTgoWD8ub3JpZW50YXRpb24pLFk9TWF0aC5hYnMoSik9PT05MCxxPSEhWCYmWC53aWR0aD5YLmhlaWdodCxaPUo9PT0xODB8fFkmJiFxO3JldHVybntkaXNwbGF5Q29uZmlnOkcscm90YXRpb25EZWdyZWVzOlo/SjowLG5lZWRzQ3NzUm90YXRpb246WixpbnB1dE9yaWVudGF0aW9uOlo/WD8ub3JpZW50YXRpb246dm9pZCAwfX1mdW5jdGlvbiBBOChYKXtzd2l0Y2goWCl7Y2FzZSJsYW5kc2NhcGVfbGVmdCI6cmV0dXJuIDkwO2Nhc2UibGFuZHNjYXBlX3JpZ2h0IjpyZXR1cm4tOTA7Y2FzZSJwb3J0cmFpdF91cHNpZGVfZG93biI6cmV0dXJuIDE4MDtkZWZhdWx0OnJldHVybiAwfX1mdW5jdGlvbiBaMShYLEcsSil7c3dpdGNoKFgpe2Nhc2UibGFuZHNjYXBlX2xlZnQiOnJldHVybnt4OkoseToxLUd9O2Nhc2UibGFuZHNjYXBlX3JpZ2h0IjpyZXR1cm57eDoxLUoseTpHfTtjYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpyZXR1cm57eDoxLUcseToxLUp9O2RlZmF1bHQ6cmV0dXJue3g6Ryx5Okp9fX1mdW5jdGlvbiBxOShYLEcpe3N3aXRjaChYKXtjYXNlImxhbmRzY2FwZV9sZWZ0Ijpzd2l0Y2goRyl7Y2FzZSAxOnJldHVybiAzO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDI6cmV0dXJuIDE7Y2FzZSAzOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIEd9Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnN3aXRjaChHKXtjYXNlIDE6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiAzO2Nhc2UgMjpyZXR1cm4gNDtjYXNlIDM6cmV0dXJuIDE7ZGVmYXVsdDpyZXR1cm4gR31jYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpzd2l0Y2goRyl7Y2FzZSAxOnJldHVybiA0O2Nhc2UgNDpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDM7Y2FzZSAzOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIEd9ZGVmYXVsdDpyZXR1cm4gR319dmFyIGs0PTA7ZnVuY3Rpb24gUShYLEcsSixZLHEsWil7R3x8KEc9e30pO3ZhciAkLFYsSz1HO2lmKCJyZWYiaW4gSylmb3IoViBpbiBLPXt9LEcpVj09InJlZiI/JD1HW1ZdOktbVl09R1tWXTt2YXIgXz17dHlwZTpYLHByb3BzOkssa2V5OkoscmVmOiQsX19rOm51bGwsX186bnVsbCxfX2I6MCxfX2U6bnVsbCxfX2M6bnVsbCxjb25zdHJ1Y3Rvcjp2b2lkIDAsX192Oi0tazQsX19pOi0xLF9fdTowLF9fc291cmNlOnEsX19zZWxmOlp9O2lmKHR5cGVvZiBYPT0iZnVuY3Rpb24iJiYoJD1YLmRlZmF1bHRQcm9wcykpZm9yKFYgaW4gJClLW1ZdPT09dm9pZCAwJiYoS1tWXT0kW1ZdKTtyZXR1cm4gSS52bm9kZSYmSS52bm9kZShfKSxffXZhciB3OD1gdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyUzRSUzQ2NpcmNsZSBjeD0nMTInIGN5PScxMicgcj0nOScgZmlsbD0ncmdiYSgyNTUsMjU1LDI1NSwwLjQ1KScgc3Ryb2tlPSdyZ2JhKDAsMCwwLDAuNTUpJyBzdHJva2Utd2lkdGg9JzEuMjUnIGZpbHRlcj0nZHJvcC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwwLDAsMC40NSkpJy8lM0UlM0Mvc3ZnJTNFIikgMTIgMTIsIHBvaW50ZXJgLFQ0PTMsRTQ9NCxDND01O2Z1bmN0aW9uIGsxKHt1cmw6WCx3c1VybDpHLHN0eWxlOkosaW1hZ2VTdHlsZTpZLGNsYXNzTmFtZTpxLG9uSG9tZVByZXNzOlosb25TdHJlYW1Ub3VjaDokLG9uU3RyZWFtTXVsdGlUb3VjaDpWLG9uU3RyZWFtQnV0dG9uOkssc3Vic2NyaWJlRnJhbWU6XyxzdHJlYW1GcmFtZTpILHN0cmVhbUNvbmZpZzp6LG9uU2NyZWVuQ29uZmlnQ2hhbmdlOkwsaGlkZUNvbnRyb2xzOkIsb25TdHJlYW1pbmdDaGFuZ2U6TSxjb25uZWN0aW9uUXVhbGl0eTpOfSl7bGV0IE89ISEkLFA9YihudWxsKSxBPWIobnVsbCksdj1iKG51bGwpLHk9YihudWxsKSxbdSxwXT1UKCExKSxbYyx6MF09VChudWxsKSxbcyx0XT1UKG51bGwpLGY9YihudWxsKSxnMD1iKEwpO2cwLmN1cnJlbnQ9TDtsZXQgUTE9YihudWxsKSxbVzAsWDBdPVQobnVsbCk7UigoKT0+e2xldCBGPVExLmN1cnJlbnQ7aWYoIUZ8fHR5cGVvZiBSZXNpemVPYnNlcnZlcj4idSIpcmV0dXJuO2xldCBXPW5ldyBSZXNpemVPYnNlcnZlcigoVSk9PntsZXQgdz1VWzBdPy5jb250ZW50UmVjdDtpZih3KVgwKHt3aWR0aDp3LndpZHRoLGhlaWdodDp3LmhlaWdodH0pfSk7cmV0dXJuIFcub2JzZXJ2ZShGKSwoKT0+Vy5kaXNjb25uZWN0KCl9LFtdKTtsZXRbJDEsXzFdPVQoMCksVTA9YigwKSxbbTEsczBdPVQoITEpLFkwPWIobnVsbCk7UigoKT0+e2lmKE49PT0icG9vciIpe2lmKHMwKCEwKSxZMC5jdXJyZW50KWNsZWFyVGltZW91dChZMC5jdXJyZW50KTtZMC5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntzMCghMSksWTAuY3VycmVudD1udWxsfSwzMDAwKX1lbHNlIGlmKHMwKCExKSxZMC5jdXJyZW50KWNsZWFyVGltZW91dChZMC5jdXJyZW50KSxZMC5jdXJyZW50PW51bGw7cmV0dXJuKCk9PntpZihZMC5jdXJyZW50KWNsZWFyVGltZW91dChZMC5jdXJyZW50KX19LFtOXSk7bGV0IHgwPWAke1h9L3N0cmVhbS5tanBlZ2A7UigoKT0+e2YuY3VycmVudD1udWxsLHQobnVsbCl9LFtYXSk7bGV0IGswPWooKEYpPT57aWYoIUZ8fEYud2lkdGg8PTB8fEYuaGVpZ2h0PD0wKXJldHVybjtsZXQgVz1mLmN1cnJlbnQsVT1GLm9yaWVudGF0aW9uPT09dm9pZCAwJiZXPy5vcmllbnRhdGlvbj97Li4uRixvcmllbnRhdGlvbjpXLm9yaWVudGF0aW9ufTpGO2lmKFcmJlcud2lkdGg9PT1VLndpZHRoJiZXLmhlaWdodD09PVUuaGVpZ2h0JiZXLm9yaWVudGF0aW9uPT09VS5vcmllbnRhdGlvbilyZXR1cm47Zi5jdXJyZW50PVUsdChVKSxnMC5jdXJyZW50Py4oVSl9LFtdKSxUMD1iKE0pO1QwLmN1cnJlbnQ9TSxSKCgpPT57VDAuY3VycmVudD8uKHUpfSxbdV0pLFIoKCk9PntpZihPJiZ6KWswKHopfSxbTyx6LGswXSk7bGV0IEUwPWIoITEpO0UwLmN1cnJlbnQ9dTtsZXQgQzA9YihudWxsKTtSKCgpPT57aWYoIU98fCFfKXJldHVybjtsZXQgVz1zZXRUaW1lb3V0KCgpPT57aWYoIUUwLmN1cnJlbnQpejAoIlN0cmVhbSBpcyBub3QgcHJvZHVjaW5nIGZyYW1lcy4gVGhlIHNpbXVsYXRvciBtYXkgaGF2ZSBzdG9wcGVkIOKAlCB0cnkgcmVjb25uZWN0aW5nLiIpfSw2MDAwKSxVPV8oKHcpPT57VTAuY3VycmVudCsrLHAwLmN1cnJlbnQ9RGF0ZS5ub3coKTtsZXQgQz1BLmN1cnJlbnQ7aWYoQyl7aWYoQzAuY3VycmVudClVUkwucmV2b2tlT2JqZWN0VVJMKEMwLmN1cnJlbnQpO0MwLmN1cnJlbnQ9dyxDLnNyYz13fWlmKCFFMC5jdXJyZW50KWNsZWFyVGltZW91dChXKSxwKCEwKSx6MChudWxsKX0pO3JldHVybigpPT57aWYoY2xlYXJUaW1lb3V0KFcpLFU/LigpLEMwLmN1cnJlbnQpVVJMLnJldm9rZU9iamVjdFVSTChDMC5jdXJyZW50KSxDMC5jdXJyZW50PW51bGx9fSxbTyxfXSk7bGV0IFowPWooKEYpPT57bGV0IFc9WTEoZi5jdXJyZW50KS5pbnB1dE9yaWVudGF0aW9uLFU9WjEoVyxGLngsRi55KSx3PUYuZWRnZT09PXZvaWQgMD92b2lkIDA6cTkoVyxGLmVkZ2UpLEM9dz09PXZvaWQgMD97dHlwZTpGLnR5cGUsLi4uVX06e3R5cGU6Ri50eXBlLC4uLlUsZWRnZTp3fTtpZihPKXskPy4oQyk7cmV0dXJufWxldCBnPXkuY3VycmVudDtpZighZ3x8Zy5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pcmV0dXJuO2xldCBvPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeShDKSkscj1uZXcgVWludDhBcnJheSgxK28ubGVuZ3RoKTtyWzBdPVQ0LHIuc2V0KG8sMSksZy5zZW5kKHIpfSxbTywkXSksdDA9aigoRik9PntpZihPKXtLPy4oRik7cmV0dXJufWxldCBXPXkuY3VycmVudDtpZighV3x8Vy5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pcmV0dXJuO2xldCBVPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeSh7YnV0dG9uOkZ9KSksdz1uZXcgVWludDhBcnJheSgxK1UubGVuZ3RoKTt3WzBdPUU0LHcuc2V0KFUsMSksVy5zZW5kKHcpfSxbTyxLXSksTDA9aigoRik9PntsZXQgVz1ZMShmLmN1cnJlbnQpLmlucHV0T3JpZW50YXRpb24sVT1aMShXLEYueDEsRi55MSksdz1aMShXLEYueDIsRi55MiksQz17dHlwZTpGLnR5cGUseDE6VS54LHkxOlUueSx4Mjp3LngseTI6dy55fTtpZihPKXtWPy4oQyk7cmV0dXJufWxldCBnPXkuY3VycmVudDtpZighZ3x8Zy5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pcmV0dXJuO2xldCBvPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeShDKSkscj1uZXcgVWludDhBcnJheSgxK28ubGVuZ3RoKTtyWzBdPUM0LHIuc2V0KG8sMSksZy5zZW5kKHIpfSxbTyxWXSk7UigoKT0+e2lmKE8pcmV0dXJuO2xldCBGPW5ldyBBYm9ydENvbnRyb2xsZXIsVz0oKT0+e2ZldGNoKGAke1h9L2NvbmZpZ2Ase3NpZ25hbDpGLnNpZ25hbH0pLnRoZW4oKEsxKT0+SzEuanNvbigpKS50aGVuKChLMSk9PntrMChLMSl9KS5jYXRjaCgoKT0+e30pfTtXKCk7bGV0IFU9c2V0SW50ZXJ2YWwoVywxMDAwKSx3PUc/P1gucmVwbGFjZSgvXmh0dHAvLCJ3cyIpKyIvd3MiLEM9bmV3IFdlYlNvY2tldCh3KTtDLmJpbmFyeVR5cGU9ImFycmF5YnVmZmVyIix5LmN1cnJlbnQ9QyxDLm9ub3Blbj0oKT0+e3AoITApLHowKG51bGwpfSxDLm9uY2xvc2U9KCk9PntwKCExKX0sQy5vbmVycm9yPSgpPT57ejAoIldlYlNvY2tldCBjb25uZWN0aW9uIGZhaWxlZCIpLHAoITEpfTtsZXQgZz1uZXcgQWJvcnRDb250cm9sbGVyLG89c2V0SW50ZXJ2YWwoKCk9PntfMShVMC5jdXJyZW50KSxVMC5jdXJyZW50PTB9LDEwMDApLHI9ITEsRDk9c2V0VGltZW91dCgoKT0+e2lmKCFyKXowKCJTdHJlYW0gaXMgbm90IHByb2R1Y2luZyBmcmFtZXMuIFRoZSBzaW11bGF0b3IgbWF5IGhhdmUgc3RvcHBlZCDigJQgdHJ5IHJlY29ubmVjdGluZy4iKX0sNjAwMCk7cmV0dXJuKGFzeW5jKCk9Pnt0cnl7bGV0IE45PShhd2FpdCBmZXRjaCh4MCx7c2lnbmFsOmcuc2lnbmFsfSkpLmJvZHk/LmdldFJlYWRlcigpO2lmKCFOOSlyZXR1cm47bGV0IGcxPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSgiLS1mcmFtZSIpO3doaWxlKCEwKXtsZXR7ZG9uZTphOCx2YWx1ZTp4MX09YXdhaXQgTjkucmVhZCgpO2lmKGE4KWJyZWFrO2lmKHgxKWZvcihsZXQgcDE9MDtwMTw9eDEubGVuZ3RoLWcxLmxlbmd0aDtwMSsrKXtsZXQgTzk9ITA7Zm9yKGxldCBXMT0wO1cxPGcxLmxlbmd0aDtXMSsrKWlmKHgxW3AxK1cxXSE9PWcxW1cxXSl7Tzk9ITE7YnJlYWt9aWYoTzkpe2lmKFUwLmN1cnJlbnQrKywhcilyPSEwLGNsZWFyVGltZW91dChEOSl9fX19Y2F0Y2h7fX0pKCksKCk9PntnLmFib3J0KCksRi5hYm9ydCgpLGNsZWFySW50ZXJ2YWwoVSksY2xlYXJJbnRlcnZhbChvKSxjbGVhclRpbWVvdXQoRDkpLEMuY2xvc2UoKSx5LmN1cnJlbnQ9bnVsbH19LFtYLHgwLE8sazAsR10pO2xldCBwMD1iKDApO1IoKCk9PntpZighTylyZXR1cm47bGV0IEY9MjAwMCxXPSgpPT57bGV0IEM9cDAuY3VycmVudDtpZighQ3x8IUUwLmN1cnJlbnQpcmV0dXJuO2lmKERhdGUubm93KCktQz5GKXAoITEpfSxVPXNldEludGVydmFsKCgpPT57XzEoVTAuY3VycmVudCksVTAuY3VycmVudD0wLFcoKX0sMTAwMCksdz0oKT0+e2lmKCFkb2N1bWVudC5oaWRkZW4pVygpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsdyksKCk9PntjbGVhckludGVydmFsKFUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHcpfX0sW09dKTtsZXQgVjE9aigoKT0+e3JldHVybiBPP0EuY3VycmVudDpQLmN1cnJlbnR9LFtPXSksSzA9aigoKT0+e3JldHVybiB2LmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPz9WMSgpPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKT8/bnVsbH0sW1YxXSksUjA9aigoRixXKT0+e2xldCBVPUswKCk7aWYoIVUpcmV0dXJuO2xldCB3PShXLmNsaWVudFgtVS5sZWZ0KS9VLndpZHRoLEM9KFcuY2xpZW50WS1VLnRvcCkvVS5oZWlnaHQ7WjAoe3R5cGU6Rix4OncseTpDfSl9LFtLMCxaMF0pLEcwPWIoITEpLG49YighMSksZjA9YighMSksbjA9Yih7ZHg6MCxkeTowfSksdjA9YighMSksW2gwLHoxXT1UKCExKSxEPWIoe3g6MC41LHk6MC41fSksW2ssRV09VChudWxsKTtSKCgpPT57bGV0IEY9KFUpPT57aWYoVS5rZXk9PT0iQWx0Iil6MSghMCl9LFc9KFUpPT57aWYoVS5rZXk9PT0iQWx0Iil7aWYoejEoITEpLCFuLmN1cnJlbnQpRShudWxsKX19O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsRiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixXKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixGKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLFcpfX0sW10pLFIoKCk9PntpZihoMCYmIW4uY3VycmVudCl7bGV0IEY9RC5jdXJyZW50O0Uoe3gxOkYueCx5MTpGLnkseDI6MS1GLngseTI6MS1GLnl9KX1lbHNlIGlmKCFoMCYmIW4uY3VycmVudClFKG51bGwpfSxbaDBdKTtsZXQgaD1iKG51bGwpLGk9YighMSksZD1iKDApLEQwPWooKEYsVyk9PntpLmN1cnJlbnQ9ITA7bGV0IFU9aC5jdXJyZW50O2lmKFUpY2FuY2VsQW5pbWF0aW9uRnJhbWUoZC5jdXJyZW50KSxkLmN1cnJlbnQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57VS5zdHlsZS5sZWZ0PWAke0YqMTAwfSVgLFUuc3R5bGUudG9wPWAke1cqMTAwfSVgLFUuc3R5bGUuZGlzcGxheT0iYmxvY2sifSl9LFtdKSxKMD1qKChGLFcpPT57aWYoIWkuY3VycmVudClyZXR1cm47bGV0IFU9aC5jdXJyZW50O2lmKFUpY2FuY2VsQW5pbWF0aW9uRnJhbWUoZC5jdXJyZW50KSxkLmN1cnJlbnQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57VS5zdHlsZS5sZWZ0PWAke0YqMTAwfSVgLFUuc3R5bGUudG9wPWAke1cqMTAwfSVgfSl9LFtdKSxxMD1qKCgpPT57aS5jdXJyZW50PSExO2xldCBGPWguY3VycmVudDtpZihGKWNhbmNlbEFuaW1hdGlvbkZyYW1lKGQuY3VycmVudCksRi5zdHlsZS5kaXNwbGF5PSJub25lIn0sW10pLEgwPWIoMCksUDA9YihudWxsKSxkMD1qKCgpPT57bGV0IEY9RGF0ZS5ub3coKSxXPUYtSDAuY3VycmVudDtpZihIMC5jdXJyZW50PUYsVzwzMDApe2lmKFAwLmN1cnJlbnQpY2xlYXJUaW1lb3V0KFAwLmN1cnJlbnQpLFAwLmN1cnJlbnQ9bnVsbDtpZihaKVooKTtlbHNlIHQwKCJhcHBfc3dpdGNoZXIiKX1lbHNlIFAwLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e2lmKFopWigpO2Vsc2UgdDAoImhvbWUiKTtQMC5jdXJyZW50PW51bGx9LDMwMCl9LFt0MCxaXSksbTA9WTEocyksTjA9bTAuZGlzcGxheUNvbmZpZyxCMD0oKCk9PntpZighTjB8fCFXMClyZXR1cm4gbnVsbDtpZihXMC53aWR0aD09PTB8fFcwLmhlaWdodD09PTApcmV0dXJuIG51bGw7bGV0IEY9TWF0aC5taW4oVzAud2lkdGgvTjAud2lkdGgsVzAuaGVpZ2h0L04wLmhlaWdodCk7cmV0dXJue3dpZHRoOk4wLndpZHRoKkYsaGVpZ2h0Ok4wLmhlaWdodCpGfX0pKCksdTA9bTAucm90YXRpb25EZWdyZWVzLEg5PW0wLm5lZWRzQ3NzUm90YXRpb24mJk1hdGguYWJzKHUwKT09PTkwLEI5PVksRjk9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiI1MCUiLGxlZnQ6IjUwJSIsd2lkdGg6SDkmJkIwP2Ake0IwLmhlaWdodH1weGA6IjEwMCUiLGhlaWdodDpIOSYmQjA/YCR7QjAud2lkdGh9cHhgOiIxMDAlIix0cmFuc2Zvcm06YHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSR7dTA9PT0wPyIiOmAgcm90YXRlKCR7dTB9ZGVnKWB9YCx0cmFuc2Zvcm1PcmlnaW46ImNlbnRlciBjZW50ZXIiLGN1cnNvcjp3OCxkaXNwbGF5OiJibG9jayIsdXNlclNlbGVjdDoibm9uZSIsV2Via2l0VXNlclNlbGVjdDoibm9uZSIsdG91Y2hBY3Rpb246Im5vbmUiLC4uLlksLi4udTA9PT0wP3t9Ontib3JkZXJSYWRpdXM6MCxjb3JuZXJTaGFwZTp2b2lkIDB9fTtyZXR1cm4gUSgiZGl2Iix7c3R5bGU6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZmxleDoxLC4uLkI/e306e2JvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikifSxvdmVyZmxvdzoiaGlkZGVuIixtaW5XaWR0aDowLG1pbkhlaWdodDowLC4uLkp9LGNsYXNzTmFtZTpxLGNoaWxkcmVuOltRKCJkaXYiLHtyZWY6UTEsc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsZmxleDoxLG1pbkhlaWdodDowLG1pbldpZHRoOjAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIn0sY2hpbGRyZW46USgiZGl2Iix7cmVmOnYsc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsd2lkdGg6QjA/YCR7QjAud2lkdGh9cHhgOiIxMDAlIixoZWlnaHQ6QjA/YCR7QjAuaGVpZ2h0fXB4YDoiMTAwJSIsb3ZlcmZsb3c6ImhpZGRlbiIsYm9yZGVyUmFkaXVzOkI5Py5ib3JkZXJSYWRpdXMsY29ybmVyU2hhcGU6Qjk/LmNvcm5lclNoYXBlfSxjaGlsZHJlbjpbUSgiaW1nIix7cmVmOlAsc3JjOk8/dm9pZCAwOngwLGRyYWdnYWJsZTohMSxvbkxvYWQ6KEYpPT57bGV0IFc9Ri5jdXJyZW50VGFyZ2V0O2lmKFcubmF0dXJhbFdpZHRoPjAmJlcubmF0dXJhbEhlaWdodD4wKWswKHt3aWR0aDpXLm5hdHVyYWxXaWR0aCxoZWlnaHQ6Vy5uYXR1cmFsSGVpZ2h0fSl9LHN0eWxlOk8/e2Rpc3BsYXk6Im5vbmUifTpGOX0pLE8mJlEoImltZyIse3JlZjpBLGRyYWdnYWJsZTohMSxvbkxvYWQ6KEYpPT57bGV0IFc9Ri5jdXJyZW50VGFyZ2V0O2lmKFcubmF0dXJhbFdpZHRoPjAmJlcubmF0dXJhbEhlaWdodD4wKWswKHt3aWR0aDpXLm5hdHVyYWxXaWR0aCxoZWlnaHQ6Vy5uYXR1cmFsSGVpZ2h0fSl9LHN0eWxlOkY5fSksUSgiZGl2Iix7c3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaW5zZXQ6MCxjdXJzb3I6dzgsdG91Y2hBY3Rpb246Im5vbmUifSxvbk1vdXNlRG93bjooRik9PntGLnByZXZlbnREZWZhdWx0KCk7bGV0IFc9SzAoKTtpZighVylyZXR1cm47bGV0IFU9KEYuY2xpZW50WC1XLmxlZnQpL1cud2lkdGgsdz0oRi5jbGllbnRZLVcudG9wKS9XLmhlaWdodDtpZihGLmFsdEtleSl7bi5jdXJyZW50PSEwLGYwLmN1cnJlbnQ9Ri5zaGlmdEtleTtsZXQgQz17eDE6VSx5MTp3LHgyOjEtVSx5MjoxLXd9O24wLmN1cnJlbnQ9e2R4OjEtVS1VLGR5OjEtdy13fSxFKEMpLEwwKHt0eXBlOiJiZWdpbiIsLi4uQ30pO3JldHVybn1pZihEMChVLHcpLHc+MC44OClHMC5jdXJyZW50PSEwLFowKHt0eXBlOiJiZWdpbiIseDpVLHk6dyxlZGdlOnkwfSk7ZWxzZSBHMC5jdXJyZW50PSExLFIwKCJiZWdpbiIsRil9LG9uTW91c2VNb3ZlOihGKT0+e2xldCBXPUswKCk7aWYoIVcpcmV0dXJuO2xldCBVPShGLmNsaWVudFgtVy5sZWZ0KS9XLndpZHRoLHc9KEYuY2xpZW50WS1XLnRvcCkvVy5oZWlnaHQ7aWYoRC5jdXJyZW50PXt4OlUseTp3fSxGLmJ1dHRvbnM9PT0wKXtpZihGLmFsdEtleSlFKHt4MTpVLHkxOncseDI6MS1VLHkyOjEtd30pO3JldHVybn1pZihuLmN1cnJlbnQpe2xldCBDO2lmKGYwLmN1cnJlbnQpe2xldCBnPW4wLmN1cnJlbnQ7Qz17eDE6VSx5MTp3LHgyOlUrZy5keCx5Mjp3K2cuZHl9fWVsc2UgQz17eDE6VSx5MTp3LHgyOjEtVSx5MjoxLXd9O0UoQyksTDAoe3R5cGU6Im1vdmUiLC4uLkN9KTtyZXR1cm59aWYoSjAoVSx3KSxHMC5jdXJyZW50KVowKHt0eXBlOiJtb3ZlIix4OlUseTp3LGVkZ2U6eTB9KTtlbHNlIFIwKCJtb3ZlIixGKX0sb25Nb3VzZVVwOihGKT0+e2lmKG4uY3VycmVudCl7bGV0IFc9SzAoKTtpZihXKXtsZXQgVT0oRi5jbGllbnRYLVcubGVmdCkvVy53aWR0aCx3PShGLmNsaWVudFktVy50b3ApL1cuaGVpZ2h0O2lmKGYwLmN1cnJlbnQpe2xldCBDPW4wLmN1cnJlbnQ7TDAoe3R5cGU6ImVuZCIseDE6VSx5MTp3LHgyOlUrQy5keCx5Mjp3K0MuZHl9KX1lbHNlIEwwKHt0eXBlOiJlbmQiLHgxOlUseTE6dyx4MjoxLVUseTI6MS13fSl9aWYobi5jdXJyZW50PSExLCFGLmFsdEtleSlFKG51bGwpO3JldHVybn1pZihxMCgpLEcwLmN1cnJlbnQpe2xldCBXPUswKCk7aWYoVyl7bGV0IFU9KEYuY2xpZW50WC1XLmxlZnQpL1cud2lkdGgsdz0oRi5jbGllbnRZLVcudG9wKS9XLmhlaWdodDtaMCh7dHlwZToiZW5kIix4OlUseTp3LGVkZ2U6eTB9KX1HMC5jdXJyZW50PSExO3JldHVybn1SMCgiZW5kIixGKX0sb25Nb3VzZUxlYXZlOihGKT0+e2lmKG4uY3VycmVudCl7aWYoaylMMCh7dHlwZToiZW5kIiwuLi5rfSk7bi5jdXJyZW50PSExLEUobnVsbCk7cmV0dXJufWlmKHEwKCksRzAuY3VycmVudCl7bGV0IFc9SzAoKTtpZihXKXtsZXQgVT0oRi5jbGllbnRYLVcubGVmdCkvVy53aWR0aCx3PShGLmNsaWVudFktVy50b3ApL1cuaGVpZ2h0O1owKHt0eXBlOiJlbmQiLHg6VSx5OncsZWRnZTp5MH0pfUcwLmN1cnJlbnQ9ITE7cmV0dXJufWlmKEYuYnV0dG9ucz4wKVIwKCJlbmQiLEYpO0UobnVsbCl9LG9uVG91Y2hTdGFydDooRik9PntGLnByZXZlbnREZWZhdWx0KCk7bGV0IFc9SzAoKTtpZighVylyZXR1cm47aWYoRi50b3VjaGVzLmxlbmd0aD49Mil7cTAoKTtsZXQgZz1GLnRvdWNoZXNbMF0sbz1GLnRvdWNoZXNbMV0scj17eDE6KGcuY2xpZW50WC1XLmxlZnQpL1cud2lkdGgseTE6KGcuY2xpZW50WS1XLnRvcCkvVy5oZWlnaHQseDI6KG8uY2xpZW50WC1XLmxlZnQpL1cud2lkdGgseTI6KG8uY2xpZW50WS1XLnRvcCkvVy5oZWlnaHR9O2lmKCF2MC5jdXJyZW50JiYhRzAuY3VycmVudClaMCh7dHlwZToiZW5kIix4OnIueDEseTpyLnkxfSk7djAuY3VycmVudD0hMCxuLmN1cnJlbnQ9ITAsRzAuY3VycmVudD0hMSxFKHIpLEwwKHt0eXBlOiJiZWdpbiIsLi4ucn0pO3JldHVybn1sZXQgVT1GLnRvdWNoZXNbMF07aWYoIVUpcmV0dXJuO2xldCB3PShVLmNsaWVudFgtVy5sZWZ0KS9XLndpZHRoLEM9KFUuY2xpZW50WS1XLnRvcCkvVy5oZWlnaHQ7aWYoRDAodyxDKSxDPjAuODgpRzAuY3VycmVudD0hMCxaMCh7dHlwZToiYmVnaW4iLHg6dyx5OkMsZWRnZTp5MH0pO2Vsc2UgRzAuY3VycmVudD0hMSxaMCh7dHlwZToiYmVnaW4iLHg6dyx5OkN9KX0sb25Ub3VjaE1vdmU6KEYpPT57Ri5wcmV2ZW50RGVmYXVsdCgpO2xldCBXPUswKCk7aWYoIVcpcmV0dXJuO2lmKHYwLmN1cnJlbnQmJkYudG91Y2hlcy5sZW5ndGg+PTIpe2xldCBnPUYudG91Y2hlc1swXSxvPUYudG91Y2hlc1sxXSxyPXt4MTooZy5jbGllbnRYLVcubGVmdCkvVy53aWR0aCx5MTooZy5jbGllbnRZLVcudG9wKS9XLmhlaWdodCx4Mjooby5jbGllbnRYLVcubGVmdCkvVy53aWR0aCx5Mjooby5jbGllbnRZLVcudG9wKS9XLmhlaWdodH07RShyKSxMMCh7dHlwZToibW92ZSIsLi4ucn0pO3JldHVybn1sZXQgVT1GLnRvdWNoZXNbMF07aWYoIVUpcmV0dXJuO2xldCB3PShVLmNsaWVudFgtVy5sZWZ0KS9XLndpZHRoLEM9KFUuY2xpZW50WS1XLnRvcCkvVy5oZWlnaHQ7aWYoSjAodyxDKSxHMC5jdXJyZW50KVowKHt0eXBlOiJtb3ZlIix4OncseTpDLGVkZ2U6eTB9KTtlbHNlIFowKHt0eXBlOiJtb3ZlIix4OncseTpDfSl9LG9uVG91Y2hFbmQ6KEYpPT57Ri5wcmV2ZW50RGVmYXVsdCgpO2xldCBXPUswKCk7aWYoIVcpcmV0dXJuO2lmKHYwLmN1cnJlbnQpe2lmKEYudG91Y2hlcy5sZW5ndGg8Mil7bGV0IGc9Ri5jaGFuZ2VkVG91Y2hlc1swXSxvPWs7aWYoZyYmbylMMCh7dHlwZToiZW5kIix4MTooZy5jbGllbnRYLVcubGVmdCkvVy53aWR0aCx5MTooZy5jbGllbnRZLVcudG9wKS9XLmhlaWdodCx4MjpvLngyLHkyOm8ueTJ9KTtlbHNlIGlmKG8pTDAoe3R5cGU6ImVuZCIsLi4ub30pO3YwLmN1cnJlbnQ9ITEsbi5jdXJyZW50PSExLEUobnVsbCl9cmV0dXJufWxldCBVPUYuY2hhbmdlZFRvdWNoZXNbMF07aWYoIVUpcmV0dXJuO2xldCB3PShVLmNsaWVudFgtVy5sZWZ0KS9XLndpZHRoLEM9KFUuY2xpZW50WS1XLnRvcCkvVy5oZWlnaHQ7aWYocTAoKSxHMC5jdXJyZW50KVowKHt0eXBlOiJlbmQiLHg6dyx5OkMsZWRnZTp5MH0pLEcwLmN1cnJlbnQ9ITE7ZWxzZSBaMCh7dHlwZToiZW5kIix4OncseTpDfSl9fSksUSgiZGl2Iix7cmVmOmgsImRhdGEtdGVzdGlkIjoidG91Y2gtaW5kaWNhdG9yIixzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIix3aWR0aDoyNCxoZWlnaHQ6MjQsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6InJnYmEoNTksMTMwLDI0NiwwLjUpIixib3hTaGFkb3c6IjAgMCA4cHggcmdiYSg1OSwxMzAsMjQ2LDAuMykiLHRyYW5zZm9ybToidHJhbnNsYXRlKC01MCUsIC01MCUpIixwb2ludGVyRXZlbnRzOiJub25lIn19KSxrJiZRKGEse2NoaWxkcmVuOltRKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJmaW5nZXItZG90IixzdHlsZTpUOChrLngxLGsueTEpfSksUSgiZGl2Iix7ImRhdGEtdGVzdGlkIjoiZmluZ2VyLWRvdCIsc3R5bGU6VDgoay54MixrLnkyKX0pXX0pLCF1JiYhYyYmUSgiZGl2Iix7c3R5bGU6ey4uLkk4LC4uLll8fHt9fSxjaGlsZHJlbjpRKCJzcGFuIix7c3R5bGU6e2NvbG9yOiIjODg4Iixmb250U2l6ZToxNH0sY2hpbGRyZW46IkNvbm5lY3RpbmcuLi4ifSl9KSxjJiZRKCJkaXYiLHtzdHlsZTpJOCxjaGlsZHJlbjpRKCJzcGFuIix7c3R5bGU6e2NvbG9yOiIjZjQ0Iixmb250U2l6ZToxNCxwYWRkaW5nOjIwLHRleHRBbGlnbjoiY2VudGVyIn0sY2hpbGRyZW46Y30pfSksbTEmJlEoImRpdiIse3N0eWxlOlI0LGNoaWxkcmVuOlEoInNwYW4iLHtzdHlsZTp7Y29sb3I6IiNmYmJmMjQiLGZvbnRTaXplOjEzLGZvbnRGYW1pbHk6Im1vbm9zcGFjZSJ9LGNoaWxkcmVuOiJTbG93IGNvbm5lY3Rpb24ifSl9KV19KX0pLCFCJiZRKCJkaXYiLHtzdHlsZTp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIscGFkZGluZzoiNHB4IDhweCIsYm9yZGVyVG9wOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSJ9LGNoaWxkcmVuOltRKCJidXR0b24iLHtvbkNsaWNrOmQwLHN0eWxlOntiYWNrZ3JvdW5kOiJub25lIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMikiLGNvbG9yOiIjYWFhIixmb250U2l6ZToxMSxmb250RmFtaWx5OiJtb25vc3BhY2UiLHBhZGRpbmc6IjJweCAxMHB4IixjdXJzb3I6InBvaW50ZXIiLGJvcmRlclJhZGl1czo0fSxjaGlsZHJlbjoiSG9tZSJ9KSxRKCJzcGFuIix7c3R5bGU6e2NvbG9yOiQxPjA/IiM0ZjQiOiIjODg4Iixmb250U2l6ZToxMixmb250RmFtaWx5OiJtb25vc3BhY2UiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjZ9LGNoaWxkcmVuOltOJiZRKCJzcGFuIix7ImRhdGEtdGVzdGlkIjoicXVhbGl0eS1kb3QiLHN0eWxlOnt3aWR0aDo4LGhlaWdodDo4LGJvcmRlclJhZGl1czoiNTAlIixkaXNwbGF5OiJpbmxpbmUtYmxvY2siLGJhY2tncm91bmQ6Tj09PSJnb29kIj8iIzRhZGU4MCI6Tj09PSJkZWdyYWRlZCI/IiNmYWNjMTUiOiIjZWY0NDQ0In19KSwkMSwiIGZwcyJdfSldfSldfSl9dmFyIFI0PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDo4LGxlZnQ6IjUwJSIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVYKC01MCUpIixiYWNrZ3JvdW5kOiJyZ2JhKDAsMCwwLDAuNykiLGJvcmRlclJhZGl1czo2LHBhZGRpbmc6IjRweCAxMnB4Iixwb2ludGVyRXZlbnRzOiJub25lIn0sSTg9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaW5zZXQ6MCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGJhY2tncm91bmQ6InJnYmEoMCwwLDAsMC44KSJ9LGs4PTIwO2Z1bmN0aW9uIFQ4KFgsRyl7cmV0dXJue3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDpgJHtYKjEwMH0lYCx0b3A6YCR7RyoxMDB9JWAsd2lkdGg6azgsaGVpZ2h0Oms4LGJvcmRlclJhZGl1czoiNTAlIixiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNDUpIixib3JkZXI6IjEuMjVweCBzb2xpZCByZ2JhKDAsMCwwLDAuNTUpIixib3hTaGFkb3c6IjAgMXB4IDNweCByZ2JhKDAsMCwwLDAuNDUpIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgtNTAlLCAtNTAlKSIscG9pbnRlckV2ZW50czoibm9uZSJ9fWZ1bmN0aW9uIGwwKFgpe2lmKCFYKXJldHVybiJpcGhvbmUiO2xldCBHPVgudG9Mb3dlckNhc2UoKTtpZihHLmluY2x1ZGVzKCJpcGFkIikpcmV0dXJuImlwYWQiO2lmKEcuaW5jbHVkZXMoIndhdGNoIikpcmV0dXJuIndhdGNoIjtpZihHLmluY2x1ZGVzKCJ2aXNpb24iKSlyZXR1cm4idmlzaW9uIjtyZXR1cm4iaXBob25lIn12YXIgRjA9e2lwaG9uZTp7d2lkdGg6NDI3LGhlaWdodDo4ODEsYmV6ZWxYOjE4LGJlemVsWToxOCxpbm5lclJhZGl1czo1NX0saXBhZDp7d2lkdGg6NDMwLGhlaWdodDo2MDUsYmV6ZWxYOjE2LGJlemVsWToxNixpbm5lclJhZGl1czoxMn0sd2F0Y2g6e3dpZHRoOjI3NCxoZWlnaHQ6MzIyLGJlemVsWDoxMixiZXplbFk6MTIsaW5uZXJSYWRpdXM6Nzl9LHZpc2lvbjp7d2lkdGg6NjQwLGhlaWdodDo0MDAsYmV6ZWxYOjEyLGJlemVsWToxMixpbm5lclJhZGl1czozMn19LEtYPUYwLmlwaG9uZS53aWR0aCxXWD1GMC5pcGhvbmUuaGVpZ2h0LExYPUYwLmlwaG9uZS5iZXplbFgsSFg9RjAuaXBob25lLmJlemVsWSxCWD1GMC5pcGhvbmUuaW5uZXJSYWRpdXMsRTg9eyJpUGhvbmUgMTcgUHJvIE1heCI6e3dpZHRoOjEzMjAsaGVpZ2h0OjI4Njh9LCJpUGhvbmUgMTcgUHJvIjp7d2lkdGg6MTIwNixoZWlnaHQ6MjYyMn0sImlQaG9uZSAxNyI6e3dpZHRoOjEyMDYsaGVpZ2h0OjI2MjJ9LCJpUGhvbmUgQWlyIjp7d2lkdGg6MTI2MCxoZWlnaHQ6MjczNn0sImlQaG9uZSAxNiBQcm8gTWF4Ijp7d2lkdGg6MTMyMCxoZWlnaHQ6Mjg2OH0sImlQaG9uZSAxNiBQcm8iOnt3aWR0aDoxMjA2LGhlaWdodDoyNjIyfSwiaVBob25lIDE2IFBsdXMiOnt3aWR0aDoxMjkwLGhlaWdodDoyNzk2fSwiaVBob25lIDE2Ijp7d2lkdGg6MTE3OSxoZWlnaHQ6MjU1Nn0sImlQaG9uZSAxNmUiOnt3aWR0aDoxMTcwLGhlaWdodDoyNTMyfSwiaVBob25lIDE1IFBybyBNYXgiOnt3aWR0aDoxMjkwLGhlaWdodDoyNzk2fSwiaVBob25lIDE1IFBybyI6e3dpZHRoOjExNzksaGVpZ2h0OjI1NTZ9LCJpUGhvbmUgMTUgUGx1cyI6e3dpZHRoOjEyOTAsaGVpZ2h0OjI3OTZ9LCJpUGhvbmUgMTUiOnt3aWR0aDoxMTc5LGhlaWdodDoyNTU2fSwiaVBhZCBQcm8gMTMtaW5jaCAoTTUpIjp7d2lkdGg6MjA2NCxoZWlnaHQ6Mjc1Mn0sImlQYWQgUHJvIDExLWluY2ggKE01KSI6e3dpZHRoOjE2NjgsaGVpZ2h0OjI0MjB9LCJpUGFkIFBybyAxMy1pbmNoIChNNCkiOnt3aWR0aDoyMDY0LGhlaWdodDoyNzUyfSwiaVBhZCBQcm8gMTEtaW5jaCAoTTQpIjp7d2lkdGg6MTY2OCxoZWlnaHQ6MjQyMH0sImlQYWQgQWlyIDEzLWluY2ggKE0zKSI6e3dpZHRoOjIwNDgsaGVpZ2h0OjI3MzJ9LCJpUGFkIEFpciAxMS1pbmNoIChNMykiOnt3aWR0aDoxNjQwLGhlaWdodDoyMzYwfSwiaVBhZCAoQTE2KSI6e3dpZHRoOjE2NDAsaGVpZ2h0OjIzNjB9LCJpUGFkIG1pbmkgKEExNyBQcm8pIjp7d2lkdGg6MTQ4OCxoZWlnaHQ6MjI2Nn0sIkFwcGxlIFdhdGNoIFVsdHJhIDMgKDQ5bW0pIjp7d2lkdGg6NDIyLGhlaWdodDo1MTR9LCJBcHBsZSBXYXRjaCBVbHRyYSAyICg0OW1tKSI6e3dpZHRoOjQxMCxoZWlnaHQ6NTAyfSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDExICg0Nm1tKSI6e3dpZHRoOjQxNixoZWlnaHQ6NDk2fSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDExICg0Mm1tKSI6e3dpZHRoOjM3NCxoZWlnaHQ6NDQ2fSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDEwICg0Nm1tKSI6e3dpZHRoOjQxNixoZWlnaHQ6NDk2fSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDEwICg0Mm1tKSI6e3dpZHRoOjM3NCxoZWlnaHQ6NDQ2fSwiQXBwbGUgV2F0Y2ggU0UgMyAoNDRtbSkiOnt3aWR0aDozNjgsaGVpZ2h0OjQ0OH0sIkFwcGxlIFdhdGNoIFNFIDMgKDQwbW0pIjp7d2lkdGg6MzI0LGhlaWdodDozOTR9LCJBcHBsZSBXYXRjaCBTRSAoNDRtbSkiOnt3aWR0aDozNjgsaGVpZ2h0OjQ0OH0sIkFwcGxlIFdhdGNoIFNFICg0MG1tKSI6e3dpZHRoOjMyNCxoZWlnaHQ6Mzk0fSwiQXBwbGUgVmlzaW9uIFBybyI6e3dpZHRoOjE5MjAsaGVpZ2h0OjEwODB9fTtmdW5jdGlvbiBUMShYLEcpe2xldCBKPVgmJlgud2lkdGg+MCYmWC5oZWlnaHQ+MD9YOkcsWT1JMShKKTtpZihZKXJldHVybmAke1kud2lkdGh9IC8gJHtZLmhlaWdodH1gO3JldHVybmAke0YwLmlwaG9uZS53aWR0aC0yKkYwLmlwaG9uZS5iZXplbFh9IC8gJHtGMC5pcGhvbmUuaGVpZ2h0LTIqRjAuaXBob25lLmJlemVsWX1gfWZ1bmN0aW9uIEUxKFg9ImlwaG9uZSIsRyl7bGV0IEo9Rz9FOFtHXTpudWxsO2lmKEopcmV0dXJuIEo7bGV0IFk9RjBbWF07cmV0dXJue3dpZHRoOlkud2lkdGgtMipZLmJlemVsWCxoZWlnaHQ6WS5oZWlnaHQtMipZLmJlemVsWX19ZnVuY3Rpb24gQzEoWD0iaXBob25lIixHKXtpZihKMShHKSlzd2l0Y2goWCl7Y2FzZSJpcGFkIjpyZXR1cm4gNzIwO2Nhc2UidmlzaW9uIjpyZXR1cm4gNTgwO2Nhc2Uid2F0Y2giOnJldHVybiAyMDA7ZGVmYXVsdDpyZXR1cm4gNjIwfXN3aXRjaChYKXtjYXNlImlwYWQiOnJldHVybiA0MDA7Y2FzZSJ3YXRjaCI6cmV0dXJuIDIwMDtjYXNlInZpc2lvbiI6cmV0dXJuIDU4MDtkZWZhdWx0OnJldHVybiAzMjB9fWZ1bmN0aW9uIFIxKFg9ImlwaG9uZSIsRyl7bGV0IEo9RjBbWF0sWT1KLndpZHRoLTIqSi5iZXplbFgscT1KLmhlaWdodC0yKkouYmV6ZWxZO2lmKFk8cSYmSjEoRykpcmV0dXJuYCR7Si5pbm5lclJhZGl1cy9xKjEwMH0lIC8gJHtKLmlubmVyUmFkaXVzL1kqMTAwfSVgO3JldHVybmAke0ouaW5uZXJSYWRpdXMvWSoxMDB9JSAvICR7Si5pbm5lclJhZGl1cy9xKjEwMH0lYH12YXIgUTk9dzAobnVsbCk7ZnVuY3Rpb24gYjEoWCl7bGV0IEc9UzAoUTkpO2lmKCFHKXRocm93IEVycm9yKGA8U2ltdWxhdG9yVG9vbGJhci4ke1h9PiBtdXN0IGJlIHJlbmRlcmVkIGluc2lkZSA8U2ltdWxhdG9yVG9vbGJhcj5gKTtyZXR1cm4gR312YXIgeTQ9e2Rpc3BsYXk6ImZsZXgiLGZsZXhXcmFwOiJ3cmFwIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixnYXA6IjRweCAxMnB4IixwYWRkaW5nOiI4cHggMTJweCIsYm9yZGVyUmFkaXVzOjI0LGJhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKSIsYm94U2hhZG93OiIwIDFweCAycHggcmdiYSgwLDAsMCwwLjIpIixtaW5XaWR0aDoyNDAsd2lkdGg6IjEwMCUifTtmdW5jdGlvbiB2NCh7ZXhlYzpYLG9uUm90YXRlOkcsb3JpZW50YXRpb246SixkZXZpY2VVZGlkOlksZGV2aWNlTmFtZTpxLGRldmljZVJ1bnRpbWU6WixzdHJlYW1pbmc6JD0hMSxkaXNhYmxlZDpWPSExLGNoaWxkcmVuOkssc3R5bGU6XywuLi5IfSl7bGV0IHo9bDAocSksQj17ZXhlYzpYLG9uUm90YXRlOkcsb3JpZW50YXRpb246SixkZXZpY2VVZGlkOlksZGV2aWNlTmFtZTpxLGRldmljZVJ1bnRpbWU6WixkZXZpY2VUeXBlOnosc3RyZWFtaW5nOiQsZGlzYWJsZWQ6Vnx8IVl8fCEkfTtyZXR1cm4gUShROS5Qcm92aWRlcix7dmFsdWU6QixjaGlsZHJlbjpRKCJkaXYiLHsiZGF0YS1zaW11bGF0b3ItdG9vbGJhciI6ITAsc3R5bGU6ey4uLnk0LC4uLl99LC4uLkgsY2hpbGRyZW46S30pfSl9dmFyIGg0PXtkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGFsaWduSXRlbXM6ImZsZXgtc3RhcnQiLHRleHRBbGlnbjoibGVmdCIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6IiNmZmYiLHBhZGRpbmc6IjJweCA0cHgiLG1hcmdpbjoiLTJweCAtNHB4Iixib3JkZXJSYWRpdXM6NixjdXJzb3I6InBvaW50ZXIiLG1pbldpZHRoOjAsbWF4V2lkdGg6IjEwMCUiLGxpbmVIZWlnaHQ6MS4yLGZvbnRGYW1pbHk6ImluaGVyaXQifSxtND1hMChmdW5jdGlvbih7bmFtZTpHLHN1YnRpdGxlOkosaGlkZUNoZXZyb246WSxzdHlsZTpxLG9uTW91c2VFbnRlcjpaLG9uTW91c2VMZWF2ZTokLC4uLlZ9LEspe2xldCBfPWIxKCJUaXRsZSIpLFtILHpdPVQoITEpLEw9Rz8/Xy5kZXZpY2VOYW1lPz8iTm8gc2ltdWxhdG9yIixCPUo/PyhfLmRldmljZVJ1bnRpbWU/Xy5kZXZpY2VSdW50aW1lLnJlcGxhY2UoL1wuLywiICIpOiLigJQiKTtyZXR1cm4gUSgiYnV0dG9uIix7cmVmOkssdHlwZToiYnV0dG9uIiwiZGF0YS1zaW11bGF0b3ItdG9vbGJhci10aXRsZSI6ITAsb25Nb3VzZUVudGVyOihNKT0+e3ooITApLFo/LihNKX0sb25Nb3VzZUxlYXZlOihNKT0+e3ooITEpLCQ/LihNKX0sc3R5bGU6ey4uLmg0LGJhY2tncm91bmQ6SD8icmdiYSgyNTUsMjU1LDI1NSwwLjEpIjoidHJhbnNwYXJlbnQiLC4uLnF9LC4uLlYsY2hpbGRyZW46W1EoInNwYW4iLHtzdHlsZTp7ZGlzcGxheToiaW5saW5lLWZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjQsZm9udFNpemU6MTIsZm9udFdlaWdodDo2MDAsY29sb3I6IiNmZmYiLG1heFdpZHRoOiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjpbTCwhWSYmUSgic3ZnIix7d2lkdGg6IjEwIixoZWlnaHQ6IjEwIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixzdHlsZTp7Y29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC42KSIsZmxleFNocmluazowfSxjaGlsZHJlbjpRKCJwb2x5bGluZSIse3BvaW50czoiNiA5IDEyIDE1IDE4IDkifSl9KV19KSxRKCJzcGFuIix7c3R5bGU6e2ZvbnRTaXplOjEwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNSkiLG1heFdpZHRoOiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjpCfSldfSl9KSxnND17ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6NCxmbGV4U2hyaW5rOjB9O2Z1bmN0aW9uIHg0KHtzdHlsZTpYLC4uLkd9KXtyZXR1cm4gUSgiZGl2Iix7c3R5bGU6ey4uLmc0LC4uLlh9LC4uLkd9KX12YXIgcDQ9e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLHBhZGRpbmc6Nixib3JkZXJSYWRpdXM6NixjdXJzb3I6InBvaW50ZXIiLGRpc3BsYXk6ImlubGluZS1mbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOCkiLHRyYW5zaXRpb246ImJhY2tncm91bmQtY29sb3IgMC4xNXMsIGNvbG9yIDAuMTVzIn0sajE9YTAoZnVuY3Rpb24oe2ZvcmNlRGlzYWJsZWQ6RyxzdHlsZTpKLGRpc2FibGVkOlksb25Nb3VzZUVudGVyOnEsb25Nb3VzZUxlYXZlOlosY2hpbGRyZW46JCwuLi5WfSxLKXtsZXQgXz1TMChROSksSD1ZfHxHfHxfPy5kaXNhYmxlZCxbeixMXT1UKCExKTtyZXR1cm4gUSgiYnV0dG9uIix7cmVmOkssdHlwZToiYnV0dG9uIixkaXNhYmxlZDpILG9uTW91c2VFbnRlcjooQik9PntMKCEwKSxxPy4oQil9LG9uTW91c2VMZWF2ZTooQik9PntMKCExKSxaPy4oQil9LHN0eWxlOnsuLi5wNCxjb2xvcjpIPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMjUpIjoicmdiYSgyNTUsMjU1LDI1NSwwLjgpIixiYWNrZ3JvdW5kOnomJiFIPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMSkiOiJ0cmFuc3BhcmVudCIsY3Vyc29yOkg/Im5vdC1hbGxvd2VkIjoicG9pbnRlciIsLi4uSn0sLi4uVixjaGlsZHJlbjokfSl9KTtmdW5jdGlvbiBmNCgpe3JldHVyblsndGVsbCBhcHBsaWNhdGlvbiAiU3lzdGVtIEV2ZW50cyIgdG8gdGVsbCBwcm9jZXNzICJTaW11bGF0b3IiIHRvIHNldCBmcm9udG1vc3QgdG8gdHJ1ZScsJ3RlbGwgYXBwbGljYXRpb24gIlN5c3RlbSBFdmVudHMiIHRvIHRlbGwgcHJvY2VzcyAiU2ltdWxhdG9yIiB0byBwZXJmb3JtIGFjdGlvbiAiQVhSYWlzZSIgb2YgKGZpcnN0IHdpbmRvdyB3aG9zZSBuYW1lIGNvbnRhaW5zICJ3YXRjaE9TIiknLCd0ZWxsIGFwcGxpY2F0aW9uICJTeXN0ZW0gRXZlbnRzIiB0byB0ZWxsIHByb2Nlc3MgIlNpbXVsYXRvciIgdG8gY2xpY2sgbWVudSBpdGVtICJIb21lIiBvZiBtZW51ICJEZXZpY2UiIG9mIG1lbnUgYmFyIGl0ZW0gIkRldmljZSIgb2YgbWVudSBiYXIgMSddLm1hcCgoRyk9PmAtZSAnJHtHfSdgKS5yZWR1Y2UoKEcsSik9PmAke0d9ICR7Sn1gLCJvc2FzY3JpcHQiKX12YXIgZDQ9e3BvcnRyYWl0OiJsYW5kc2NhcGVfbGVmdCIsbGFuZHNjYXBlX2xlZnQ6InBvcnRyYWl0X3Vwc2lkZV9kb3duIixwb3J0cmFpdF91cHNpZGVfZG93bjoibGFuZHNjYXBlX3JpZ2h0IixsYW5kc2NhcGVfcmlnaHQ6InBvcnRyYWl0In0sdTQ9USgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46USgicGF0aCIse2Q6Ik0zIDEwLjUgMTIgM2w5IDcuNVYyMGExIDEgMCAwIDEtMSAxaC01di03aC02djdINGExIDEgMCAwIDEtMS0xeiJ9KX0pLGM0PVEoInN2ZyIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltRKCJwYXRoIix7ZDoiTTE0LjUgNGgtNUw3IDdINGEyIDIgMCAwIDAtMiAydjlhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0yVjlhMiAyIDAgMCAwLTItMmgtM3oifSksUSgiY2lyY2xlIix7Y3g6IjEyIixjeToiMTMiLHI6IjQifSldfSksaTQ9USgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMTIgMTMiLGZpbGw6ImN1cnJlbnRDb2xvciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpRKCJwYXRoIix7ZDoiTTEwLjIzMDUgMTIuODA3N0g0LjQyMzgzQzMuOTIzODMgMTIuODA3NyAzLjU0Njg4IDEyLjY4NDYgMy4yOTI5NyAxMi40Mzg1QzMuMDQyOTcgMTIuMTk2MyAyLjkxNzk3IDExLjgxOTQgMi45MTc5NyAxMS4zMDc3VjUuNTEyNzRDMi45MTc5NyA0Ljk5NzExIDMuMDQyOTcgNC42MTgyMSAzLjI5Mjk3IDQuMzc2MDJDMy41NDY4OCA0LjEyOTkzIDMuOTIzODMgNC4wMDY4OCA0LjQyMzgzIDQuMDA2ODhIMTAuMjMwNUMxMC43MzQ0IDQuMDA2ODggMTEuMTExMyA0LjEyOTkzIDExLjM2MTMgNC4zNzYwMkMxMS42MTEzIDQuNjE4MjEgMTEuNzM2MyA0Ljk5NzExIDExLjczNjMgNS41MTI3NFYxMS4zMDc3QzExLjczNjMgMTEuODE5NCAxMS42MTEzIDEyLjE5NjMgMTEuMzYxMyAxMi40Mzg1QzExLjExMTMgMTIuNjg0NiAxMC43MzQ0IDEyLjgwNzcgMTAuMjMwNSAxMi44MDc3Wk0xMC4yMTI5IDExLjg2NDNDMTAuNDE2IDExLjg2NDMgMTAuNTYyNSAxMS44MTk0IDEwLjY1MjMgMTEuNzI5NUMxMC43NDYxIDExLjY0MzYgMTAuNzkzIDExLjQ5NzEgMTAuNzkzIDExLjI5MDFWNS41MjQ0NkMxMC43OTMgNS4zMTc0MyAxMC43NDYxIDUuMTcwOTQgMTAuNjUyMyA1LjA4NTAxQzEwLjU2MjUgNC45OTUxNiAxMC40MTYgNC45NTAyNCAxMC4yMTI5IDQuOTUwMjRINC40NDE0MUM0LjI0MjE5IDQuOTUwMjQgNC4wOTU3IDQuOTk1MTYgNC4wMDE5NSA1LjA4NTAxQzMuOTA4MiA1LjE3MDk0IDMuODYxMzMgNS4zMTc0MyAzLjg2MTMzIDUuNTI0NDZWMTEuMjkwMUMzLjg2MTMzIDExLjQ5NzEgMy45MDgyIDExLjY0MzYgNC4wMDE5NSAxMS43Mjk1QzQuMDk1NyAxMS44MTk0IDQuMjQyMTkgMTEuODY0MyA0LjQ0MTQxIDExLjg2NDNIMTAuMjEyOVpNMi45MTc5NyAyLjU4MzA1VjAuNDE1MDgzQzIuOTE3OTcgMC4yMDAyNCAyLjk4NjMzIDAuMDY5MzgwMyAzLjEyMzA1IDAuMDIyNTA1M0MzLjI1OTc3IC0wLjAyODI3NTkgMy40MTAxNiAwLjAwNjg4MDMzIDMuNTc0MjIgMC4xMjc5NzRMNS4wNTA3OCAxLjIxMTk2QzUuMTc1NzggMS4zMDU3MSA1LjIzODI4IDEuNDAxNDEgNS4yMzgyOCAxLjQ5OTA3QzUuMjM4MjggMS41OTY3MiA1LjE3NTc4IDEuNjkyNDMgNS4wNTA3OCAxLjc4NjE4TDMuNTc0MjIgMi44NjQzQzMuNDEwMTYgMi45ODU0IDMuMjU5NzcgMy4wMjI1MSAzLjEyMzA1IDIuOTc1NjNDMi45ODYzMyAyLjkyNDg1IDIuOTE3OTcgMi43OTM5OSAyLjkxNzk3IDIuNTgzMDVaTTMuNTMzMiAxLjE1MzM2QzMuNjI2OTUgMS4xNTMzNiAzLjcwNzAzIDEuMTg2NTcgMy43NzM0NCAxLjI1Mjk3QzMuODQzNzUgMS4zMTkzOCAzLjg3ODkxIDEuMzk3NTEgMy44Nzg5MSAxLjQ4NzM1QzMuODc4OTEgMS41ODExIDMuODQzNzUgMS42NjMxMyAzLjc3MzQ0IDEuNzMzNDRDMy43MDcwMyAxLjc5OTg1IDMuNjI2OTUgMS44MzMwNSAzLjUzMzIgMS44MzMwNUgyLjgwNjY0QzIuMzgwODYgMS44MzMwNSAyLjAxMTcyIDEuOTI0ODUgMS42OTkyMiAyLjEwODQ0QzEuMzkwNjIgMi4yODgxMyAxLjE1MjM0IDIuNTM4MTMgMC45ODQzNzUgMi44NTg0NEMwLjgxNjQwNiAzLjE3ODc2IDAuNzMyNDIyIDMuNTQ1OTQgMC43MzI0MjIgMy45NjAwMVY0LjgzODkxQzAuNzMyNDIyIDQuOTM2NTcgMC42OTcyNjYgNS4wMjI1MSAwLjYyNjk1MyA1LjA5NjcyQzAuNTUyNzM0IDUuMTY3MDQgMC40NjQ4NDQgNS4yMDIxOSAwLjM2MzI4MSA1LjIwMjE5QzAuMjY1NjI1IDUuMjAyMTkgMC4xODE2NDEgNS4xNjcwNCAwLjExMTMyOCA1LjA5NjcyQzAuMDM3MTA5NCA1LjAyMjUxIDAgNC45MzY1NyAwIDQuODM4OTFWMy45NjAwMUMwIDMuNDAxNDEgMC4xMTcxODggMi45MTExOCAwLjM1MTU2MiAyLjQ4OTNDMC41ODIwMzEgMi4wNjc0MyAwLjkwODIwMyAxLjczOTMgMS4zMzAwOCAxLjUwNDkzQzEuNzQ4MDUgMS4yNzA1NSAyLjIzODI4IDEuMTUzMzYgMi44MDA3OCAxLjE1MzM2SDMuNTMzMloifSl9KSxhND1hMChmdW5jdGlvbih7b25DbGljazpHLC4uLkp9LFkpe2xldCBxPWIxKCJIb21lQnV0dG9uIik7cmV0dXJuIFEoajEse3JlZjpZLCJhcmlhLWxhYmVsIjoiSG9tZSIsb25DbGljazooWik9PntpZihHPy4oWiksWi5kZWZhdWx0UHJldmVudGVkKXJldHVybjtpZihxLmRldmljZVR5cGU9PT0id2F0Y2giKXEuZXhlYyhmNCgpKTtlbHNlIHEuZXhlYygic2VydmUtc2ltIGJ1dHRvbiBob21lIil9LC4uLkosY2hpbGRyZW46dTR9KX0pLGw0PWEwKGZ1bmN0aW9uKHtvbkNsaWNrOkcsLi4uSn0sWSl7bGV0IHE9YjEoIlNjcmVlbnNob3RCdXR0b24iKTtyZXR1cm4gUShqMSx7cmVmOlksImFyaWEtbGFiZWwiOiJTY3JlZW5zaG90IixvbkNsaWNrOihaKT0+e2lmKEc/LihaKSxaLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2lmKHEuZGV2aWNlVWRpZClxLmV4ZWMoYHhjcnVuIHNpbWN0bCBpbyAke3EuZGV2aWNlVWRpZH0gc2NyZWVuc2hvdCB+L0Rlc2t0b3Avc2VydmUtc2ltLXNjcmVlbnNob3QtJChkYXRlICslcykucG5nYCl9LC4uLkosY2hpbGRyZW46YzR9KX0pLG80PWEwKGZ1bmN0aW9uKHtvbkNsaWNrOkcsZm9yY2VEaXNhYmxlZDpKLC4uLll9LHEpe2xldCBaPWIxKCJSb3RhdGVCdXR0b24iKSwkPVouZGV2aWNlVHlwZT09PSJ3YXRjaCJ8fFouZGV2aWNlVHlwZT09PSJ2aXNpb24iLFtWLEtdPVQoInBvcnRyYWl0Iik7cmV0dXJuIFIoKCk9PntLKFoub3JpZW50YXRpb24/PyJwb3J0cmFpdCIpfSxbWi5kZXZpY2VVZGlkLFoub3JpZW50YXRpb25dKSxRKGoxLHtyZWY6cSwiYXJpYS1sYWJlbCI6IlJvdGF0ZSBkZXZpY2UiLGZvcmNlRGlzYWJsZWQ6Snx8JCxvbkNsaWNrOihfKT0+e2lmKEc/LihfKSxfLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2lmKCFaLmRldmljZVVkaWR8fCQpcmV0dXJuO2xldCBIPWQ0W1oub3JpZW50YXRpb24/P1ZdO2lmKEsoSCksWi5vblJvdGF0ZSlaLm9uUm90YXRlKEgpO2Vsc2UgWi5leGVjKGBzZXJ2ZS1zaW0gcm90YXRlICR7SH0gLWQgJHtaLmRldmljZVVkaWR9YCl9LC4uLlksY2hpbGRyZW46aTR9KX0pLFEwPXY0O1EwLlRpdGxlPW00O1EwLkFjdGlvbnM9eDQ7UTAuQnV0dG9uPWoxO1EwLkhvbWVCdXR0b249YTQ7UTAuU2NyZWVuc2hvdEJ1dHRvbj1sNDtRMC5Sb3RhdGVCdXR0b249bzQ7ZnVuY3Rpb24gcjQoWCl7bGV0W0csSl09VChudWxsKSxZPWIobmV3IFNldCkscT1qKChaKT0+e3JldHVybiBZLmN1cnJlbnQuYWRkKFopLCgpPT57WS5jdXJyZW50LmRlbGV0ZShaKX19LFtdKTtyZXR1cm4gUigoKT0+e2lmKCFYKXJldHVybjtsZXQgWj1uZXcgQWJvcnRDb250cm9sbGVyLCQ9ITEsVj1udWxsLEs9WC5yZXBsYWNlKC9cL3N0cmVhbVwubWpwZWckLywiIiksXz0oTyk9PntpZihPLndpZHRoPD0wfHxPLmhlaWdodDw9MClyZXR1cm47SigoUCk9PlAmJlAud2lkdGg9PT1PLndpZHRoJiZQLmhlaWdodD09PU8uaGVpZ2h0JiZQLm9yaWVudGF0aW9uPT09Ty5vcmllbnRhdGlvbj9QOk8pfSxIPSgpPT57ZmV0Y2goYCR7S30vY29uZmlnYCx7c2lnbmFsOlouc2lnbmFsfSkudGhlbigoTyk9Pk8uanNvbigpKS50aGVuKF8pLmNhdGNoKCgpPT57fSl9O0goKTtsZXQgej1zZXRJbnRlcnZhbChILDEwMDApLEw9bmV3IFVSTChYKTtMLnNlYXJjaFBhcmFtcy5zZXQoInJhdyIsIjEiKTtsZXQgQj1MLnRvU3RyaW5nKCksTT0oKT0+e2lmKCR8fFouc2lnbmFsLmFib3J0ZWR8fFYpcmV0dXJuO1Y9c2V0VGltZW91dCgoKT0+e1Y9bnVsbCxOKCl9LDEwMDApfSxOPWFzeW5jKCk9Pnt0cnl7bGV0IFA9KGF3YWl0IGZldGNoKEIse3NpZ25hbDpaLnNpZ25hbH0pKS5ib2R5Py5nZXRSZWFkZXIoKTtpZighUCl7TSgpO3JldHVybn1sZXQgQT1uZXcgVWludDhBcnJheSgwKTt3aGlsZSghMCl7bGV0e2RvbmU6dix2YWx1ZTp5fT1hd2FpdCBQLnJlYWQoKTtpZih2KWJyZWFrO2xldCB1PW5ldyBVaW50OEFycmF5KEEubGVuZ3RoK3kubGVuZ3RoKTt1LnNldChBKSx1LnNldCh5LEEubGVuZ3RoKSxBPXU7d2hpbGUoITApe2xldCBwPS0xO2ZvcihsZXQgZj0wO2Y8QS5sZW5ndGgtMTtmKyspaWYoQVtmXT09PTI1NSYmQVtmKzFdPT09MjE2KXtwPWY7YnJlYWt9aWYocD09PS0xKWJyZWFrO2xldCBjPS0xO2ZvcihsZXQgZj1wKzI7ZjxBLmxlbmd0aC0xO2YrKylpZihBW2ZdPT09MjU1JiZBW2YrMV09PT0yMTcpe2M9ZisyO2JyZWFrfWlmKGM9PT0tMSlicmVhaztsZXQgejA9QS5zbGljZShwLGMpO0E9QS5zbGljZShjKTtsZXQgcz1uZXcgQmxvYihbejBdLHt0eXBlOiJpbWFnZS9qcGVnIn0pLHQ9VVJMLmNyZWF0ZU9iamVjdFVSTChzKTtpZihZLmN1cnJlbnQuc2l6ZT09PTApe1VSTC5yZXZva2VPYmplY3RVUkwodCk7Y29udGludWV9Zm9yKGxldCBmIG9mIFkuY3VycmVudClmKHQpfX19Y2F0Y2h7fWZpbmFsbHl7TSgpfX07cmV0dXJuIE4oKSwoKT0+e2lmKCQ9ITAsViljbGVhclRpbWVvdXQoVik7Wi5hYm9ydCgpLGNsZWFySW50ZXJ2YWwoeil9fSxbWF0pLHtzdWJzY3JpYmVGcmFtZTpxLGZyYW1lOm51bGwsY29uZmlnOkd9fXZhciBzND17S2V5QTo0LEtleUI6NSxLZXlDOjYsS2V5RDo3LEtleUU6OCxLZXlGOjksS2V5RzoxMCxLZXlIOjExLEtleUk6MTIsS2V5SjoxMyxLZXlLOjE0LEtleUw6MTUsS2V5TToxNixLZXlOOjE3LEtleU86MTgsS2V5UDoxOSxLZXlROjIwLEtleVI6MjEsS2V5UzoyMixLZXlUOjIzLEtleVU6MjQsS2V5VjoyNSxLZXlXOjI2LEtleVg6MjcsS2V5WToyOCxLZXlaOjI5LERpZ2l0MTozMCxEaWdpdDI6MzEsRGlnaXQzOjMyLERpZ2l0NDozMyxEaWdpdDU6MzQsRGlnaXQ2OjM1LERpZ2l0NzozNixEaWdpdDg6MzcsRGlnaXQ5OjM4LERpZ2l0MDozOSxFbnRlcjo0MCxFc2NhcGU6NDEsQmFja3NwYWNlOjQyLFRhYjo0MyxTcGFjZTo0NCxNaW51czo0NSxFcXVhbDo0NixCcmFja2V0TGVmdDo0NyxCcmFja2V0UmlnaHQ6NDgsQmFja3NsYXNoOjQ5LFNlbWljb2xvbjo1MSxRdW90ZTo1MixCYWNrcXVvdGU6NTMsQ29tbWE6NTQsUGVyaW9kOjU1LFNsYXNoOjU2LENhcHNMb2NrOjU3LEYxOjU4LEYyOjU5LEYzOjYwLEY0OjYxLEY1OjYyLEY2OjYzLEY3OjY0LEY4OjY1LEY5OjY2LEYxMDo2NyxGMTE6NjgsRjEyOjY5LFByaW50U2NyZWVuOjcwLFNjcm9sbExvY2s6NzEsUGF1c2U6NzIsSW5zZXJ0OjczLEhvbWU6NzQsUGFnZVVwOjc1LERlbGV0ZTo3NixFbmQ6NzcsUGFnZURvd246NzgsQXJyb3dSaWdodDo3OSxBcnJvd0xlZnQ6ODAsQXJyb3dEb3duOjgxLEFycm93VXA6ODIsTnVtTG9jazo4MyxOdW1wYWREaXZpZGU6ODQsTnVtcGFkTXVsdGlwbHk6ODUsTnVtcGFkU3VidHJhY3Q6ODYsTnVtcGFkQWRkOjg3LE51bXBhZEVudGVyOjg4LE51bXBhZDE6ODksTnVtcGFkMjo5MCxOdW1wYWQzOjkxLE51bXBhZDQ6OTIsTnVtcGFkNTo5MyxOdW1wYWQ2Ojk0LE51bXBhZDc6OTUsTnVtcGFkODo5NixOdW1wYWQ5Ojk3LE51bXBhZDA6OTgsTnVtcGFkRGVjaW1hbDo5OSxDb250cm9sTGVmdDoyMjQsU2hpZnRMZWZ0OjIyNSxBbHRMZWZ0OjIyNixNZXRhTGVmdDoyMjcsQ29udHJvbFJpZ2h0OjIyOCxTaGlmdFJpZ2h0OjIyOSxBbHRSaWdodDoyMzAsTWV0YVJpZ2h0OjIzMX07ZnVuY3Rpb24gdDQoWCl7cmV0dXJuIHM0W1hdPz9udWxsfWZ1bmN0aW9uIHIwKFgpe2xldCBHPXdpbmRvdy5fX1NJTV9QUkVWSUVXX18/LmJhc2VQYXRoPz8iLyI7cmV0dXJuIEc9PT0iLyI/YC8ke1h9YDpgJHtHfS8ke1h9YH1mdW5jdGlvbiBiOChYKXtyZXR1cm4gWD8uZXJyb3JzPy5pbmNsdWRlcyhfOCk/PyExfWZ1bmN0aW9uIGo4KHtzaXplOlg9MTgsc3Ryb2tlV2lkdGg6Rz0yfSl7cmV0dXJuIFEoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6WCxoZWlnaHQ6WCx2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDpHLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltRKCJwYXRoIix7ZDoiTTMgMTJhOSA5IDAgMSAwIDktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCJ9KSxRKCJwYXRoIix7ZDoiTTMgM3Y1aDUifSldfSl9ZnVuY3Rpb24gbjQoWCl7bGV0W0csSl09VChudWxsKSxbWSxxXT1UKCJBWCBvZmYiKTtyZXR1cm4gUigoKT0+e2lmKCFYKXtKKG51bGwpLHEoIkFYIG9mZiIpO3JldHVybn1KKG51bGwpLHEoIkFYIHdhaXRpbmciKTtsZXQgWj1uZXcgRXZlbnRTb3VyY2UoWCk7cmV0dXJuIFoub25tZXNzYWdlPSgkKT0+e3RyeXtsZXQgVj1KU09OLnBhcnNlKCQuZGF0YSk7SihWKSxxKGI4KFYpPyJBWCB1bmF2YWlsYWJsZTogaW5zdGFsbCBBWGUiOmAke1YuZWxlbWVudHMubGVuZ3RofSBBWCBlbGVtZW50c2ApfWNhdGNoe3EoIkFYIHBhcnNlIGVycm9yIil9fSxaLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoKT0+e3EoIkFYIHJlY29ubmVjdGluZyIpfSksKCk9PlouY2xvc2UoKX0sW1hdKSx7c25hcHNob3Q6RyxzdGF0dXM6WX19dmFyIFM4PXcwKHtzbmFwc2hvdDpudWxsLHN0YXR1czoiQVggb2ZmIn0pLHk4PXcwKG51bGwpO2Z1bmN0aW9uIFc5KCl7cmV0dXJuIFMwKFM4KX1mdW5jdGlvbiB2OCgpe2xldCBYPVMwKHk4KTtpZighWCl0aHJvdyBFcnJvcigiQVggc2VsZWN0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUiKTtyZXR1cm4gWH1mdW5jdGlvbiBlNCh7ZW5kcG9pbnQ6WCxjaGlsZHJlbjpHfSl7bGV0e3NuYXBzaG90Okosc3RhdHVzOll9PW40KFgpLFtxLFpdPVQobnVsbCksWyQsVl09VChudWxsKTtSKCgpPT57aWYoIVgpWihudWxsKSxWKG51bGwpfSxbWF0pO2xldCBLPWowKCgpPT4oe3NuYXBzaG90Okosc3RhdHVzOll9KSxbSixZXSksXz1qMCgoKT0+KHtoaWdobGlnaHRlZEtleTpxLHNlbGVjdGVkS2V5OiQsc2V0SGlnaGxpZ2h0ZWRLZXk6WixzZXRTZWxlY3RlZEtleTpWfSksW3EsJF0pO3JldHVybiBRKFM4LlByb3ZpZGVyLHt2YWx1ZTpLLGNoaWxkcmVuOlEoeTguUHJvdmlkZXIse3ZhbHVlOl8sY2hpbGRyZW46R30pfSl9YXN5bmMgZnVuY3Rpb24gJDAoWCl7cmV0dXJuKGF3YWl0IGZldGNoKHIwKCJleGVjIikse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxib2R5OkpTT04uc3RyaW5naWZ5KHtjb21tYW5kOlh9KX0pKS5qc29uKCl9ZnVuY3Rpb24gWDYoWCxHKXtsZXRbSixZXT1UKFtdKSxbcSxaXT1UKG51bGwpLFskLFZdPVQoITEpLEs9aihhc3luYygpPT57aWYoIVgpcmV0dXJuO1YoITApLFoobnVsbCk7dHJ5e2xldCBfPWF3YWl0IGZldGNoKFgse2NhY2hlOiJuby1zdG9yZSJ9KSxIPWF3YWl0IF8uanNvbigpO2lmKCFfLm9rfHxILmVycm9yKXRocm93IEVycm9yKEguZXJyb3J8fCJGYWlsZWQgdG8gbGlzdCBXZWJLaXQgdGFyZ2V0cyIpO1koSC50YXJnZXRzPz9bXSl9Y2F0Y2goXyl7WihfIGluc3RhbmNlb2YgRXJyb3I/Xy5tZXNzYWdlOiJGYWlsZWQgdG8gc3RhcnQgV2ViS2l0IERldlRvb2xzIil9ZmluYWxseXtWKCExKX19LFtYXSk7cmV0dXJuIFIoKCk9PntpZighRylyZXR1cm47SygpO2xldCBfPXNldEludGVydmFsKCgpPT52b2lkIEsoKSwyNTAwKTtyZXR1cm4oKT0+Y2xlYXJJbnRlcnZhbChfKX0sW0csS10pLHt0YXJnZXRzOkosZXJyb3I6cSxsb2FkaW5nOiQscmVmcmVzaDpLfX1mdW5jdGlvbiBHNihYKXtsZXQgRz1YLmNvbnRlbnREb2N1bWVudDtpZighRylyZXR1cm47bGV0IEo9KCk9PntsZXQgWj1bR107d2hpbGUoWi5sZW5ndGgpe2xldCAkPVoucG9wKCksVj0kLnF1ZXJ5U2VsZWN0b3JBbGwoIlthcmlhLWxhYmVsXSxbdGl0bGVdIik7Zm9yKGxldCBLIG9mIFYpe2xldCBfPUsuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIil8fEsudGl0bGV8fCIiO2lmKC9edG9nZ2xlIHNjcmVlbmNhc3QkL2kudGVzdChfKSlyZXR1cm4gS31mb3IobGV0IEsgb2YgJC5xdWVyeVNlbGVjdG9yQWxsKCIqIikpaWYoSy5zaGFkb3dSb290KVoucHVzaChLLnNoYWRvd1Jvb3QpfXJldHVybiBudWxsfSxZPTAscT0oKT0+e1krKztsZXQgWj1KKCk7aWYoWiYmWi5nZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIpIT09ImZhbHNlIil7Wi5jbGljaygpO3JldHVybn1pZihZPDIwKXNldFRpbWVvdXQocSwxMDApfTtxKCl9dmFyIHExPW5ldyBNYXA7ZnVuY3Rpb24gSjYoWCxHKXtsZXQgSj1gJHtYfToke0d9YCxZPXExLmdldChKKTtpZihZIT09dm9pZCAwKXJldHVybiBQcm9taXNlLnJlc29sdmUoWSk7bGV0IHE9aDgoJDAsWCxHKS50aGVuKChaKT0+e2xldCAkPVouaWNvbkRhdGFVcmw/P251bGw7cmV0dXJuIHExLnNldChKLCQpLCR9KS5jYXRjaCgoKT0+e3JldHVybiBxMS5zZXQoSixudWxsKSxudWxsfSk7cmV0dXJuIHExLnNldChKLHEpLHF9ZnVuY3Rpb24gWTYoWCxHKXtsZXRbSixZXT1UKHt9KSxxPWowKCgpPT5HLnNsaWNlKCkuc29ydCgpLmpvaW4oInwiKSxbR10pO3JldHVybiBSKCgpPT57aWYoIVgpcmV0dXJuO2xldCBaPSExO2ZvcihsZXQgJCBvZiBHKXtpZighJCljb250aW51ZTtsZXQgVj1gJHtYfTokeyR9YCxLPXExLmdldChWKTtpZih0eXBlb2YgSz09PSJzdHJpbmcifHxLPT09bnVsbCl7WSgoXyk9Pl9bJF09PT1LP186ey4uLl8sWyRdOkt9KTtjb250aW51ZX1KNihYLCQpLnRoZW4oKF8pPT57aWYoWilyZXR1cm47WSgoSCk9Pih7Li4uSCxbJF06X30pKX0pfXJldHVybigpPT57Wj0hMH19LFtYLHFdKSxKfWZ1bmN0aW9uIFMxKFgsRyl7ZmV0Y2gocjAoImRldnRvb2xzL2hpZ2hsaWdodCIpLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpKU09OLnN0cmluZ2lmeSh7dGFyZ2V0SWQ6WCxvbjpHfSksa2VlcGFsaXZlOiEwfSkuY2F0Y2goKCk9Pnt9KX1mdW5jdGlvbiBDOCgpe2xldCBYPXIwKCJkZXZ0b29scy9yZWxlYXNlIik7dHJ5e2lmKHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3Iuc2VuZEJlYWNvbil7bGV0IEc9bmV3IEJsb2IoWyJ7fSJdLHt0eXBlOiJhcHBsaWNhdGlvbi9qc29uIn0pO2lmKG5hdmlnYXRvci5zZW5kQmVhY29uKFgsRykpcmV0dXJufX1jYXRjaHt9ZmV0Y2goWCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6Int9IixrZWVwYWxpdmU6ITB9KS5jYXRjaCgoKT0+e30pfWZ1bmN0aW9uIFo2KHt1ZGlkOlgsdGFyZ2V0czpHLHNlbGVjdGVkOkosb25TZWxlY3RUYXJnZXQ6WSxvblJlZnJlc2g6cX0pe2xldCBaPVY4KEcpLCQ9Wi5tYXAoKE4pPT5OLmJ1bmRsZUlkKS5maWx0ZXIoKE4pPT4hIU4pLFY9WTYoWCwkKSxbSyxfXT1UKCExKSxbSCx6XT1UKG51bGwpLEw9YihudWxsKSxCPWIobnVsbCk7UigoKT0+e2lmKCFLKXJldHVybjtsZXQgTj0oTyk9PntpZighQi5jdXJyZW50KXJldHVybjtpZighQi5jdXJyZW50LmNvbnRhaW5zKE8udGFyZ2V0KSlfKCExKX07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsTiksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsTil9LFtLXSksUigoKT0+e2lmKEspcmV0dXJuO2lmKEwuY3VycmVudClTMShMLmN1cnJlbnQsITEpLEwuY3VycmVudD1udWxsO0M4KCl9LFtLXSksUigoKT0+e2xldCBOPSgpPT5DOCgpO3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLE4pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLE4pLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIixOKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIixOKX19LFtdKTtsZXQgTT1KPyhKLnRpdGxlfHxKLnVybHx8Si5hcHBOYW1lfHwiVW50aXRsZWQiKS5zbGljZSgwLDkwKToiU2VsZWN0IHRhcmdldCI7cmV0dXJuIFEoImRpdiIse3JlZjpCLHN0eWxlOm0ucGlja2VyV3JhcCxjaGlsZHJlbjpbUSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT57XygoTik9PntpZighTilxKCk7cmV0dXJuIU59KX0sc3R5bGU6bS5waWNrZXJCdXR0b24sImFyaWEtaGFzcG9wdXAiOiJsaXN0Ym94IiwiYXJpYS1leHBhbmRlZCI6SywiYXJpYS1sYWJlbCI6IldlYktpdCB0YXJnZXQiLGNoaWxkcmVuOltRKCJzcGFuIix7c3R5bGU6bS5waWNrZXJMYWJlbCxjaGlsZHJlbjpNfSksUSgic3ZnIix7d2lkdGg6IjEyIixoZWlnaHQ6IjEyIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46USgicG9seWxpbmUiLHtwb2ludHM6IjYgOSAxMiAxNSAxOCA5In0pfSldfSksSyYmUSgidWwiLHtyb2xlOiJsaXN0Ym94IixzdHlsZTptLnBpY2tlckxpc3QsY2hpbGRyZW46Wi5tYXAoKE4pPT57bGV0IE89Ti5idW5kbGVJZD9WW04uYnVuZGxlSWRdOm51bGw7cmV0dXJuIFEoImxpIix7c3R5bGU6bS5waWNrZXJHcm91cCxjaGlsZHJlbjpbUSgiZGl2Iix7c3R5bGU6bS5waWNrZXJHcm91cEhlYWRlcixjaGlsZHJlbjpbTz9RKCJpbWciLHtzcmM6TyxhbHQ6IiIsc3R5bGU6bS5waWNrZXJHcm91cEljb25JbWd9KTpRKCJzcGFuIix7c3R5bGU6bS5waWNrZXJHcm91cEljb25JbWcsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSxRKCJzcGFuIix7c3R5bGU6bS5waWNrZXJHcm91cE5hbWUsY2hpbGRyZW46Ti5hcHBOYW1lfSldfSksUSgidWwiLHtyb2xlOiJncm91cCIsc3R5bGU6bS5waWNrZXJHcm91cExpc3QsY2hpbGRyZW46Ti50YXJnZXRzLm1hcCgoUCk9PntsZXQgQT1KPy5pZD09PVAuaWQsdj0hIVAuaW5Vc2VCeU90aGVySW5zcGVjdG9yJiYhQSx5PShQLnRpdGxlfHxQLnVybHx8UC5hcHBOYW1lfHwiVW50aXRsZWQiKS5zbGljZSgwLDkwKTtyZXR1cm4gUSgibGkiLHtyb2xlOiJvcHRpb24iLCJhcmlhLXNlbGVjdGVkIjpBLCJhcmlhLWRpc2FibGVkIjp2LHRhYkluZGV4OnY/LTE6MCx0aXRsZTp2PyJBbHJlYWR5IGJlaW5nIGluc3BlY3RlZCBieSBhbm90aGVyIGRlYnVnZ2VyIjp2b2lkIDAsb25Nb3VzZUVudGVyOigpPT57aWYodilyZXR1cm47aWYoTC5jdXJyZW50JiZMLmN1cnJlbnQhPT1QLmlkKVMxKEwuY3VycmVudCwhMSk7TC5jdXJyZW50PVAuaWQseihQLmlkKSxTMShQLmlkLCEwKX0sb25Nb3VzZUxlYXZlOigpPT57aWYoTC5jdXJyZW50PT09UC5pZClTMShQLmlkLCExKSxMLmN1cnJlbnQ9bnVsbDt6KCh1KT0+dT09PVAuaWQ/bnVsbDp1KX0sb25DbGljazooKT0+e2lmKHYpcmV0dXJuO1koUC5pZCksXyghMSl9LHN0eWxlOnsuLi5tLnBpY2tlckl0ZW0sLi4uQT9tLnBpY2tlckl0ZW1TZWxlY3RlZDpudWxsLC4uLkg9PT1QLmlkJiYhdj9tLnBpY2tlckl0ZW1Ib3ZlcmVkOm51bGwsLi4udj9tLnBpY2tlckl0ZW1EaXNhYmxlZDpudWxsfSxjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOm0ucGlja2VySXRlbVRpdGxlLGNoaWxkcmVuOnl9KSxQLnVybCYmUC51cmwhPT0iYWJvdXQ6YmxhbmsiJiZRKCJzcGFuIix7c3R5bGU6bS5waWNrZXJJdGVtVXJsLGNoaWxkcmVuOlAudXJsfSldfSxQLmlkKX0pfSldfSxOLmtleSl9KX0pXX0pfWZ1bmN0aW9uIHE2KFgpe3RyeXtsZXQgRz1KU09OLnBhcnNlKFgpLEo9W107Zm9yKGxldFtZLHFdb2YgT2JqZWN0LmVudHJpZXMoRy5kZXZpY2VzPz97fSkpe2xldCBaPVkucmVwbGFjZSgvXmNvbVwuYXBwbGVcLkNvcmVTaW11bGF0b3JcLlNpbVJ1bnRpbWVcLi8sIiIpLnJlcGxhY2UoLy0vZywiLiIpO2ZvcihsZXQgJCBvZiBxKWlmKCQuaXNBdmFpbGFibGUpSi5wdXNoKHt1ZGlkOiQudWRpZCxuYW1lOiQubmFtZSxzdGF0ZTokLnN0YXRlLHJ1bnRpbWU6Wn0pfXJldHVybiBKfWNhdGNoe3JldHVybltdfX1mdW5jdGlvbiB5MShYKXtsZXQgRz1YLnRvTG93ZXJDYXNlKCk7aWYoRy5pbmNsdWRlcygiaXBob25lIikpcmV0dXJuIDA7aWYoRy5pbmNsdWRlcygiaXBhZCIpKXJldHVybiAxO2lmKEcuaW5jbHVkZXMoIndhdGNoIikpcmV0dXJuIDI7aWYoRy5pbmNsdWRlcygidmlzaW9uIikpcmV0dXJuIDM7cmV0dXJuIDR9ZnVuY3Rpb24gdjEoWCl7bGV0IEc9WC50b0xvd2VyQ2FzZSgpO2lmKEcuc3RhcnRzV2l0aCgiaW9zIikpcmV0dXJuIDA7aWYoRy5zdGFydHNXaXRoKCJpcGFkb3MiKSlyZXR1cm4gMTtpZihHLnN0YXJ0c1dpdGgoIndhdGNob3MiKSlyZXR1cm4gMjtpZihHLnN0YXJ0c1dpdGgoInZpc2lvbm9zIil8fEcuc3RhcnRzV2l0aCgieHJvcyIpKXJldHVybiAzO3JldHVybiA0fWZ1bmN0aW9uIFE2KHtkZXZpY2VzOlgsc2VsZWN0ZWRVZGlkOkcsbG9hZGluZzpKLGVycm9yOlksc3RvcHBpbmdVZGlkczpxLG9uUmVmcmVzaDpaLG9uU2VsZWN0OiQsb25TdG9wOlYsdHJpZ2dlcjpLfSl7bGV0W18sSF09VCghMSksej1iKG51bGwpO1IoKCk9PntpZighXylyZXR1cm47bGV0IE49KE8pPT57aWYoIXouY3VycmVudD8uY29udGFpbnMoTy50YXJnZXQpKUgoITEpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsTiksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLE4pfSxbX10pO2xldCBMPW5ldyBNYXA7Zm9yKGxldCBOIG9mIFgpe2lmKE4udWRpZD09PUcpY29udGludWU7bGV0IE89TC5nZXQoTi5ydW50aW1lKTtpZighTylPPVtdLEwuc2V0KE4ucnVudGltZSxPKTtPLnB1c2goTil9Zm9yKGxldCBOIG9mIEwudmFsdWVzKCkpTi5zb3J0KChPLFApPT55MShPLm5hbWUpLXkxKFAubmFtZSl8fE8ubmFtZS5sb2NhbGVDb21wYXJlKFAubmFtZSkpO2xldCBCPVsuLi5MLmVudHJpZXMoKV0uc29ydCgoW05dLFtPXSk9PnYxKE4pLXYxKE8pfHxOLmxvY2FsZUNvbXBhcmUoTykpLE09WC5maW5kKChOKT0+Ti51ZGlkPT09Ryk/P251bGw7cmV0dXJuIFEoImRpdiIse3JlZjp6LHN0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUifSxjaGlsZHJlbjpbUSgiZGl2Iix7b25DbGljazooKT0+e2lmKCFfKVooKTtIKChOKT0+IU4pfSxjaGlsZHJlbjpLfSksXyYmUSgiZGl2Iix7c3R5bGU6QzYsY2hpbGRyZW46W1EoImRpdiIse3N0eWxlOnA4LGNoaWxkcmVuOltRKCJzcGFuIix7c3R5bGU6e2ZvbnRXZWlnaHQ6NjAwfSxjaGlsZHJlbjoiU2ltdWxhdG9ycyJ9KSxRKCJidXR0b24iLHtvbkNsaWNrOihOKT0+e04uc3RvcFByb3BhZ2F0aW9uKCksWigpfSxkaXNhYmxlZDpKLHN0eWxlOmY4LGNoaWxkcmVuOko/Ii4uLiI6IlJlZnJlc2gifSldfSksWSYmUSgiZGl2Iix7c3R5bGU6ejksY2hpbGRyZW46WX0pLE0mJlEoYSx7Y2hpbGRyZW46W1EoImRpdiIse3N0eWxlOnsuLi5LOSxjb2xvcjoiI2E1YjRmYyJ9LGNoaWxkcmVuOltRKCJzcGFuIix7c3R5bGU6VjkoTS5zdGF0ZT09PSJCb290ZWQiPyIjNGFkZTgwIjoiIzQ0NCIpfSksUSgic3BhbiIse3N0eWxlOntmbGV4OjF9LGNoaWxkcmVuOk0ubmFtZX0pXX0pLFEoImRpdiIse3N0eWxlOlI2fSldfSksWC5sZW5ndGg9PT0wJiYhSiYmIVkmJlEoImRpdiIse3N0eWxlOmQ4LGNoaWxkcmVuOiJObyBhdmFpbGFibGUgc2ltdWxhdG9ycyBmb3VuZCJ9KSxCLm1hcCgoW04sT10pPT5RKCJkaXYiLHtjaGlsZHJlbjpbUSgiZGl2Iix7c3R5bGU6dTgsY2hpbGRyZW46Tn0pLE8ubWFwKChQKT0+e2xldCBBPXEuaGFzKFAudWRpZCksdj1QLnN0YXRlPT09IkJvb3RlZCI7cmV0dXJuIFEoImRpdiIse3N0eWxlOks5LG9uTW91c2VFbnRlcjooeSk9PnkuY3VycmVudFRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kPSJyZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixvbk1vdXNlTGVhdmU6KHkpPT55LmN1cnJlbnRUYXJnZXQuc3R5bGUuYmFja2dyb3VuZD0idHJhbnNwYXJlbnQiLG9uQ2xpY2s6KCk9PnskKFApLEgoITEpfSxjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOlY5KHY/IiM0YWRlODAiOiIjNDQ0Iil9KSxRKCJzcGFuIix7c3R5bGU6e2ZsZXg6MX0sY2hpbGRyZW46UC5uYW1lfSksdiYmUSgic3BhbiIse3JvbGU6ImJ1dHRvbiIsb25DbGljazooeSk9PntpZih5LnN0b3BQcm9wYWdhdGlvbigpLCFBKVYoUC51ZGlkKX0sc3R5bGU6e2ZvbnRTaXplOjEwLHBhZGRpbmc6IjFweCA2cHgiLGJvcmRlclJhZGl1czo0LGNvbG9yOkE/IiM4ODgiOiIjZjg3MTcxIixiYWNrZ3JvdW5kOkE/InRyYW5zcGFyZW50IjoicmdiYSgyNDgsMTEzLDExMywwLjEpIixjdXJzb3I6QT8iZGVmYXVsdCI6InBvaW50ZXIifSxjaGlsZHJlbjpBPyJTdG9wcGluZy4uLiI6IlN0b3AifSldfSxQLnVkaWQpfSldfSxOKSldfSldfSl9ZnVuY3Rpb24gVjkoWCl7cmV0dXJue3dpZHRoOjYsaGVpZ2h0OjYsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6WCxmbGV4U2hyaW5rOjB9fXZhciAkNj1uZXcgU2V0KFsiaW1hZ2UvanBlZyIsImltYWdlL3BuZyIsImltYWdlL2dpZiIsImltYWdlL2hlaWMiLCJpbWFnZS9oZWlmIiwiaW1hZ2Uvd2VicCIsInZpZGVvL21wNCIsInZpZGVvL3F1aWNrdGltZSJdKSxSOD0yNjIxNDQsXzY9NTI0Mjg4MDAwO2Z1bmN0aW9uIFY2KFgpe2lmKEw5KFgpPT09ImlwYSIpcmV0dXJuImlwYSI7aWYoJDYuaGFzKFgudHlwZSkpcmV0dXJuIm1lZGlhIjtyZXR1cm4gbnVsbH1mdW5jdGlvbiB6NihYKXtsZXQgRz1uZXcgVWludDhBcnJheShYKSxKPSIiO2ZvcihsZXQgWT0wO1k8Ry5sZW5ndGg7WSsrKUorPVN0cmluZy5mcm9tQ2hhckNvZGUoR1tZXSk7cmV0dXJuIGJ0b2EoSil9ZnVuY3Rpb24gTDkoWCl7bGV0IEc9WC5uYW1lLEo9Ry5sYXN0SW5kZXhPZigiLiIpO2lmKEo+PTApcmV0dXJuIEcuc2xpY2UoSisxKS50b0xvd2VyQ2FzZSgpO2lmKFgudHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iKSlyZXR1cm4ibXA0IjtyZXR1cm4ianBnIn1hc3luYyBmdW5jdGlvbiBLNihYLEcsSixZKXtpZihYLnNpemU+XzYpdGhyb3cgRXJyb3IoIkZpbGUgdG9vIGxhcmdlIChtYXggNTAwTUIpIik7bGV0IHE9Rz09PSJpcGEiPyJpcGEiOkw5KFgpLCQ9YC90bXAvJHtHPT09ImlwYSI/InNlcnZlLXNpbS1pbnN0YWxsIjoic2VydmUtc2ltLXVwbG9hZCJ9LSR7Y3J5cHRvLnJhbmRvbVVVSUQoKX0uJHtxfWA7dHJ5e2xldCBWPWF3YWl0IFguYXJyYXlCdWZmZXIoKSxLPXo2KFYpO2ZvcihsZXQgej0wO3o8Sy5sZW5ndGg7eis9Ujgpe2xldCBMPUsuc2xpY2Uoeix6K1I4KSxNPWF3YWl0IEooYGJhc2ggLWMgJ2VjaG8gJHtMfSB8IGJhc2U2NCAtZCAke3o9PT0wPyI+IjoiPj4ifSAkeyR9J2ApO2lmKE0uZXhpdENvZGUhPT0wKXRocm93IEVycm9yKE0uc3RkZXJyfHxgV3JpdGUgZmFpbGVkIChleGl0ICR7TS5leGl0Q29kZX0pYCl9bGV0IF89Rz09PSJpcGEiP2B4Y3J1biBzaW1jdGwgaW5zdGFsbCAke1l9ICR7JH1gOmB4Y3J1biBzaW1jdGwgYWRkbWVkaWEgJHtZfSAkeyR9YCxIPWF3YWl0IEooXyk7aWYoSC5leGl0Q29kZSE9PTApe2xldCB6PUc9PT0iaXBhIj8iaW5zdGFsbCI6ImFkZG1lZGlhIjt0aHJvdyBFcnJvcihILnN0ZGVycnx8YCR7en0gZmFpbGVkIChleGl0ICR7SC5leGl0Q29kZX0pYCl9fWZpbmFsbHl7SihgYmFzaCAtYyAncm0gLWYgJHskfSdgKS5jYXRjaCgoKT0+e30pfX1mdW5jdGlvbiBXNigpe2xldFtYLEddPVQoW10pLEo9aigocSxaKT0+e2xldCAkPWNyeXB0by5yYW5kb21VVUlEKCk7cmV0dXJuIEcoKFYpPT5bLi4uVix7aWQ6JCxuYW1lOnEsa2luZDpaLHN0YXR1czoidXBsb2FkaW5nIn1dKSwkfSxbXSksWT1qKChxLFopPT57aWYoRygoJCk9PiQubWFwKChWKT0+Vi5pZD09PXE/ey4uLlYsLi4uWn06VikpLFouc3RhdHVzPT09InN1Y2Nlc3MifHxaLnN0YXR1cz09PSJlcnJvciIpc2V0VGltZW91dCgoKT0+e0coKCQpPT4kLmZpbHRlcigoVik9PlYuaWQhPT1xKSl9LDMwMDApfSxbXSk7cmV0dXJue3RvYXN0czpYLGFkZDpKLHVwZGF0ZTpZfX1mdW5jdGlvbiBMNih7ZXhlYzpYLHVkaWQ6RyxlbmFibGVkOkosb25VcGxvYWRTdGFydDpZLG9uVXBsb2FkRW5kOnEsb25VbnN1cHBvcnRlZDpafSl7bGV0WyQsVl09VCghMSksSz1iKDApLF89aihhc3luYyhCKT0+e2lmKEIucHJldmVudERlZmF1bHQoKSxCLnN0b3BQcm9wYWdhdGlvbigpLEsuY3VycmVudD0wLFYoITEpLCFKfHwhRylyZXR1cm47bGV0IE09QXJyYXkuZnJvbShCLmRhdGFUcmFuc2Zlci5maWxlcyk7aWYoTS5sZW5ndGg9PT0wKXJldHVybjtmb3IobGV0IE4gb2YgTSl7bGV0IE89VjYoTik7aWYoIU8pe1ooTik7Y29udGludWV9bGV0IFA9WShOLm5hbWUsTyk7SzYoTixPLFgsRykudGhlbigoKT0+cShQLCEwKSkuY2F0Y2goKEEpPT5xKFAsITEsQSBpbnN0YW5jZW9mIEVycm9yP0EubWVzc2FnZToiVXBsb2FkIGZhaWxlZCIpKX19LFtKLEcsWCxZLHEsWl0pLEg9aigoQik9PntpZihCLnByZXZlbnREZWZhdWx0KCksSilCLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0PSJjb3B5In0sW0pdKSx6PWooKEIpPT57aWYoQi5wcmV2ZW50RGVmYXVsdCgpLCFKKXJldHVybjtpZihLLmN1cnJlbnQrKyxLLmN1cnJlbnQ9PT0xKVYoITApfSxbSl0pLEw9aigoQik9PntpZihCLnByZXZlbnREZWZhdWx0KCksSy5jdXJyZW50LS0sSy5jdXJyZW50PD0wKUsuY3VycmVudD0wLFYoITEpfSxbXSk7cmV0dXJue2lzRHJhZ092ZXI6JCxkcm9wWm9uZVByb3BzOntvbkRyYWdPdmVyOkgsb25EcmFnRW50ZXI6eixvbkRyYWdMZWF2ZTpMLG9uRHJvcDpffX19ZnVuY3Rpb24gSTAoWCl7cmV0dXJuYCcke1gucmVwbGFjZSgvJy9nLCInXFwnJyIpfSdgfWFzeW5jIGZ1bmN0aW9uIGg4KFgsRyxKKXtsZXQgWT1hd2FpdCBYKGB4Y3J1biBzaW1jdGwgZ2V0X2FwcF9jb250YWluZXIgJHtHfSAke0kwKEopfSBhcHBgKTtpZihZLmV4aXRDb2RlIT09MClyZXR1cm57ZXJyb3I6WS5zdGRlcnIudHJpbSgpfHwiQXBwIG5vdCBmb3VuZCBvbiBzaW11bGF0b3IifTtsZXQgcT1ZLnN0ZG91dC50cmltKCk7aWYoIXEpcmV0dXJue2Vycm9yOiJFbXB0eSBhcHAgcGF0aCJ9O2xldCBaPWF3YWl0IFgoYHBsdXRpbCAtY29udmVydCBqc29uIC1vIC0gJHtJMChxKyIvSW5mby5wbGlzdCIpfWApLCQ9e307aWYoWi5leGl0Q29kZT09PTApdHJ5eyQ9SlNPTi5wYXJzZShaLnN0ZG91dCl9Y2F0Y2h7fWxldCBWLF89KCQ/LkNGQnVuZGxlSWNvbnM/LkNGQnVuZGxlUHJpbWFyeUljb24/PyQ/LlsiQ0ZCdW5kbGVJY29uc35pcGFkIl0/LkNGQnVuZGxlUHJpbWFyeUljb24pPy5DRkJ1bmRsZUljb25GaWxlcz8/JD8uQ0ZCdW5kbGVJY29uRmlsZXM7aWYoXyYmXy5sZW5ndGg+MClWPV9bXy5sZW5ndGgtMV07ZWxzZSBpZih0eXBlb2YgJD8uQ0ZCdW5kbGVJY29uRmlsZT09PSJzdHJpbmciKVY9JC5DRkJ1bmRsZUljb25GaWxlO2xldCBIPW51bGw7aWYoVil7bGV0IHo9W2Ake1Z9QDN4LnBuZ2AsYCR7Vn1AMngucG5nYCxgJHtWfS5wbmdgLGAke1Z9NjB4NjBAM3gucG5nYCxgJHtWfTYweDYwQDJ4LnBuZ2BdLEI9KGF3YWl0IFgoYGJhc2ggLWMgJHtJMCh6Lm1hcCgoTSk9PmBbIC1mICR7STAocSsiLyIrTSl9IF0gJiYgZWNobyAke0kwKHErIi8iK00pfSAmJiBleGl0IDBgKS5qb2luKCI7ICIpKyI7IGV4aXQgMSIpfWApKS5zdGRvdXQudHJpbSgpO2lmKEIpe2xldCBNPWF3YWl0IFgoYGJhc2U2NCAtaSAke0kwKEIpfWApO2lmKE0uZXhpdENvZGU9PT0wKUg9YGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwke00uc3Rkb3V0LnJlcGxhY2UoL1xzKy9nLCIiKX1gfX1yZXR1cm57YXBwUGF0aDpxLGRpc3BsYXlOYW1lOiQuQ0ZCdW5kbGVEaXNwbGF5TmFtZT8/JC5DRkJ1bmRsZU5hbWUsc2hvcnRWZXJzaW9uOiQuQ0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmcsYnVuZGxlVmVyc2lvbjokLkNGQnVuZGxlVmVyc2lvbixtaW5PUzokLk1pbmltdW1PU1ZlcnNpb24sZXhlY3V0YWJsZTokLkNGQnVuZGxlRXhlY3V0YWJsZSxpY29uRGF0YVVybDpIfX1mdW5jdGlvbiBINih7dWRpZDpYLGN1cnJlbnRBcHA6R30pe2xldFtKLFldPVQobnVsbCk7aWYoUigoKT0+e2lmKCFHKXtZKG51bGwpO3JldHVybn1sZXQgcT0hMTtyZXR1cm4gWSh7YnVuZGxlSWQ6Ry5idW5kbGVJZCxpc1JlYWN0TmF0aXZlOkcuaXNSZWFjdE5hdGl2ZSxwaWQ6Ry5waWQsbG9hZGluZzohMH0pLGg4KCQwLFgsRy5idW5kbGVJZCkudGhlbigoWik9PntpZihxKXJldHVybjtZKHtidW5kbGVJZDpHLmJ1bmRsZUlkLGlzUmVhY3ROYXRpdmU6Ry5pc1JlYWN0TmF0aXZlLHBpZDpHLnBpZCxsb2FkaW5nOiExLC4uLlp9KX0pLCgpPT57cT0hMH19LFtYLEc/LmJ1bmRsZUlkLEc/LnBpZCxHPy5pc1JlYWN0TmF0aXZlXSksIUopcmV0dXJuIFEoImRpdiIse3N0eWxlOlMuZW1wdHksY2hpbGRyZW46IldhaXRpbmcgZm9yIGFuIGFwcCB0byBjb21lIHRvIHRoZSBmb3JlZ3JvdW5k4oCmIn0pO3JldHVybiBRKCJkaXYiLHtzdHlsZTpTLnNlY3Rpb24sY2hpbGRyZW46W1EoImRpdiIse3N0eWxlOlMuYXBwSGVhZGVyLGNoaWxkcmVuOltKLmljb25EYXRhVXJsP1EoImltZyIse3NyYzpKLmljb25EYXRhVXJsLHN0eWxlOlMuYXBwSWNvbixhbHQ6IiJ9KTpRKCJkaXYiLHtzdHlsZTp7Li4uUy5hcHBJY29uLGJhY2tncm91bmQ6IiMyYTJhMmMifX0pLFEoImRpdiIse3N0eWxlOnttaW5XaWR0aDowLGZsZXg6MX0sY2hpbGRyZW46W1EoImRpdiIse3N0eWxlOlMuYXBwTmFtZSxjaGlsZHJlbjpbSi5kaXNwbGF5TmFtZT8/Si5idW5kbGVJZCxKLmxvYWRpbmcmJlEoInNwYW4iLHtzdHlsZTpTLnNwaW5uZXIsY2hpbGRyZW46IiDigKYifSldfSksUSgiZGl2Iix7c3R5bGU6Uy5hcHBCdW5kbGUsdGl0bGU6Si5idW5kbGVJZCxjaGlsZHJlbjpKLmJ1bmRsZUlkfSldfSldfSksSi5lcnJvciYmUSgiZGl2Iix7c3R5bGU6Uy5lcnJvcixjaGlsZHJlbjpKLmVycm9yfSksUSgiZGwiLHtzdHlsZTpTLmRsLGNoaWxkcmVuOltRKG8wLHtsYWJlbDoiVmVyc2lvbiIsdmFsdWU6Si5zaG9ydFZlcnNpb24/YCR7Si5zaG9ydFZlcnNpb259ICgke0ouYnVuZGxlVmVyc2lvbj8/IuKAlCJ9KWA6Si5sb2FkaW5nPyLigKYiOiLigJQifSksUShvMCx7bGFiZWw6Ik1pbiBpT1MiLHZhbHVlOkoubWluT1M/PyhKLmxvYWRpbmc/IuKApiI6IuKAlCIpfSksUShvMCx7bGFiZWw6IkV4ZWN1dGFibGUiLHZhbHVlOkouZXhlY3V0YWJsZT8/KEoubG9hZGluZz8i4oCmIjoi4oCUIil9KSxRKG8wLHtsYWJlbDoiUElEIix2YWx1ZTpKLnBpZCE9bnVsbD9TdHJpbmcoSi5waWQpOiLigJQifSksSi5pc1JlYWN0TmF0aXZlJiZRKG8wLHtsYWJlbDoiUmVhY3QgTmF0aXZlIix2YWx1ZToiWWVzIn0pLFEobzAse2xhYmVsOiJBcHAgcGF0aCIsdmFsdWU6Si5hcHBQYXRoPz8oSi5sb2FkaW5nPyLigKYiOiLigJQiKSxtb25vOiEwLGFjdGlvbjpKLmFwcFBhdGg/e3RpdGxlOiJSZXZlYWwgaW4gRmluZGVyIixvbkNsaWNrOigpPT57JDAoYG9wZW4gLVIgJHtJMChKLmFwcFBhdGgpfWApfSxpY29uOlEoInN2ZyIse3dpZHRoOiIxMSIsaGVpZ2h0OiIxMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIuMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1EoImxpbmUiLHt4MToiNyIseTE6IjE3Iix4MjoiMTciLHkyOiI3In0pLFEoInBvbHlsaW5lIix7cG9pbnRzOiIxMCA3IDE3IDcgMTcgMTQifSldfSl9OnZvaWQgMH0pXX0pXX0pfWZ1bmN0aW9uIG8wKHtsYWJlbDpYLHZhbHVlOkcsbW9ubzpKLGFjdGlvbjpZfSl7bGV0W3EsWl09VCghMSk7cmV0dXJuIFEoImRpdiIse3N0eWxlOlMucm93LG9uTW91c2VFbnRlcjooKT0+WighMCksb25Nb3VzZUxlYXZlOigpPT5aKCExKSxjaGlsZHJlbjpbUSgiZHQiLHtzdHlsZTpTLmR0LGNoaWxkcmVuOlh9KSxRKCJkZCIse3N0eWxlOnsuLi5TLmRkLGZvbnRGYW1pbHk6Sj8idWktbW9ub3NwYWNlLCBtb25vc3BhY2UiOnZvaWQgMCxmb250U2l6ZTpKPzExOjEyLHBvc2l0aW9uOiJyZWxhdGl2ZSJ9LHRpdGxlOkcsY2hpbGRyZW46W0csWSYmUSgiZGl2Iix7c3R5bGU6ey4uLlMucm93QWN0aW9uV3JhcCxvcGFjaXR5OnE/MTowLHRyYW5zZm9ybTpxPyJ0cmFuc2xhdGVYKDApIjoidHJhbnNsYXRlWCg0cHgpIixwb2ludGVyRXZlbnRzOnE/ImF1dG8iOiJub25lIn0sY2hpbGRyZW46USgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOlkub25DbGljayx0aXRsZTpZLnRpdGxlLCJhcmlhLWxhYmVsIjpZLnRpdGxlLHN0eWxlOlMucm93QWN0aW9uLGNoaWxkcmVuOlkuaWNvbn0pfSldfSldfSl9dmFyIEI2PVt7a2V5OiJjYW1lcmEiLGxhYmVsOiJDYW1lcmEifSx7a2V5OiJtaWNyb3Bob25lIixsYWJlbDoiTWljcm9waG9uZSJ9LHtrZXk6InBob3RvcyIsbGFiZWw6IlBob3RvcyJ9LHtrZXk6InBob3Rvcy1hZGQiLGxhYmVsOiJBZGQgdG8gUGhvdG9zIn0se2tleToiY29udGFjdHMiLGxhYmVsOiJDb250YWN0cyJ9LHtrZXk6ImNhbGVuZGFyIixsYWJlbDoiQ2FsZW5kYXIifSx7a2V5OiJyZW1pbmRlcnMiLGxhYmVsOiJSZW1pbmRlcnMifSx7a2V5OiJsb2NhdGlvbiIsbGFiZWw6IkxvY2F0aW9uIn0se2tleToibG9jYXRpb24tYWx3YXlzIixsYWJlbDoiTG9jYXRpb24gKEFsd2F5cykifSx7a2V5OiJtb3Rpb24iLGxhYmVsOiJNb3Rpb24ifSx7a2V5OiJtZWRpYS1saWJyYXJ5IixsYWJlbDoiTWVkaWEgTGlicmFyeSJ9LHtrZXk6InNpcmkiLGxhYmVsOiJTaXJpIn1dO2Z1bmN0aW9uIEY2KHt1ZGlkOlgsYnVuZGxlSWQ6R30pe2xldFtKLFldPVQoe30pLFtxLFpdPVQobnVsbCksWyQsVl09VChudWxsKSxbSyxfXT1UKCExKTtSKCgpPT57WSh7fSksVihudWxsKX0sW0ddKTtsZXQgSD1qKGFzeW5jKEwsQik9PntpZighRylyZXR1cm47bGV0IE09YCR7TH06JHtCfWA7WihNKSxWKG51bGwpO3RyeXtsZXQgTj1hd2FpdCAkMChgeGNydW4gc2ltY3RsIHByaXZhY3kgJHtYfSAke0J9ICR7TH0gJHtJMChHKX1gKTtpZihOLmV4aXRDb2RlIT09MCl7VihOLnN0ZGVyci50cmltKCl8fGBzaW1jdGwgcHJpdmFjeSBmYWlsZWQgKGV4aXQgJHtOLmV4aXRDb2RlfSlgKTtyZXR1cm59WSgoTyk9Pih7Li4uTyxbTF06Qj09PSJyZXNldCI/dm9pZCAwOkJ9KSl9ZmluYWxseXtaKG51bGwpfX0sW1gsR10pLHo9aihhc3luYygpPT57aWYoIUcpcmV0dXJuO1ooIl9fYWxsX18iKSxWKG51bGwpO3RyeXtsZXQgTD1hd2FpdCAkMChgeGNydW4gc2ltY3RsIHByaXZhY3kgJHtYfSByZXNldCBhbGwgJHtJMChHKX1gKTtpZihMLmV4aXRDb2RlIT09MCl7VihMLnN0ZGVyci50cmltKCl8fGBzaW1jdGwgcHJpdmFjeSBmYWlsZWQgKGV4aXQgJHtMLmV4aXRDb2RlfSlgKTtyZXR1cm59WSh7fSl9ZmluYWxseXtaKG51bGwpfX0sW1gsR10pO2lmKCFHKXJldHVybiBRKCJkaXYiLHtzdHlsZTpTLmVtcHR5LGNoaWxkcmVuOiJQZXJtaXNzaW9ucyBhcHBlYXIgb25jZSBhbiBhcHAgaXMgaW4gdGhlIGZvcmVncm91bmQuIn0pO3JldHVybiBRKCJkaXYiLHtzdHlsZTp7Li4uUy5zZWN0aW9uLHBhZGRpbmc6IjhweCAxMnB4In0sY2hpbGRyZW46W1EoImJ1dHRvbiIse29uQ2xpY2s6KCk9Pl8oKEwpPT4hTCksc3R5bGU6Uy5wZXJtc1RvZ2dsZSwiYXJpYS1leHBhbmRlZCI6SyxjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOnsuLi5TLnNlY3Rpb25UaXRsZSxtYXJnaW46MH0sY2hpbGRyZW46IlBlcm1pc3Npb25zIn0pLFEoInN2ZyIse3dpZHRoOiIxMSIsaGVpZ2h0OiIxMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIuNSIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsc3R5bGU6e3RyYW5zZm9ybTpLPyJyb3RhdGUoOTBkZWcpIjoicm90YXRlKDBkZWcpIix0cmFuc2l0aW9uOiJ0cmFuc2Zvcm0gMC4xNXMiLGZsZXhTaHJpbms6MH0sY2hpbGRyZW46USgicG9seWxpbmUiLHtwb2ludHM6IjkgMTggMTUgMTIgOSA2In0pfSldfSksSyYmJCYmUSgiZGl2Iix7c3R5bGU6ey4uLlMuZXJyb3IsbWFyZ2luVG9wOjh9LGNoaWxkcmVuOiR9KSxLJiZRKCJkaXYiLHtzdHlsZTpTLnBlcm1zU2Nyb2xsV3JhcCxjaGlsZHJlbjpbUSgiZGl2Iix7c3R5bGU6Uy5wZXJtc1Njcm9sbCxjaGlsZHJlbjpCNi5tYXAoKHtrZXk6TCxsYWJlbDpCfSk9PntsZXQgTT1KW0xdO3JldHVybiBRKCJkaXYiLHtzdHlsZTpTLnBlcm1Sb3csY2hpbGRyZW46W1EoInNwYW4iLHtzdHlsZTpTLnBlcm1MYWJlbCxjaGlsZHJlbjpCfSksUSgiZGl2Iix7c3R5bGU6Uy5wZXJtU2VnLHJvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbCI6QixjaGlsZHJlbjpbUSgkOSx7YWN0aXZlOk09PT0iZ3JhbnQiLHBlbmRpbmc6cT09PWAke0x9OmdyYW50YCxvbkNsaWNrOigpPT5IKEwsImdyYW50IiksdmFyaWFudDoiZ3JhbnQiLHRpdGxlOiJBbGxvdyIsY2hpbGRyZW46USgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMyIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46USgicG9seWxpbmUiLHtwb2ludHM6IjUgMTIgMTAgMTcgMTkgNyJ9KX0pfSksUSgkOSx7YWN0aXZlOk09PT0icmV2b2tlIixwZW5kaW5nOnE9PT1gJHtMfTpyZXZva2VgLG9uQ2xpY2s6KCk9PkgoTCwicmV2b2tlIiksdmFyaWFudDoicmV2b2tlIix0aXRsZToiRGVueSIsY2hpbGRyZW46USgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMyIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1EoImxpbmUiLHt4MToiNiIseTE6IjYiLHgyOiIxOCIseTI6IjE4In0pLFEoImxpbmUiLHt4MToiMTgiLHkxOiI2Iix4MjoiNiIseTI6IjE4In0pXX0pfSksUSgkOSx7YWN0aXZlOiExLHBlbmRpbmc6cT09PWAke0x9OnJlc2V0YCxvbkNsaWNrOigpPT5IKEwsInJlc2V0IiksdmFyaWFudDoicmVzZXQiLHRpdGxlOiJSZXNldCIsY2hpbGRyZW46UShqOCx7c2l6ZToxMSxzdHJva2VXaWR0aDoyLjR9KX0pXX0pXX0sTCl9KX0pLFEoImRpdiIse3N0eWxlOlMucGVybXNGYWRlVG9wfSksUSgiZGl2Iix7c3R5bGU6Uy5wZXJtc0ZhZGVCb3R0b219KV19KSxLJiZRKCJkaXYiLHtzdHlsZTpTLnBlcm1zRm9vdGVyLGNoaWxkcmVuOlEoImJ1dHRvbiIse29uQ2xpY2s6eixkaXNhYmxlZDpxPT09Il9fYWxsX18iLHN0eWxlOlMucmVzZXRBbGxCdG4sdGl0bGU6InhjcnVuIHNpbWN0bCBwcml2YWN5IHJlc2V0IGFsbCIsY2hpbGRyZW46cT09PSJfX2FsbF9fIj8i4oCmIjoiUmVzZXQgYWxsIn0pfSldfSl9ZnVuY3Rpb24gRDYoe2RldmljZXM6WCxsb2FkaW5nOkcsZXJyb3I6SixvblJlZnJlc2g6WX0pe2xldFtxLFpdPVQobnVsbCksWyQsVl09VChudWxsKSxLPWooYXN5bmMoeik9PntpZihxKXJldHVybjtaKHoudWRpZCksVihudWxsKTt0cnl7aWYoei5zdGF0ZSE9PSJCb290ZWQiKXtsZXQgTj1hd2FpdCAkMChgeGNydW4gc2ltY3RsIGJvb3QgJHt6LnVkaWR9YCk7aWYoTi5leGl0Q29kZSE9PTApdGhyb3cgRXJyb3IoTi5zdGRlcnJ8fCJGYWlsZWQgdG8gYm9vdCBzaW11bGF0b3IiKX1sZXQgTD1hd2FpdCAkMChgYnVueCBzZXJ2ZS1zaW0gLS1kZXRhY2ggJHt6LnVkaWR9YCk7aWYoTC5leGl0Q29kZSE9PTApdGhyb3cgRXJyb3IoTC5zdGRlcnJ8fCJGYWlsZWQgdG8gc3RhcnQgc2VydmUtc2ltIik7bGV0IEI9RGF0ZS5ub3coKSsxNTAwMCxNPWAke3IwKCJhcGkiKX0/ZGV2aWNlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHoudWRpZCl9YDt3aGlsZShEYXRlLm5vdygpPEIpe3RyeXtsZXQgTj1hd2FpdCBmZXRjaChNLHtjYWNoZToibm8tc3RvcmUifSk7aWYoTi5vayYmYXdhaXQgTi5qc29uKCkpe2xldCBPPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO08uc2VhcmNoUGFyYW1zLnNldCgiZGV2aWNlIix6LnVkaWQpLHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oTy50b1N0cmluZygpKTtyZXR1cm59fWNhdGNoe31hd2FpdCBuZXcgUHJvbWlzZSgoTik9PnNldFRpbWVvdXQoTiw0MDApKX10aHJvdyBFcnJvcigic2VydmUtc2ltIHN0YXJ0ZWQgYnV0IG5vIHN0cmVhbSBzdGF0ZSBhcHBlYXJlZCIpfWNhdGNoKEwpe1YoTCBpbnN0YW5jZW9mIEVycm9yP0wubWVzc2FnZToiRmFpbGVkIHRvIHN0YXJ0IHN0cmVhbSIpLFoobnVsbCl9fSxbcV0pLF89bmV3IE1hcDtmb3IobGV0IHogb2YgWCl7bGV0IEw9Xy5nZXQoei5ydW50aW1lKTtpZighTClMPVtdLF8uc2V0KHoucnVudGltZSxMKTtMLnB1c2goeil9Zm9yKGxldCB6IG9mIF8udmFsdWVzKCkpei5zb3J0KChMLEIpPT57bGV0IE09TC5zdGF0ZT09PSJCb290ZWQiPzA6MSxOPUIuc3RhdGU9PT0iQm9vdGVkIj8wOjE7aWYoTSE9PU4pcmV0dXJuIE0tTjtyZXR1cm4geTEoTC5uYW1lKS15MShCLm5hbWUpfHxMLm5hbWUubG9jYWxlQ29tcGFyZShCLm5hbWUpfSk7bGV0IEg9Wy4uLl8uZW50cmllcygpXS5zb3J0KChbel0sW0xdKT0+djEoeiktdjEoTCl8fHoubG9jYWxlQ29tcGFyZShMKSk7cmV0dXJuIFEoImRpdiIse3N0eWxlOl8wLnBhZ2UsY2hpbGRyZW46USgiZGl2Iix7c3R5bGU6XzAuZW1wdHksY2hpbGRyZW46W1EoImgxIix7c3R5bGU6XzAuZW1wdHlUaXRsZSxjaGlsZHJlbjoiTm8gc2VydmUtc2ltIHN0cmVhbSBydW5uaW5nIn0pLFEoInAiLHtzdHlsZTpfMC5lbXB0eUhpbnQsY2hpbGRyZW46WyJQaWNrIGEgc2ltdWxhdG9yIHRvIGJvb3QsIG9yIHN0YXJ0IG9uZSB5b3Vyc2VsZiB3aXRoIiwiICIsUSgiY29kZSIse3N0eWxlOl8wLmNvZGUsY2hpbGRyZW46ImJ1bnggc2VydmUtc2ltIC0tZGV0YWNoIn0pLCIuIl19KSxRKCJkaXYiLHtzdHlsZTpUNixjaGlsZHJlbjpbUSgiZGl2Iix7c3R5bGU6cDgsY2hpbGRyZW46W1EoInNwYW4iLHtzdHlsZTp7Zm9udFdlaWdodDo2MDB9LGNoaWxkcmVuOiJTaW11bGF0b3JzIn0pLFEoImJ1dHRvbiIse29uQ2xpY2s6WSxkaXNhYmxlZDpHLHN0eWxlOmY4LGNoaWxkcmVuOkc/Ii4uLiI6IlJlZnJlc2gifSldfSksSiYmUSgiZGl2Iix7c3R5bGU6ejksY2hpbGRyZW46Sn0pLCQmJlEoImRpdiIse3N0eWxlOno5LGNoaWxkcmVuOiR9KSwhRyYmIUomJlgubGVuZ3RoPT09MCYmUSgiZGl2Iix7c3R5bGU6ZDgsY2hpbGRyZW46Ik5vIGF2YWlsYWJsZSBzaW11bGF0b3JzIGZvdW5kIn0pLEgubWFwKChbeixMXSk9PlEoImRpdiIse2NoaWxkcmVuOltRKCJkaXYiLHtzdHlsZTp1OCxjaGlsZHJlbjp6fSksTC5tYXAoKEIpPT57bGV0IE09cT09PUIudWRpZCxOPXEhPT1udWxsJiYhTSxPPUIuc3RhdGU9PT0iQm9vdGVkIjtyZXR1cm4gUSgiZGl2Iix7c3R5bGU6ey4uLks5LGN1cnNvcjpOPyJkZWZhdWx0IjoicG9pbnRlciIsb3BhY2l0eTpOPzAuNToxfSxvbk1vdXNlRW50ZXI6KFApPT57aWYoIU4pUC5jdXJyZW50VGFyZ2V0LnN0eWxlLmJhY2tncm91bmQ9InJnYmEoMjU1LDI1NSwyNTUsMC4wOCkifSxvbk1vdXNlTGVhdmU6KFApPT5QLmN1cnJlbnRUYXJnZXQuc3R5bGUuYmFja2dyb3VuZD0idHJhbnNwYXJlbnQiLG9uQ2xpY2s6KCk9PntpZighTilLKEIpfSxjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOlY5KE8/IiM0YWRlODAiOiIjNDQ0Iil9KSxRKCJzcGFuIix7c3R5bGU6e2ZsZXg6MSx0ZXh0QWxpZ246ImxlZnQifSxjaGlsZHJlbjpCLm5hbWV9KSxRKCJzcGFuIix7c3R5bGU6e2ZvbnRTaXplOjEwLGNvbG9yOk0/IiNhNWI0ZmMiOiIjODg4In0sY2hpbGRyZW46TT9PPyJTdGFydGluZy4uLiI6IkJvb3RpbmcuLi4iOk8/IlN0YXJ0IHN0cmVhbSI6IkJvb3QgJiBzdHJlYW0ifSldfSxCLnVkaWQpfSldfSx6KSldfSldfSl9KX1mdW5jdGlvbiAkOSh7YWN0aXZlOlgscGVuZGluZzpHLG9uQ2xpY2s6Six2YXJpYW50OlksdGl0bGU6cSxjaGlsZHJlbjpafSl7bGV0ICQ9WT09PSJncmFudCI/IiM0YWRlODAiOlk9PT0icmV2b2tlIj8iI2Y4NzE3MSI6IiNhNWI0ZmMiO3JldHVybiBRKCJidXR0b24iLHtvbkNsaWNrOkosZGlzYWJsZWQ6Ryx0aXRsZTpxLCJhcmlhLWxhYmVsIjpxLHN0eWxlOnsuLi5TLnBlcm1CdG4sYmFja2dyb3VuZDpYP2AkeyR9MjJgOiJ0cmFuc3BhcmVudCIsY29sb3I6WD8kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTUpIixvcGFjaXR5Okc/MC41OjF9LGNoaWxkcmVuOlp9KX1mdW5jdGlvbiBtOChYLEcpe2lmKFg9PT1HKXJldHVybiEwO2lmKFguaWQhPT1HLmlkfHxYLnBhdGghPT1HLnBhdGh8fFgubGFiZWwhPT1HLmxhYmVsfHxYLnZhbHVlIT09Ry52YWx1ZXx8WC5yb2xlIT09Ry5yb2xlfHxYLnR5cGUhPT1HLnR5cGV8fFguZW5hYmxlZCE9PUcuZW5hYmxlZClyZXR1cm4hMTtsZXQgSj1YLmZyYW1lLFk9Ry5mcmFtZTtyZXR1cm4gSj09PVl8fEoueD09PVkueCYmSi55PT09WS55JiZKLndpZHRoPT09WS53aWR0aCYmSi5oZWlnaHQ9PT1ZLmhlaWdodH12YXIgTjY9WTkoZnVuY3Rpb24oe2VsZW1lbnQ6RyxpbmRleDpKLHNjcmVlbjpZLGhpZ2hsaWdodGVkOnEsc2VsZWN0ZWQ6WixvbkhpZ2hsaWdodDokLG9uU2VsZWN0OlZ9KXtsZXQgSz1oMShHKSxfPWc4KEcsSiksSD1NNihHLmZyYW1lLFkpO2lmKCFIKXJldHVybiBudWxsO2xldCB6PUE2KF8pO3JldHVybiBRKCJidXR0b24iLHt0eXBlOiJidXR0b24iLCJkYXRhLWF4LWtleSI6SywiZGF0YS1heC1pZCI6Xy5pZCwiZGF0YS1heC1wYXRoIjpfLnBhdGgsImRhdGEtYXgtbGFiZWwiOl8ubGFiZWwsImRhdGEtYXgtdmFsdWUiOl8udmFsdWUsImRhdGEtYXgtcm9sZSI6Xy5yb2xlLCJkYXRhLWF4LXR5cGUiOl8udHlwZSwiZGF0YS1heC1lbmFibGVkIjpTdHJpbmcoXy5lbmFibGVkKSwiZGF0YS1heC1mcmFtZSI6eDgoXy5mcmFtZSksImRhdGEtYXgtc2VsZWN0ZWQiOlN0cmluZyhaKSwiYXJpYS1sYWJlbCI6Ry5sYWJlbHx8eix0aXRsZTp6LG9uQ2xpY2s6KCk9PlYoSyksb25Nb3VzZUVudGVyOigpPT4kKEspLG9uTW91c2VMZWF2ZTooKT0+JChudWxsKSxzdHlsZTp7Li4uVjAudGFyZ2V0LGxlZnQ6YCR7SC54L1kud2lkdGgqMTAwfSVgLHRvcDpgJHtILnkvWS5oZWlnaHQqMTAwfSVgLHdpZHRoOmAke0gud2lkdGgvWS53aWR0aCoxMDB9JWAsaGVpZ2h0OmAke0guaGVpZ2h0L1kuaGVpZ2h0KjEwMH0lYCxib3JkZXJDb2xvcjpaPyIjNjBhNWZhIjpxPyIjZmJiZjI0IjoiIzM0ZDM5OSIsYmFja2dyb3VuZDpaPyJyZ2JhKDk2LDE2NSwyNTAsMC4yNCkiOnE/InJnYmEoMjQ1LDE1OCwxMSwwLjI4KSI6InJnYmEoMTYsMTg1LDEyOSwwLjEyKSJ9fSl9LChYLEcpPT5YLmluZGV4PT09Ry5pbmRleCYmWC5oaWdobGlnaHRlZD09PUcuaGlnaGxpZ2h0ZWQmJlguc2VsZWN0ZWQ9PT1HLnNlbGVjdGVkJiZYLm9uSGlnaGxpZ2h0PT09Ry5vbkhpZ2hsaWdodCYmWC5vblNlbGVjdD09PUcub25TZWxlY3QmJlguc2NyZWVuLndpZHRoPT09Ry5zY3JlZW4ud2lkdGgmJlguc2NyZWVuLmhlaWdodD09PUcuc2NyZWVuLmhlaWdodCYmbTgoWC5lbGVtZW50LEcuZWxlbWVudCkpO2Z1bmN0aW9uIE82KCl7bGV0e3NuYXBzaG90Olh9PVc5KCkse2hpZ2hsaWdodGVkS2V5Okcsc2VsZWN0ZWRLZXk6SixzZXRIaWdobGlnaHRlZEtleTpZLHNldFNlbGVjdGVkS2V5OnF9PXY4KCk7aWYoIVg/LnNjcmVlbi53aWR0aHx8IVg/LnNjcmVlbi5oZWlnaHQpcmV0dXJuIG51bGw7cmV0dXJuIFEoImRpdiIse3N0eWxlOlYwLnRhcmdldHMsY2hpbGRyZW46WC5lbGVtZW50cy5tYXAoKFosJCk9PntsZXQgVj1oMShaKTtyZXR1cm4gUShONix7ZWxlbWVudDpaLGluZGV4OiQsc2NyZWVuOlguc2NyZWVuLGhpZ2hsaWdodGVkOlY9PT1HLHNlbGVjdGVkOlY9PT1KLG9uSGlnaGxpZ2h0Olksb25TZWxlY3Q6cX0sVil9KX0pfXZhciBVNj1ZOShmdW5jdGlvbih7ZWxlbWVudDpHLGluZGV4OkosYWN0aXZlOlksb25IaWdobGlnaHQ6cX0pe2xldCBaPWgxKEcpLCQ9ZzgoRyxKKSxWPWAke01hdGgucm91bmQoRy5mcmFtZS53aWR0aCl9eCR7TWF0aC5yb3VuZChHLmZyYW1lLmhlaWdodCl9YCxLPVskLmxhYmVsLCQucm9sZXx8JC50eXBlfHwiZWxlbWVudCIsVl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKTtyZXR1cm4gUSgiZGl2Iix7cm9sZToibGlzdGl0ZW0iLHRhYkluZGV4OjAsImRhdGEtYXgta2V5IjpaLHRpdGxlOkssb25Nb3VzZUVudGVyOigpPT5xKFopLG9uTW91c2VMZWF2ZTooKT0+cShudWxsKSxvbkZvY3VzOigpPT5xKFopLG9uQmx1cjooKT0+cShudWxsKSxzdHlsZTp7Li4uVjAubGlzdEl0ZW0sLi4uWT9WMC5saXN0SXRlbUFjdGl2ZTp7fX0sY2hpbGRyZW46W1EoInNwYW4iLHtzdHlsZTpWMC5pdGVtVGV4dCxjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOlYwLml0ZW1MYWJlbCxjaGlsZHJlbjpHLmxhYmVsfHxHLnJvbGV8fCJVbmxhYmVsZWQifSksUSgic3BhbiIse3N0eWxlOlYwLml0ZW1NZXRhLGNoaWxkcmVuOkcucm9sZXx8Ry50eXBlfHwiZWxlbWVudCJ9KV19KSxRKCJjb2RlIix7c3R5bGU6VjAuaXRlbVNpemUsY2hpbGRyZW46Vn0pXX0pfSwoWCxHKT0+WC5pbmRleD09PUcuaW5kZXgmJlguYWN0aXZlPT09Ry5hY3RpdmUmJlgub25IaWdobGlnaHQ9PT1HLm9uSGlnaGxpZ2h0JiZtOChYLmVsZW1lbnQsRy5lbGVtZW50KSk7ZnVuY3Rpb24gUDYoe292ZXJsYXlFbmFibGVkOlgsb25Ub2dnbGVPdmVybGF5Okd9KXtsZXR7c25hcHNob3Q6Sn09VzkoKSx7aGlnaGxpZ2h0ZWRLZXk6WSxzZXRIaWdobGlnaHRlZEtleTpxfT12OCgpLFo9Sj8uZWxlbWVudHM/P1tdLCQ9YjgoSiksVj1KPy5lcnJvcnM/LlswXT8/bnVsbDtyZXR1cm4gUSgiZGl2Iix7c3R5bGU6ey4uLlMuc2VjdGlvbixwYWRkaW5nOiI4cHggMTJweCJ9LGNoaWxkcmVuOltRKCJkaXYiLHtzdHlsZTpWMC5wYW5lbEhlYWRlcixjaGlsZHJlbjpbUSgic3BhbiIse3N0eWxlOnsuLi5TLnNlY3Rpb25UaXRsZSxtYXJnaW46MH0sY2hpbGRyZW46IkFYIFRyZWUifSksUSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOkcsImFyaWEtcHJlc3NlZCI6WCxzdHlsZTpWMC5vdmVybGF5VG9nZ2xlLGNoaWxkcmVuOlg/Ik92ZXJsYXkgb24iOiJFbmFibGUgb3ZlcmxheSJ9KV19KSwhWD9udWxsOiQ/USgiZGl2Iix7c3R5bGU6ey4uLlMuZW1wdHkscGFkZGluZzoxMn0sY2hpbGRyZW46WyJBWCB1bmF2YWlsYWJsZToiLCIgIixRKCJhIix7aHJlZjokOCxzdHlsZTpWMC5lbXB0eUxpbmssY2hpbGRyZW46Imluc3RhbGwgQVhlIn0pXX0pOloubGVuZ3RoPT09MD9RKCJkaXYiLHtzdHlsZTp7Li4uUy5lbXB0eSxwYWRkaW5nOjEyfSxjaGlsZHJlbjpWPz8iV2FpdGluZyBmb3IgYWNjZXNzaWJpbGl0eSBkYXRh4oCmIn0pOlEoImRpdiIse3N0eWxlOlYwLmxpc3Qscm9sZToibGlzdCIsY2hpbGRyZW46Wi5tYXAoKEssXyk9PntsZXQgSD1oMShLKTtyZXR1cm4gUShVNix7ZWxlbWVudDpLLGluZGV4Ol8sYWN0aXZlOkg9PT1ZLG9uSGlnaGxpZ2h0OnF9LEgpfSl9KV19KX1mdW5jdGlvbiBnOChYLEcpe2xldCBKPVgubGFiZWx8fFgucm9sZXx8YGVsZW1lbnQgJHtHKzF9YCxZPVgucm9sZXx8WC50eXBlO3JldHVybntpZDpYLmlkLHBhdGg6WC5wYXRoLGxhYmVsOkosdmFsdWU6WC52YWx1ZSxyb2xlOlksdHlwZTpYLnR5cGUsZW5hYmxlZDpYLmVuYWJsZWQsZnJhbWU6WC5mcmFtZX19ZnVuY3Rpb24gTTYoWCxHKXtsZXQgSj1NYXRoLm1heCgwLFgueCksWT1NYXRoLm1heCgwLFgueSkscT1NYXRoLm1pbihHLndpZHRoLFgueCtYLndpZHRoKSxaPU1hdGgubWluKEcuaGVpZ2h0LFgueStYLmhlaWdodCksJD1NYXRoLm1heCgwLHEtSiksVj1NYXRoLm1heCgwLFotWSk7cmV0dXJuICQ+MCYmVj4wP3t4OkoseTpZLHdpZHRoOiQsaGVpZ2h0OlZ9Om51bGx9ZnVuY3Rpb24gaDEoWCl7cmV0dXJuIFguaWR9ZnVuY3Rpb24gQTYoWCl7cmV0dXJuW2BBWCBsYWJlbDogJHtYLmxhYmVsfHwiVW5sYWJlbGVkIn1gLFgucm9sZT9gcm9sZTogJHtYLnJvbGV9YDoiIixYLnR5cGU/YHR5cGU6ICR7WC50eXBlfWA6IiIsWC52YWx1ZT9gdmFsdWU6ICR7WC52YWx1ZX1gOiIiLFguaWQ/YGlkOiAke1guaWR9YDoiIixgcGF0aDogJHtYLnBhdGh9YCxgZnJhbWU6ICR7eDgoWC5mcmFtZSl9YF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIjsgIil9ZnVuY3Rpb24geDgoWCl7cmV0dXJuYCR7WC54fSwke1gueX0gJHtYLndpZHRofXgke1guaGVpZ2h0fWB9ZnVuY3Rpb24gdzYoe292ZXJsYXlFbmFibGVkOlgsc3RyZWFtaW5nOkcsb25Ub2dnbGVPdmVybGF5Okp9KXtsZXR7c3RhdHVzOll9PVc5KCksW3EsWl09VCghMSk7cmV0dXJuIFEoUTAuQnV0dG9uLHsiYXJpYS1sYWJlbCI6WD8iSGlkZSBhY2Nlc3NpYmlsaXR5IG92ZXJsYXkiOiJTaG93IGFjY2Vzc2liaWxpdHkgb3ZlcmxheSIsImFyaWEtcHJlc3NlZCI6WCx0aXRsZTpZLG9uQ2xpY2s6Sixvbk1vdXNlRW50ZXI6KCk9PlooITApLG9uTW91c2VMZWF2ZTooKT0+WighMSksc3R5bGU6WCYmRz97Li4uVjAudG9vbGJhckJ1dHRvbkFjdGl2ZSwuLi5xP1YwLnRvb2xiYXJCdXR0b25BY3RpdmVIb3Zlcjp7fX06dm9pZCAwLGNoaWxkcmVuOlEoInN2ZyIse3dpZHRoOiIxOSIsaGVpZ2h0OiIxOSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltRKCJwYXRoIix7ZDoiTTMgOFY1YTIgMiAwIDAgMSAyLTJoMyJ9KSxRKCJwYXRoIix7ZDoiTTE2IDNoM2EyIDIgMCAwIDEgMiAydjMifSksUSgicGF0aCIse2Q6Ik0yMSAxNnYzYTIgMiAwIDAgMS0yIDJoLTMifSksUSgicGF0aCIse2Q6Ik04IDIxSDVhMiAyIDAgMCAxLTItMnYtMyJ9KSxRKCJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMy41In0pXX0pfSl9ZnVuY3Rpb24gSTYoe29wZW46WCxvbkNsb3NlOkcsdWRpZDpKLGN1cnJlbnRBcHA6WSxheE92ZXJsYXlFbmFibGVkOnEsb25Ub2dnbGVBeE92ZXJsYXk6Wn0pe3JldHVybiBRKCJhc2lkZSIse3N0eWxlOnsuLi5TLnBhbmVsLHRyYW5zZm9ybTpYPyJ0cmFuc2xhdGVYKDApIjoidHJhbnNsYXRlWChjYWxjKDEwMCUgKyAyNHB4KSkiLG9wYWNpdHk6WD8xOjAscG9pbnRlckV2ZW50czpYPyJhdXRvIjoibm9uZSJ9LCJhcmlhLWhpZGRlbiI6IVgsY2hpbGRyZW46W1EoImhlYWRlciIse3N0eWxlOlMuaGVhZGVyLGNoaWxkcmVuOltRKCJzcGFuIix7c3R5bGU6Uy5oZWFkZXJUaXRsZSxjaGlsZHJlbjoiVG9vbHMifSksUSgiYnV0dG9uIix7b25DbGljazpHLHN0eWxlOlMuY2xvc2VCdG4sImFyaWEtbGFiZWwiOiJDbG9zZSBwYW5lbCIsY2hpbGRyZW46USgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1EoImxpbmUiLHt4MToiMTgiLHkxOiI2Iix4MjoiNiIseTI6IjE4In0pLFEoImxpbmUiLHt4MToiNiIseTE6IjYiLHgyOiIxOCIseTI6IjE4In0pXX0pfSldfSksWCYmUSgiZGl2Iix7c3R5bGU6Uy5ib2R5LGNoaWxkcmVuOltRKFA2LHtvdmVybGF5RW5hYmxlZDpxLG9uVG9nZ2xlT3ZlcmxheTpafSksUShINix7dWRpZDpKLGN1cnJlbnRBcHA6WX0pLFEoRjYse3VkaWQ6SixidW5kbGVJZDpZPy5idW5kbGVJZD8/bnVsbH0pXX0pXX0pfWZ1bmN0aW9uIGs2KHtvcGVuOlgsb25DbG9zZTpHLHVkaWQ6Six0YXJnZXRzOlksc2VsZWN0ZWRUYXJnZXRJZDpxLG9uU2VsZWN0VGFyZ2V0OlosbG9hZGluZzokLGVycm9yOlYsb25SZWZyZXNoOkt9KXtsZXQgXz1xP1kuZmluZCgoSCk9PkguaWQ9PT1xKT8/bnVsbDpudWxsO3JldHVybiBRKCJhc2lkZSIse3N0eWxlOnsuLi5tLnBhbmVsLHRyYW5zZm9ybTpYPyJ0cmFuc2xhdGVYKDApIjoidHJhbnNsYXRlWChjYWxjKDEwMCUgKyAyNHB4KSkiLG9wYWNpdHk6WD8xOjAscG9pbnRlckV2ZW50czpYPyJhdXRvIjoibm9uZSJ9LCJhcmlhLWhpZGRlbiI6IVgsY2hpbGRyZW46W1EoImhlYWRlciIse3N0eWxlOm0uaGVhZGVyLGNoaWxkcmVuOltZLmxlbmd0aD4wP1EoWjYse3VkaWQ6Six0YXJnZXRzOlksc2VsZWN0ZWQ6XyxvblNlbGVjdFRhcmdldDpaLG9uUmVmcmVzaDpLfSk6USgic3BhbiIse3N0eWxlOm0uZW1wdHlUYXJnZXQsY2hpbGRyZW46JD8iTG9va2luZyBmb3IgU2FmYXJpIGFuZCBpbnNwZWN0YWJsZSB3ZWJ2aWV3cy4uLiI6Ik5vIGluc3BlY3RhYmxlIFNhZmFyaSBvciBXS1dlYlZpZXcgdGFyZ2V0cyJ9KSxRKCJidXR0b24iLHtvbkNsaWNrOkcsc3R5bGU6bS5pY29uQnV0dG9uLCJhcmlhLWxhYmVsIjoiQ2xvc2UgV2ViS2l0IERldlRvb2xzIix0aXRsZToiQ2xvc2UiLGNoaWxkcmVuOlEoInN2ZyIse3dpZHRoOiIxNSIsaGVpZ2h0OiIxNSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltRKCJsaW5lIix7eDE6IjE4Iix5MToiNiIseDI6IjYiLHkyOiIxOCJ9KSxRKCJsaW5lIix7eDE6IjYiLHkxOiI2Iix4MjoiMTgiLHkyOiIxOCJ9KV19KX0pXX0pLFEoImRpdiIse3N0eWxlOm0uZnJhbWVXcmFwLGNoaWxkcmVuOlY/USgiZGl2Iix7c3R5bGU6bS5tZXNzYWdlLGNoaWxkcmVuOlZ9KTpfJiZYP1EoImlmcmFtZSIse3NyYzpfLmRldnRvb2xzRnJvbnRlbmRVcmwsdGl0bGU6YFdlYktpdCBEZXZUb29scyAtICR7Xy50aXRsZXx8Xy51cmx8fF8uaWR9YCxzdHlsZTptLmlmcmFtZSxvbkxvYWQ6KEgpPT5HNihILmN1cnJlbnRUYXJnZXQpfSxfLmlkKTpRKCJkaXYiLHtzdHlsZTptLm1lc3NhZ2UsY2hpbGRyZW46Xz8iRGV2VG9vbHMgcGF1c2VkIOKAlCBvcGVuIHRoZSBwYW5lbCB0byByZWF0dGFjaC4iOiJPcGVuIFNhZmFyaSBvciBhbiBpbnNwZWN0YWJsZSBXS1dlYlZpZXcgaW4gdGhlIHNpbXVsYXRvci4ifSl9KV19KX12YXIgVDY9e3dpZHRoOiIxMDAlIixtYXhXaWR0aDozNjAsbWFyZ2luVG9wOjgsYmFja2dyb3VuZDoiIzFjMWMxZSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSIsYm9yZGVyUmFkaXVzOjEwLHBhZGRpbmc6NCxmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsZm9udFNpemU6MTMsY29sb3I6IiNlZWUiLHRleHRBbGlnbjoibGVmdCIsbWF4SGVpZ2h0OiI3MHZoIixvdmVyZmxvd1k6ImF1dG8iLG1pbkhlaWdodDowfTtmdW5jdGlvbiBFNigpe2xldCBYPXdpbmRvdy5fX1NJTV9QUkVWSUVXX18sW0csSl09VCghMSksW1kscV09VChbXSksW1osJF09VCghMSksW1YsS109VChudWxsKSxbXyxIXT1UKG5ldyBTZXQpLFt6LExdPVQoITEpLFtCLE1dPVQoITEpLFtOLE9dPVQoITEpLFtQLEFdPVQobnVsbCksdj1qKGFzeW5jKCk9PnskKCEwKSxLKG51bGwpO3RyeXtsZXQgRD1hd2FpdCAkMCgieGNydW4gc2ltY3RsIGxpc3QgZGV2aWNlcyBhdmFpbGFibGUgLWoiKTtpZihELmV4aXRDb2RlIT09MCl0aHJvdyBFcnJvcihELnN0ZGVycnx8InNpbWN0bCBsaXN0IGZhaWxlZCIpO3EocTYoRC5zdGRvdXQpKX1jYXRjaChEKXtLKEQgaW5zdGFuY2VvZiBFcnJvcj9ELm1lc3NhZ2U6IkZhaWxlZCB0byBsaXN0IGRldmljZXMiKX1maW5hbGx5eyQoITEpfX0sW10pO2lmKFIoKCk9Pnt2KCl9LFt2XSksUigoKT0+e2lmKCFYPy5sb2dzRW5kcG9pbnQpcmV0dXJuO2xldCBEPW5ldyBFdmVudFNvdXJjZShYLmxvZ3NFbmRwb2ludCksaz1uZXcgTWFwLEU9WyIjOGJlOWZkIiwiIzUwZmE3YiIsIiNmZmI4NmMiLCIjZmY3OWM2IiwiI2JkOTNmOSIsIiNmMWZhOGMiLCIjNjI3MmE0IiwiI2ZmNTU1NSIsIiM2OWZmOTQiLCIjZDZhY2ZmIiwiI2ZmZmZhNSIsIiNhNGZmZmYiLCIjZmY2ZTZlIiwiI2NhYTlmYSIsIiM1YWY3OGUiXTtmdW5jdGlvbiBoKEQwKXtsZXQgSjA9ay5nZXQoRDApO2lmKCFKMCl7bGV0IHEwPTA7Zm9yKGxldCBIMD0wO0gwPEQwLmxlbmd0aDtIMCsrKXEwPShxMDw8NSktcTArRDAuY2hhckNvZGVBdChIMCl8MDtKMD1FW01hdGguYWJzKHEwKSVFLmxlbmd0aF0say5zZXQoRDAsSjApfXJldHVybiBKMH1sZXQgaT0iIixkPSExO3JldHVybiBELm9ubWVzc2FnZT0oRDApPT57dHJ5e2xldCBKMD1KU09OLnBhcnNlKEQwLmRhdGEpLHEwPUowLnByb2Nlc3NJbWFnZVBhdGg/LnNwbGl0KCIvIikucG9wKCk/P0owLnNlbmRlckltYWdlUGF0aD8uc3BsaXQoIi8iKS5wb3AoKT8/IiIsSDA9SjAuc3Vic3lzdGVtPz8iIixQMD1KMC5jYXRlZ29yeT8/IiIsZDA9SjAuZXZlbnRNZXNzYWdlPz8iIjtpZighZDApcmV0dXJuO2lmKHEwIT09aSl7aWYoZCljb25zb2xlLmdyb3VwRW5kKCk7bGV0IHUwPWgocTApO2NvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoYCVjJHtxMH0ke0gwP2AgJWMke0gwfSR7UDA/IjoiK1AwOiIifWA6IiJ9YCxgY29sb3I6JHt1MH07Zm9udC13ZWlnaHQ6Ym9sZGAsLi4uSDA/WyJjb2xvcjojODg4O2ZvbnQtd2VpZ2h0Om5vcm1hbCJdOltdKSxkPSEwLGk9cTB9bGV0IG0wPShKMC5tZXNzYWdlVHlwZT8/IiIpLnRvTG93ZXJDYXNlKCksTjA9SDAmJnEwPT09aT9gJWMke1AwfHxIMH0lYyBgOiIiLEIwPU4wP1siY29sb3I6Izg4ODtmb250LXN0eWxlOml0YWxpYyIsImNvbG9yOmluaGVyaXQiXTpbXTtpZihtMD09PSJmYXVsdCJ8fG0wPT09ImVycm9yIiljb25zb2xlLmxvZyhgJHtOMH0lYyR7ZDB9YCwuLi5CMCwiY29sb3I6I2ZmNTU1NSIpO2Vsc2UgaWYobTA9PT0iZGVidWciKWNvbnNvbGUubG9nKGAke04wfSVjJHtkMH1gLC4uLkIwLCJjb2xvcjojNjI3MmE0Iik7ZWxzZSBjb25zb2xlLmxvZyhgJHtOMH0lYyR7ZDB9YCwuLi5CMCwiY29sb3I6aW5oZXJpdCIpfWNhdGNoe319LCgpPT57aWYoZCljb25zb2xlLmdyb3VwRW5kKCk7RC5jbG9zZSgpfX0sW1g/LmxvZ3NFbmRwb2ludF0pLCFYKXJldHVybiBRKEQ2LHtkZXZpY2VzOlksbG9hZGluZzpaLGVycm9yOlYsb25SZWZyZXNoOnZ9KTtsZXQgeT1ZLmZpbmQoKEQpPT5ELnVkaWQ9PT1YLmRldmljZSk/P251bGw7UigoKT0+e2RvY3VtZW50LnRpdGxlPXk/Lm5hbWU/YFNpbXVsYXRvciAtICR7eS5uYW1lfWA6IlNpbXVsYXRvciBQcmV2aWV3In0sW3k/Lm5hbWVdKTtsZXQgdT1sMCh5Py5uYW1lKSxwPVg2KFguZGV2dG9vbHNFbmRwb2ludD8/cjAoImRldnRvb2xzIiksTik7UigoKT0+e2lmKCFOKXJldHVybjtpZihQJiZwLnRhcmdldHMuc29tZSgoRCk9PkQuaWQ9PT1QKSlyZXR1cm47QShwLnRhcmdldHMubGVuZ3RoPT09MT9wLnRhcmdldHNbMF0uaWQ6bnVsbCl9LFtOLHAudGFyZ2V0cyxQXSksUigoKT0+e0EobnVsbCl9LFtYLmRldmljZV0pO2xldCBjPXI0KFguc3RyZWFtVXJsKSxbejAsc109VChudWxsKSx0PXowPz9jLmNvbmZpZz8/RTEodSx5Py5uYW1lKSxmPVIxKHUsdCksZzA9QzEodSx0KSxRMT1UMSh0KSxXMD1iKG51bGwpO1IoKCk9PntsZXQgRD0hMSxrPW51bGwsRT1udWxsLGg9KCk9PntpZihEfHxrKXJldHVybjtrPXNldFRpbWVvdXQoKCk9PntrPW51bGwsaSgpfSwxMDAwKX0saT0oKT0+e2xldCBkPW5ldyBXZWJTb2NrZXQoWC53c1VybCk7ZC5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciIsRT1kLFcwLmN1cnJlbnQ9ZCxkLm9uY2xvc2U9KCk9PntpZihXMC5jdXJyZW50PT09ZClXMC5jdXJyZW50PW51bGw7aCgpfSxkLm9uZXJyb3I9KCk9PntkLmNsb3NlKCl9fTtyZXR1cm4gaSgpLCgpPT57aWYoRD0hMCxrKWNsZWFyVGltZW91dChrKTtpZihXMC5jdXJyZW50PT09RSlXMC5jdXJyZW50PW51bGw7RT8uY2xvc2UoKX19LFtYLndzVXJsXSk7bGV0IFgwPWooKEQsayk9PntsZXQgRT1XMC5jdXJyZW50O2lmKCFFfHxFLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTilyZXR1cm47bGV0IGg9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGspKSxpPW5ldyBVaW50OEFycmF5KDEraC5sZW5ndGgpO2lbMF09RCxpLnNldChoLDEpLEUuc2VuZChpKX0sW10pLCQxPWooKEQpPT5YMCgzLEQpLFtYMF0pLF8xPWooKEQpPT5YMCg1LEQpLFtYMF0pLFUwPWooKEQpPT5YMCg0LHtidXR0b246RH0pLFtYMF0pLG0xPWooKEQpPT57cygoayk9PmsmJmsud2lkdGg9PT1ELndpZHRoJiZrLmhlaWdodD09PUQuaGVpZ2h0JiZrLm9yaWVudGF0aW9uPT09RC5vcmllbnRhdGlvbj9rOkQpfSxbXSksczA9aigoRCk9PntYMCg3LHtvcmllbnRhdGlvbjpEfSl9LFtYMF0pO1IoKCk9PntzKG51bGwpfSxbWC5zdHJlYW1VcmxdKSxSKCgpPT57bGV0IEQ9Yy5jb25maWc7aWYoIUQpcmV0dXJuO3MoKGspPT5rJiZrLndpZHRoPT09RC53aWR0aCYmay5oZWlnaHQ9PT1ELmhlaWdodCYmay5vcmllbnRhdGlvbj09PUQub3JpZW50YXRpb24/azpudWxsKX0sW2MuY29uZmlnPy53aWR0aCxjLmNvbmZpZz8uaGVpZ2h0LGMuY29uZmlnPy5vcmllbnRhdGlvbl0pO2xldCBZMD1qKChELGspPT57WDAoNix7dHlwZTpELHVzYWdlOmt9KX0sW1gwXSksW3gwLGswXT1UKG51bGwpLFtUMCxFMF09VCghMSksW0MwLFowXT1UKCgpPT50eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cuaW5uZXJXaWR0aDowKTtSKCgpPT57bGV0IEQ9KCk9PlowKHdpbmRvdy5pbm5lcldpZHRoKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsRCksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLEQpfSxbXSksUigoKT0+e2xldCBEPW5ldyBFdmVudFNvdXJjZShYLmFwcFN0YXRlRW5kcG9pbnQ/P3IwKCJhcHBzdGF0ZSIpKSxrPW51bGw7cmV0dXJuIEQub25tZXNzYWdlPShFKT0+e3RyeXtsZXQgaD1KU09OLnBhcnNlKEUuZGF0YSk7aWYoayljbGVhclRpbWVvdXQoayk7bGV0IGk9aD8uaXNSZWFjdE5hdGl2ZT8wOjYwMDtrPXNldFRpbWVvdXQoKCk9PmswKGgpLGkpfWNhdGNoe319LCgpPT57aWYoayljbGVhclRpbWVvdXQoayk7RC5jbG9zZSgpfX0sW1guYXBwU3RhdGVFbmRwb2ludF0pO2xldCB0MD1qKGFzeW5jKCk9PntZMCgiZG93biIsMjI3KSxhd2FpdCBuZXcgUHJvbWlzZSgoRSk9PnNldFRpbWVvdXQoRSwzMCkpLFkwKCJkb3duIiwyMSksYXdhaXQgbmV3IFByb21pc2UoKEUpPT5zZXRUaW1lb3V0KEUsMzApKSxZMCgidXAiLDIxKSxhd2FpdCBuZXcgUHJvbWlzZSgoRSk9PnNldFRpbWVvdXQoRSwzMCkpLFkwKCJ1cCIsMjI3KX0sW1kwXSksTDA9YihudWxsKSxbcDAsVjFdPVQoITApLEswPWIoITApO0swLmN1cnJlbnQ9cDA7bGV0IFIwPWIobmV3IFNldCk7UigoKT0+e2xldCBEPShrKT0+e2xldCBFPSEhTDAuY3VycmVudD8uY29udGFpbnMoay50YXJnZXQpO1YxKEUpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLEQsITApLCgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsRCwhMCl9LFtdKSxSKCgpPT57aWYocDApcmV0dXJuO2xldCBEPVIwLmN1cnJlbnQ7aWYoRC5zaXplPT09MClyZXR1cm47Zm9yKGxldCBrIG9mIEQpWDAoNix7dHlwZToidXAiLHVzYWdlOmt9KTtELmNsZWFyKCl9LFtwMCxYMF0pLFIoKCk9PntsZXQgRD0oaCxpKT0+e2lmKCFLMC5jdXJyZW50KXJldHVybjtpZihoLmNvZGU9PT0iS2V5SCImJmgubWV0YUtleSYmaC5zaGlmdEtleSl7aWYoaC5wcmV2ZW50RGVmYXVsdCgpLGk9PT0iZG93biImJiFoLnJlcGVhdClYMCg0LHtidXR0b246ImhvbWUifSk7cmV0dXJufWlmKGguY29kZT09PSJLZXlBIiYmaC5tZXRhS2V5JiZoLnNoaWZ0S2V5KXtpZihoLnByZXZlbnREZWZhdWx0KCksaT09PSJkb3duIiYmIWgucmVwZWF0KSQwKGB4Y3J1biBzaW1jdGwgdWkgJHtYLmRldmljZX0gYXBwZWFyYW5jZWApLnRoZW4oKEQwKT0+e2xldCBKMD1EMC5zdGRvdXQudHJpbSgpPT09ImRhcmsiPyJsaWdodCI6ImRhcmsiO3JldHVybiAkMChgeGNydW4gc2ltY3RsIHVpICR7WC5kZXZpY2V9IGFwcGVhcmFuY2UgJHtKMH1gKX0pLmNhdGNoKCgpPT57fSk7cmV0dXJufWxldCBkPXQ0KGguY29kZSk7aWYoZD09bnVsbClyZXR1cm47aWYoaC5wcmV2ZW50RGVmYXVsdCgpLGk9PT0iZG93biIpUjAuY3VycmVudC5hZGQoZCk7ZWxzZSBSMC5jdXJyZW50LmRlbGV0ZShkKTtYMCg2LHt0eXBlOmksdXNhZ2U6ZH0pfSxrPShoKT0+RChoLCJkb3duIiksRT0oaCk9PkQoaCwidXAiKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGspLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsRSksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsayksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIixFKX19LFtYMCxYLmRldmljZV0pO2xldCBHMD1qKGFzeW5jKEQpPT57aWYoenx8RC51ZGlkPT09WC5kZXZpY2UpcmV0dXJuO0woITApO3RyeXtpZihELnN0YXRlIT09IkJvb3RlZCIpYXdhaXQgJDAoYHhjcnVuIHNpbWN0bCBib290ICR7RC51ZGlkfWApO2xldCBrPWF3YWl0ICQwKGBidW54IHNlcnZlLXNpbSAtLWRldGFjaCAke0QudWRpZH1gKTtpZihrLmV4aXRDb2RlIT09MCl0aHJvdyBFcnJvcihrLnN0ZGVycnx8IkZhaWxlZCB0byBzdGFydCBzZXJ2ZS1zaW0iKTtsZXQgRT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtFLnNlYXJjaFBhcmFtcy5zZXQoImRldmljZSIsRC51ZGlkKSx3aW5kb3cubG9jYXRpb24uYXNzaWduKEUudG9TdHJpbmcoKSl9Y2F0Y2h7TCghMSl9fSxbeixYLmRldmljZV0pLG49VzYoKSxmMD1MNih7ZXhlYzokMCx1ZGlkOlguZGV2aWNlLGVuYWJsZWQ6RyxvblVwbG9hZFN0YXJ0Om4uYWRkLG9uVXBsb2FkRW5kOihELGssRSk9Pm4udXBkYXRlKEQse3N0YXR1czprPyJzdWNjZXNzIjoiZXJyb3IiLG1lc3NhZ2U6RX0pLG9uVW5zdXBwb3J0ZWQ6KEQpPT57bGV0IGs9bi5hZGQoRC5uYW1lLCJtZWRpYSIpO24udXBkYXRlKGsse3N0YXR1czoiZXJyb3IiLG1lc3NhZ2U6YFVuc3VwcG9ydGVkOiAke0QudHlwZXx8TDkoRCl9YH0pfX0pLG4wPWooYXN5bmMoRCk9PntIKChrKT0+bmV3IFNldChrKS5hZGQoRCkpO3RyeXthd2FpdCAkMChgeGNydW4gc2ltY3RsIHNodXRkb3duICR7RH1gKSxhd2FpdCB2KCl9ZmluYWxseXtIKChrKT0+e2xldCBFPW5ldyBTZXQoayk7cmV0dXJuIEUuZGVsZXRlKEQpLEV9KX19LFt2XSksdjA9aTgrMjQsaDA9Tj92MDpUMD9jOCsyNDowLHoxPWgwPjAmJkMwPj1nMCtoMCs2ND9oMDowO3JldHVybiBRKGU0LHtlbmRwb2ludDpCP1g/LmF4RW5kcG9pbnQ6dm9pZCAwLGNoaWxkcmVuOlEoImRpdiIse3N0eWxlOnsuLi5fMC5wYWdlLHBhZGRpbmdSaWdodDoyNCt6MSx0cmFuc2l0aW9uOiJwYWRkaW5nLXJpZ2h0IDAuMjVzIGVhc2UifSxjaGlsZHJlbjpbUSgiZGl2Iix7c3R5bGU6ey4uLl8wLnNpbXVsYXRvclN0YWNrLG1heFdpZHRoOmcwfSxjaGlsZHJlbjpbUShRMCx7ZXhlYzokMCxvblJvdGF0ZTpzMCxvcmllbnRhdGlvbjp0Lm9yaWVudGF0aW9uPz9udWxsLGRldmljZVVkaWQ6WC5kZXZpY2UsZGV2aWNlTmFtZTp5Py5uYW1lPz9udWxsLGRldmljZVJ1bnRpbWU6eT8ucnVudGltZT8/bnVsbCxzdHJlYW1pbmc6RyxjaGlsZHJlbjpbUShRNix7ZGV2aWNlczpZLHNlbGVjdGVkVWRpZDpYLmRldmljZSxsb2FkaW5nOlosZXJyb3I6VixzdG9wcGluZ1VkaWRzOl8sb25SZWZyZXNoOnYsb25TZWxlY3Q6RzAsb25TdG9wOm4wLHRyaWdnZXI6UShRMC5UaXRsZSx7fSl9KSxRKFEwLkFjdGlvbnMse2NoaWxkcmVuOlt4MD8uaXNSZWFjdE5hdGl2ZSYmUShRMC5CdXR0b24seyJhcmlhLWxhYmVsIjoiUmVsb2FkIFJlYWN0IE5hdGl2ZSBidW5kbGUiLHRpdGxlOiJSZWxvYWQgKENtZCtSKSIsb25DbGljazooKT0+dm9pZCB0MCgpLGNoaWxkcmVuOlEoajgse30pfSksUShRMC5Ib21lQnV0dG9uLHtvbkNsaWNrOihEKT0+e0QucHJldmVudERlZmF1bHQoKSxVMCgiaG9tZSIpfX0pLFEodzYse292ZXJsYXlFbmFibGVkOkIsc3RyZWFtaW5nOkcsb25Ub2dnbGVPdmVybGF5OigpPT5NKChEKT0+IUQpfSksUShRMC5Sb3RhdGVCdXR0b24se3RpdGxlOiJSb3RhdGUgZGV2aWNlIn0pXX0pXX0pLFEoImRpdiIse3JlZjpMMCxzdHlsZTp7bWF4V2lkdGg6ZzAsbWF4SGVpZ2h0OiIxMDAlIix3aWR0aDoiMTAwJSIsYXNwZWN0UmF0aW86UTEscG9zaXRpb246InJlbGF0aXZlIn0sLi4uZjAuZHJvcFpvbmVQcm9wcyxjaGlsZHJlbjpbUShrMSx7dXJsOlgudXJsLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixib3JkZXI6Im5vbmUifSxpbWFnZVN0eWxlOntib3JkZXJSYWRpdXM6Zixjb3JuZXJTaGFwZToic3VwZXJlbGxpcHNlKDEuMykifSxoaWRlQ29udHJvbHM6ITAsb25TdHJlYW1pbmdDaGFuZ2U6SixvblN0cmVhbVRvdWNoOiQxLG9uU3RyZWFtTXVsdGlUb3VjaDpfMSxvblN0cmVhbUJ1dHRvbjpVMCxzdWJzY3JpYmVGcmFtZTpjLnN1YnNjcmliZUZyYW1lLHN0cmVhbUZyYW1lOmMuZnJhbWUsc3RyZWFtQ29uZmlnOnQsb25TY3JlZW5Db25maWdDaGFuZ2U6bTF9KSxCJiZRKE82LHt9KSxmMC5pc0RyYWdPdmVyJiZRKCJkaXYiLHtzdHlsZTp7Li4uXzAuZHJvcE92ZXJsYXksYm9yZGVyUmFkaXVzOmZ9LGNoaWxkcmVuOltRKCJzdmciLHt3aWR0aDoiMzIiLGhlaWdodDoiMzIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIxLjUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltRKCJwYXRoIix7ZDoiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQifSksUSgicG9seWxpbmUiLHtwb2ludHM6IjE3IDggMTIgMyA3IDgifSksUSgibGluZSIse3gxOiIxMiIseTE6IjMiLHgyOiIxMiIseTI6IjE1In0pXX0pLFEoInNwYW4iLHtzdHlsZTp7Zm9udFNpemU6MTMsZm9udFdlaWdodDo1MDB9LGNoaWxkcmVuOiJEcm9wIG1lZGlhIG9yIC5pcGEifSldfSldfSldfSksbi50b2FzdHMubGVuZ3RoPjAmJlEoImRpdiIse3N0eWxlOl8wLnRvYXN0U3RhY2ssY2hpbGRyZW46bi50b2FzdHMubWFwKChEKT0+USgiZGl2Iix7c3R5bGU6XzAudG9hc3QsY2hpbGRyZW46W1EoInNwYW4iLHtzdHlsZTp7Li4uXzAuZG90LGJhY2tncm91bmQ6RC5zdGF0dXM9PT0idXBsb2FkaW5nIj8iI2E1YjRmYyI6RC5zdGF0dXM9PT0ic3VjY2VzcyI/IiM0YWRlODAiOiIjZjg3MTcxIn19KSxRKCJzcGFuIix7c3R5bGU6e2ZsZXg6MSxvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjpbRC5zdGF0dXM9PT0idXBsb2FkaW5nIiYmKEQua2luZD09PSJpcGEiP2BJbnN0YWxsaW5nICR7RC5uYW1lfeKApmA6YFVwbG9hZGluZyAke0QubmFtZX3igKZgKSxELnN0YXR1cz09PSJzdWNjZXNzIiYmKEQua2luZD09PSJpcGEiP2BJbnN0YWxsZWQgJHtELm5hbWV9YDpgQWRkZWQgJHtELm5hbWV9IHRvIFBob3Rvc2ApLEQuc3RhdHVzPT09ImVycm9yIiYmYCR7RC5uYW1lfTogJHtELm1lc3NhZ2U/PyJVcGxvYWQgZmFpbGVkIn1gXX0pXX0sRC5pZCkpfSksUSgiZGl2Iix7c3R5bGU6ey4uLl85LnJhaWwsb3BhY2l0eTpUMHx8Tj8wOjEscG9pbnRlckV2ZW50czpUMHx8Tj8ibm9uZSI6ImF1dG8ifSxjaGlsZHJlbjpbUSgiYnV0dG9uIix7b25DbGljazooKT0+e08oITEpLEUwKChEKT0+IUQpfSxzdHlsZTpfOS5idXR0b24sImFyaWEtbGFiZWwiOiJPcGVuIHRvb2xzIHBhbmVsIiwiYXJpYS1wcmVzc2VkIjpUMCx0aXRsZToiVG9vbHMiLGNoaWxkcmVuOlEoInN2ZyIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjEuNzUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltRKCJyZWN0Iix7eDoiMyIseToiNCIsd2lkdGg6IjE4IixoZWlnaHQ6IjE2IixyeDoiMi41In0pLFEoImxpbmUiLHt4MToiMTUiLHkxOiI0Iix4MjoiMTUiLHkyOiIyMCJ9KV19KX0pLFEoImJ1dHRvbiIse29uQ2xpY2s6KCk9PntFMCghMSksTygoRCk9PiFEKX0sc3R5bGU6XzkuYnV0dG9uLCJhcmlhLWxhYmVsIjoiT3BlbiBXZWJLaXQgRGV2VG9vbHMiLCJhcmlhLXByZXNzZWQiOk4sdGl0bGU6IldlYktpdCBEZXZUb29scyIsY2hpbGRyZW46USgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMS43NSIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W1EoImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9KSxRKCJwYXRoIix7ZDoiTTEyIDJhMTQuNSAxNC41IDAgMCAwIDAgMjAgMTQuNSAxNC41IDAgMCAwIDAtMjAifSksUSgicGF0aCIse2Q6Ik0yIDEyaDIwIn0pXX0pfSldfSksUShJNix7b3BlbjpUMCxvbkNsb3NlOigpPT5FMCghMSksdWRpZDpYLmRldmljZSxjdXJyZW50QXBwOngwLGF4T3ZlcmxheUVuYWJsZWQ6QixvblRvZ2dsZUF4T3ZlcmxheTooKT0+TSgoRCk9PiFEKX0pLFEoazYse29wZW46TixvbkNsb3NlOigpPT5PKCExKSx1ZGlkOlguZGV2aWNlLHRhcmdldHM6cC50YXJnZXRzLHNlbGVjdGVkVGFyZ2V0SWQ6UCxvblNlbGVjdFRhcmdldDpBLGxvYWRpbmc6cC5sb2FkaW5nLGVycm9yOnAuZXJyb3Isb25SZWZyZXNoOigpPT52b2lkIHAucmVmcmVzaCgpfSksUSgiZGl2Iix7c3R5bGU6XzAuYmFyLGNoaWxkcmVuOlEoInNwYW4iLHtzdHlsZTp7Li4uXzAubGl2ZSxjb2xvcjpHPyIjNGFkZTgwIjoiIzY2NiJ9LGNoaWxkcmVuOltRKCJzcGFuIix7c3R5bGU6ey4uLl8wLmRvdCxiYWNrZ3JvdW5kOkc/IiM0YWRlODAiOiIjNjY2In19KSxHPyJsaXZlIjoiY29ubmVjdGluZyJdfSl9KV19KX0pfXZhciBfMD17cGFnZTp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGhlaWdodDoiMTAwdmgiLGJhY2tncm91bmQ6IiMwYTBhMGEiLHBhZGRpbmc6MjQsZ2FwOjEyLGZvbnRGYW1pbHk6Ii1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgc2Fucy1zZXJpZiIsYm94U2l6aW5nOiJib3JkZXItYm94In0sc2ltdWxhdG9yU3RhY2s6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6MTIsd2lkdGg6IjEwMCUiLG1pbldpZHRoOjAsdHJhbnNpdGlvbjoibWF4LXdpZHRoIDAuMjVzIGVhc2UifSxiYXI6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjEwLGZvbnRTaXplOjEyLGZvbnRGYW1pbHk6InVpLW1vbm9zcGFjZSwgbW9ub3NwYWNlIixjb2xvcjoiIzY2NiJ9LGxpdmU6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjUsdHJhbnNpdGlvbjoiY29sb3IgMC4zcyJ9LGRvdDp7d2lkdGg6NixoZWlnaHQ6Nixib3JkZXJSYWRpdXM6IjUwJSIsdHJhbnNpdGlvbjoiYmFja2dyb3VuZCAwLjNzIn0sZW1wdHk6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6MTIsdGV4dEFsaWduOiJjZW50ZXIifSxlbXB0eVRpdGxlOntmb250U2l6ZToxOCxtYXJnaW46MCxjb2xvcjoiI2VlZSJ9LGVtcHR5SGludDp7Y29sb3I6IiM4ODgiLGZvbnRTaXplOjE0LG1heFdpZHRoOjQ4MH0sY29kZTp7YmFja2dyb3VuZDoiIzIyMiIscGFkZGluZzoiMnB4IDZweCIsYm9yZGVyUmFkaXVzOjQsZm9udFNpemU6MTN9LGRyb3BPdmVybGF5Ontwb3NpdGlvbjoiYWJzb2x1dGUiLGluc2V0OjAsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGdhcDo4LGJvcmRlcjoiMnB4IGRhc2hlZCAjYTViNGZjIixiYWNrZ3JvdW5kOiJyZ2JhKDk5LDEwMiwyNDEsMC4xMikiLGJhY2tkcm9wRmlsdGVyOiJibHVyKDJweCkiLGNvbG9yOiIjYTViNGZjIixwb2ludGVyRXZlbnRzOiJub25lIix6SW5kZXg6MjB9LHRvYXN0U3RhY2s6e3Bvc2l0aW9uOiJmaXhlZCIsYm90dG9tOjE2LHJpZ2h0OjE2LGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjYsbWF4V2lkdGg6MzIwLHpJbmRleDozMH0sdG9hc3Q6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjgscGFkZGluZzoiOHB4IDEycHgiLGJhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czo4LGNvbG9yOiIjZWVlIixmb250U2l6ZToxMixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsYm94U2hhZG93OiIwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC40KSJ9fSxDNj17cG9zaXRpb246ImFic29sdXRlIix0b3A6ImNhbGMoMTAwJSArIDZweCkiLGxlZnQ6MCxtaW5XaWR0aDoyNjAsbWF4SGVpZ2h0OjM2MCxvdmVyZmxvd1k6ImF1dG8iLGJhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czoxMCxwYWRkaW5nOjQsYm94U2hhZG93OiIwIDhweCAyNHB4IHJnYmEoMCwwLDAsMC41KSIsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGZvbnRTaXplOjEzLGNvbG9yOiIjZWVlIix6SW5kZXg6MjB9LHA4PXtkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixwYWRkaW5nOiI2cHggMTBweCIsZm9udFNpemU6MTEsY29sb3I6IiNhYWEifSxmOD17YmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6IiNhNWI0ZmMiLGZvbnRTaXplOjExLGN1cnNvcjoicG9pbnRlciIscGFkZGluZzowfSx6OT17cGFkZGluZzoiNnB4IDEwcHgiLGNvbG9yOiIjZjg3MTcxIixmb250U2l6ZToxMX0sSzk9e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjgscGFkZGluZzoiNnB4IDEwcHgiLGJvcmRlclJhZGl1czo2LGN1cnNvcjoicG9pbnRlciIsdHJhbnNpdGlvbjoiYmFja2dyb3VuZCAwLjE1cyJ9LFI2PXtoZWlnaHQ6MSxiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixtYXJnaW46IjRweCAwIn0sZDg9e3BhZGRpbmc6MTIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC40KSIsZm9udFNpemU6MTEsdGV4dEFsaWduOiJjZW50ZXIifSx1OD17cGFkZGluZzoiNnB4IDEwcHggMnB4Iixmb250U2l6ZToxMCxmb250V2VpZ2h0OjYwMCxjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjQpIix0ZXh0VHJhbnNmb3JtOiJ1cHBlcmNhc2UiLGxldHRlclNwYWNpbmc6IjAuMDhlbSJ9LGM4PTMyMCxpOD03NjAsbT17cGFuZWw6e3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjEyLHJpZ2h0OjEyLGJvdHRvbToxMix3aWR0aDpgbWluKCR7aTh9cHgsIGNhbGMoMTAwdncgLSAzMnB4KSlgLG1pbldpZHRoOjAsYmFja2dyb3VuZDoicmdiYSgyMCwyMCwyMiwwLjkyKSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjE0LGNvbG9yOiIjZWVlIixkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLG92ZXJmbG93OiJoaWRkZW4iLHRyYW5zaXRpb246InRyYW5zZm9ybSAwLjI1cyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZSIsYm94U2hhZG93OiIwIDEycHggNDBweCByZ2JhKDAsMCwwLDAuNTUpIixiYWNrZHJvcEZpbHRlcjoiYmx1cigxOHB4KSIsV2Via2l0QmFja2Ryb3BGaWx0ZXI6ImJsdXIoMThweCkiLGZvbnRGYW1pbHk6Ii1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgc2Fucy1zZXJpZiIsekluZGV4OjM1fSxoZWFkZXI6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLGdhcDoxMCxwYWRkaW5nOiI2cHggMTBweCA2cHggMTJweCIsZmxleFNocmluazowfSx0aXRsZUdyb3VwOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJiYXNlbGluZSIsZ2FwOjgsbWluV2lkdGg6MH0sdGl0bGU6e2ZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NTAwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTUpIix3aGl0ZVNwYWNlOiJub3dyYXAifSxzdWJ0aXRsZTp7Zm9udFNpemU6MTEsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC4zOCkiLGZvbnRGYW1pbHk6InVpLW1vbm9zcGFjZSwgbW9ub3NwYWNlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxoZWFkZXJBY3Rpb25zOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDo0LGZsZXhTaHJpbms6MH0saWNvbkJ1dHRvbjp7d2lkdGg6MjYsaGVpZ2h0OjI2LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC42OCkiLGJvcmRlclJhZGl1czo1LGN1cnNvcjoicG9pbnRlciIscGFkZGluZzowfSx0YXJnZXRCYXI6e21pbkhlaWdodDozNixkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLHBhZGRpbmc6IjZweCA4cHgiLGJvcmRlckJvdHRvbToiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCkiLGZsZXhTaHJpbms6MH0sc2VsZWN0Ont3aWR0aDoiMTAwJSIsbWluV2lkdGg6MCxoZWlnaHQ6MjYsYmFja2dyb3VuZDoiIzFjMWMxZSIsY29sb3I6IiNlZWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czo2LGZvbnRTaXplOjEyLHBhZGRpbmc6IjAgOHB4IixvdXRsaW5lOiJub25lIn0scGlja2VyV3JhcDp7cG9zaXRpb246InJlbGF0aXZlIix3aWR0aDoiMTAwJSIsbWluV2lkdGg6MH0scGlja2VyQnV0dG9uOnt3aWR0aDoiMTAwJSIsbWluV2lkdGg6MCxoZWlnaHQ6MjYsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIsZ2FwOjgsYmFja2dyb3VuZDoiIzFjMWMxZSIsY29sb3I6IiNlZWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czo2LGZvbnRTaXplOjEyLHBhZGRpbmc6IjAgOHB4IixjdXJzb3I6InBvaW50ZXIiLHRleHRBbGlnbjoibGVmdCJ9LHBpY2tlckxhYmVsOntvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAiLG1pbldpZHRoOjB9LHBpY2tlckxpc3Q6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiJjYWxjKDEwMCUgKyA0cHgpIixsZWZ0OjAsbWFyZ2luOjAscGFkZGluZzo0LGxpc3RTdHlsZToibm9uZSIsYmFja2dyb3VuZDoiIzFjMWMxZSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSIsYm9yZGVyUmFkaXVzOjgsYm94U2hhZG93OiIwIDhweCAyNHB4IHJnYmEoMCwwLDAsMC41KSIsbWluV2lkdGg6MjIwLG1heFdpZHRoOjM2MCxtYXhIZWlnaHQ6MzIwLG92ZXJmbG93WToiYXV0byIsekluZGV4OjUwfSxwaWNrZXJJdGVtOntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLHBhZGRpbmc6IjNweCA4cHgiLGJvcmRlclJhZGl1czo0LGN1cnNvcjoicG9pbnRlciIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC44NSkiLGZvbnRTaXplOjEyLGxpbmVIZWlnaHQ6MS4zNX0scGlja2VySXRlbVNlbGVjdGVkOntiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDYpIn0scGlja2VySXRlbUhvdmVyZWQ6e2JhY2tncm91bmQ6InJnYmEoMTAsMTMyLDI1NSwwLjIyKSJ9LHBpY2tlckl0ZW1EaXNhYmxlZDp7b3BhY2l0eTowLjQsY3Vyc29yOiJub3QtYWxsb3dlZCIsZm9udFN0eWxlOiJpdGFsaWMifSxwaWNrZXJHcm91cDp7bGlzdFN0eWxlOiJub25lIixtYXJnaW46MCxwYWRkaW5nOjB9LHBpY2tlckdyb3VwSGVhZGVyOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDo4LHBhZGRpbmc6IjRweCA2cHggMnB4Iixmb250U2l6ZToxMixmb250V2VpZ2h0OjYwMCxjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjkyKSJ9LHBpY2tlckdyb3VwSWNvbkltZzp7d2lkdGg6MTYsaGVpZ2h0OjE2LGJvcmRlclJhZGl1czozLGZsZXhTaHJpbms6MCxvYmplY3RGaXQ6ImNvdmVyIn0scGlja2VyR3JvdXBOYW1lOntvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxwaWNrZXJHcm91cExpc3Q6e2xpc3RTdHlsZToibm9uZSIsbWFyZ2luOjAscGFkZGluZzowLHBhZGRpbmdMZWZ0OjI2fSxwaWNrZXJJdGVtVGl0bGU6e2Rpc3BsYXk6ImJsb2NrIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxwaWNrZXJJdGVtVXJsOntkaXNwbGF5OiJibG9jayIsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGZvbnRTaXplOjEwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNDIpIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxlbXB0eVRhcmdldDp7Y29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC40OCkiLGZvbnRTaXplOjEyLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LGZyYW1lV3JhcDp7ZmxleDoxLG1pbkhlaWdodDowLGJhY2tncm91bmQ6IiNmZmYiLHBvc2l0aW9uOiJyZWxhdGl2ZSJ9LGlmcmFtZTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsYm9yZGVyOiJub25lIixkaXNwbGF5OiJibG9jayIsYmFja2dyb3VuZDoiI2ZmZiJ9LG1lc3NhZ2U6e2hlaWdodDoiMTAwJSIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixwYWRkaW5nOjI0LGJhY2tncm91bmQ6IiMxMTExMTMiLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTgpIix0ZXh0QWxpZ246ImNlbnRlciIsZm9udFNpemU6MTN9fSxfOT17cmFpbDp7cG9zaXRpb246ImZpeGVkIix0b3A6MTIscmlnaHQ6MTIsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixnYXA6NCxwYWRkaW5nOjQsYmFja2dyb3VuZDoicmdiYSgyMCwyMCwyMiwwLjgpIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixib3JkZXJSYWRpdXM6MTAsYmFja2Ryb3BGaWx0ZXI6ImJsdXIoMTJweCkiLFdlYmtpdEJhY2tkcm9wRmlsdGVyOiJibHVyKDEycHgpIix0cmFuc2l0aW9uOiJvcGFjaXR5IDAuMThzIGVhc2UiLHpJbmRleDo0MH0sYnV0dG9uOnt3aWR0aDozMCxoZWlnaHQ6MzAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixib3JkZXJSYWRpdXM6Nixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjcpIixjdXJzb3I6InBvaW50ZXIiLHRyYW5zaXRpb246ImJhY2tncm91bmQgMC4xNXMgZWFzZSwgY29sb3IgMC4xNXMgZWFzZSJ9fSxTPXt0b2dnbGU6e3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjE2LHJpZ2h0OjE2LHdpZHRoOjMwLGhlaWdodDozMCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLGJvcmRlclJhZGl1czo2LGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNikiLGN1cnNvcjoicG9pbnRlciIsdHJhbnNpdGlvbjoiYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlIix6SW5kZXg6NDB9LHBhbmVsOntwb3NpdGlvbjoiZml4ZWQiLHRvcDoxMixyaWdodDoxMixib3R0b206MTIsd2lkdGg6YzgsYmFja2dyb3VuZDoicmdiYSgyMCwyMCwyMiwwLjkyKSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjE0LGNvbG9yOiIjZWVlIixkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLG92ZXJmbG93OiJoaWRkZW4iLHRyYW5zaXRpb246InRyYW5zZm9ybSAwLjI1cyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZSIsYm94U2hhZG93OiIwIDEycHggNDBweCByZ2JhKDAsMCwwLDAuNTUpIixiYWNrZHJvcEZpbHRlcjoiYmx1cigxOHB4KSIsV2Via2l0QmFja2Ryb3BGaWx0ZXI6ImJsdXIoMThweCkiLGZvbnRGYW1pbHk6Ii1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgc2Fucy1zZXJpZiIsekluZGV4OjM1fSxoZWFkZXI6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLHBhZGRpbmc6IjZweCAxMHB4IDZweCAxMnB4In0saGVhZGVyVGl0bGU6e2ZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NTAwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTUpIn0sY2xvc2VCdG46e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLGNvbG9yOiIjYWFhIixjdXJzb3I6InBvaW50ZXIiLHBhZGRpbmc6NCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGJvcmRlclJhZGl1czo0fSxib2R5OntwYWRkaW5nOjE0LG92ZXJmbG93WToiYXV0byIsZmxleDoxLGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjEyfSxzZWN0aW9uVGl0bGU6e2ZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NjAwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNSkiLHRleHRUcmFuc2Zvcm06InVwcGVyY2FzZSIsbGV0dGVyU3BhY2luZzoiMC4wOGVtIixtYXJnaW46IjAgMCAxMHB4In0sc2VjdGlvbjp7YmFja2dyb3VuZDoiIzFjMWMxZSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjEwLHBhZGRpbmc6MTJ9LGVtcHR5OntiYWNrZ3JvdW5kOiIjMWMxYzFlIixib3JkZXI6IjFweCBkYXNoZWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpIixib3JkZXJSYWRpdXM6MTAscGFkZGluZzoxNixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjUpIixmb250U2l6ZToxMix0ZXh0QWxpZ246ImNlbnRlciJ9LGFwcEhlYWRlcjp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6MTIsbWFyZ2luQm90dG9tOjEwfSxhcHBJY29uOnt3aWR0aDo0NCxoZWlnaHQ6NDQsYm9yZGVyUmFkaXVzOjEwLGZsZXhTaHJpbms6MCxvYmplY3RGaXQ6ImNvdmVyIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIn0sYXBwTmFtZTp7Zm9udFNpemU6MTQsZm9udFdlaWdodDo2MDAsb3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIn0sYXBwQnVuZGxlOntmb250U2l6ZToxMSxjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjUpIixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsb3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIn0sc3Bpbm5lcjp7Y29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC40KSIsZm9udFdlaWdodDo0MDB9LGVycm9yOntiYWNrZ3JvdW5kOiJyZ2JhKDI0OCwxMTMsMTEzLDAuMDgpIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI0OCwxMTMsMTEzLDAuMikiLGNvbG9yOiIjZmNhNWE1Iixmb250U2l6ZToxMSxwYWRkaW5nOiI2cHggOHB4Iixib3JkZXJSYWRpdXM6NixtYXJnaW5Cb3R0b206MTB9LGRsOnttYXJnaW46MCxkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDo2fSxyb3c6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImJhc2VsaW5lIixnYXA6OCxtaW5XaWR0aDowfSxkdDp7bWFyZ2luOjAsZm9udFNpemU6MTEsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIsd2lkdGg6ODQsZmxleFNocmluazowfSxkZDp7bWFyZ2luOjAsZm9udFNpemU6MTIsY29sb3I6IiNlZWUiLGZsZXg6MSxtaW5XaWR0aDowLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LHJvd0FjdGlvbldyYXA6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAscmlnaHQ6MCxib3R0b206MCxwYWRkaW5nTGVmdDoyOCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJmbGV4LWVuZCIsYmFja2dyb3VuZDoibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI4LDI4LDMwLDApIDAlLCAjMWMxYzFlIDU1JSkiLHRyYW5zaXRpb246Im9wYWNpdHkgMC4xNXMgZWFzZSwgdHJhbnNmb3JtIDAuMTVzIGVhc2UifSxwZXJtc1RvZ2dsZTp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIsZ2FwOjYsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIscGFkZGluZzowLG1hcmdpbjowLGN1cnNvcjoicG9pbnRlciIsd2lkdGg6IjEwMCUiLHRleHRBbGlnbjoibGVmdCIsbGluZUhlaWdodDoxfSxwZXJtc1Njcm9sbFdyYXA6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsbWFyZ2luVG9wOjh9LHBlcm1zU2Nyb2xsOnttYXhIZWlnaHQ6MjYwLG92ZXJmbG93WToiYXV0byIsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixnYXA6NCxwYWRkaW5nOiI4cHggMCIsc2Nyb2xsYmFyV2lkdGg6InRoaW4ifSxwZXJtc0ZhZGVUb3A6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowLHJpZ2h0OjAsaGVpZ2h0OjE0LHBvaW50ZXJFdmVudHM6Im5vbmUiLGJhY2tncm91bmQ6ImxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMxYzFjMWUgMCUsIHJnYmEoMjgsMjgsMzAsMCkgMTAwJSkiLGJvcmRlclRvcExlZnRSYWRpdXM6MTAsYm9yZGVyVG9wUmlnaHRSYWRpdXM6MTB9LHBlcm1zRmFkZUJvdHRvbTp7cG9zaXRpb246ImFic29sdXRlIixib3R0b206MCxsZWZ0OjAscmlnaHQ6MCxoZWlnaHQ6MTQscG9pbnRlckV2ZW50czoibm9uZSIsYmFja2dyb3VuZDoibGluZWFyLWdyYWRpZW50KHRvIHRvcCwgIzFjMWMxZSAwJSwgcmdiYSgyOCwyOCwzMCwwKSAxMDAlKSJ9LHBlcm1zRm9vdGVyOntkaXNwbGF5OiJmbGV4IixqdXN0aWZ5Q29udGVudDoiZmxleC1lbmQiLHBhZGRpbmdUb3A6OH0scmVzZXRBbGxCdG46e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjcpIixmb250U2l6ZToxMCxwYWRkaW5nOiIzcHggOHB4Iixib3JkZXJSYWRpdXM6NSxjdXJzb3I6InBvaW50ZXIiLHRleHRUcmFuc2Zvcm06InVwcGVyY2FzZSIsbGV0dGVyU3BhY2luZzoiMC4wNGVtIn0scGVybXNMaXN0OntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDo0LG1hcmdpblRvcDo0fSxwZXJtUm93OntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixnYXA6OCxwYWRkaW5nOiI0cHggMnB4In0scGVybUxhYmVsOntmb250U2l6ZToxMixjb2xvcjoiI2VlZSIsb3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIixmbGV4OjEsbWluV2lkdGg6MH0scGVybVNlZzp7ZGlzcGxheToiZmxleCIsZ2FwOjIsYmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjA0KSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjYscGFkZGluZzoyfSxwZXJtQnRuOnt3aWR0aDoyNCxoZWlnaHQ6MjIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixib3JkZXI6Im5vbmUiLGJvcmRlclJhZGl1czo0LGN1cnNvcjoicG9pbnRlciIscGFkZGluZzowLHRyYW5zaXRpb246ImJhY2tncm91bmQgMC4xMnMsIGNvbG9yIDAuMTJzIn0scm93QWN0aW9uOnt3aWR0aDoyMCxoZWlnaHQ6MjAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixib3JkZXJSYWRpdXM6NCxjb2xvcjoiI2ZmZiIsY3Vyc29yOiJwb2ludGVyIixwYWRkaW5nOjB9fSxWMD17dGFyZ2V0czp7cG9zaXRpb246ImFic29sdXRlIixpbnNldDowLG92ZXJmbG93OiJoaWRkZW4iLHBvaW50ZXJFdmVudHM6Im5vbmUiLHpJbmRleDoxMH0sdGFyZ2V0Ontwb3NpdGlvbjoiYWJzb2x1dGUiLGJveFNpemluZzoiYm9yZGVyLWJveCIsbWluV2lkdGg6MSxtaW5IZWlnaHQ6MSxwYWRkaW5nOjAsYm9yZGVyOiIxcHggc29saWQgIzM0ZDM5OSIsYm9yZGVyUmFkaXVzOjMsY3Vyc29yOiJwb2ludGVyIixwb2ludGVyRXZlbnRzOiJhdXRvIn0scGFuZWxIZWFkZXI6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLGdhcDo4fSxvdmVybGF5VG9nZ2xlOntib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIixib3JkZXJSYWRpdXM6NSxiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC43KSIsY3Vyc29yOiJwb2ludGVyIixmb250U2l6ZToxMCxwYWRkaW5nOiIzcHggN3B4In0sZW1wdHlMaW5rOntjb2xvcjoiI2E1YjRmYyIsdGV4dERlY29yYXRpb246Im5vbmUifSx0b29sYmFyQnV0dG9uQWN0aXZlOntiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjk1KSJ9LHRvb2xiYXJCdXR0b25BY3RpdmVIb3Zlcjp7YmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjEyKSJ9LGxpc3Q6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjQsbWFyZ2luVG9wOjgscGFkZGluZzoiOHB4IDAiLG1heEhlaWdodDoyNjAsb3ZlcmZsb3dZOiJhdXRvIixzY3JvbGxiYXJXaWR0aDoidGhpbiJ9LGxpc3RJdGVtOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixnYXA6OCxib3JkZXJSYWRpdXM6NixwYWRkaW5nOiI0cHggMnB4IixtaW5XaWR0aDowfSxsaXN0SXRlbUFjdGl2ZTp7YmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjA2KSJ9LGl0ZW1UZXh0OntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDoyLGZsZXg6MSxtaW5XaWR0aDowfSxpdGVtTGFiZWw6e292ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCIsY29sb3I6IiNlZWUiLGZvbnRTaXplOjEyLGZvbnRXZWlnaHQ6NTAwfSxpdGVtTWV0YTp7b3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjQ1KSIsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGZvbnRTaXplOjEwfSxpdGVtU2l6ZTp7ZmxleFNocmluazowLGJhY2tncm91bmQ6InJnYmEoMjU1LDI1NSwyNTUsMC4wNCkiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCkiLGJvcmRlclJhZGl1czo2LGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTUpIixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsZm9udFNpemU6MTAscGFkZGluZzoiM3B4IDZweCJ9fTtROChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9vdCIpKS5yZW5kZXIoUShFNix7fSkpOwo8L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=","base64").toString("utf-8");return t$}function m0($){let J=($?.basePath??"/.sim").replace(/\/+$/,"");return(Q,Z,X)=>{let Y=Q.url??"",G=Y.indexOf("?"),U=G===-1?Y:Y.slice(0,G),z=C0(Y)??$?.device??null,P=J==="/"?"/devtools-frontend":`${J}/devtools-frontend`;if(U===P||U.startsWith(`${P}/`)){(async()=>{let O=U===P?"inspector.html":U.slice(P.length+1);if(O.split("/").some((N)=>N==="..")){Z.writeHead(400,{"Content-Type":"text/plain; charset=utf-8"}),Z.end("Invalid asset path");return}try{let N=await fetch(`https://chrome-devtools-frontend.appspot.com/serve_rev/@${A0}/${O}${G===-1?"":Y.slice(G)}`),_={"Cache-Control":"public, max-age=604800"},B=N.headers.get("content-type");if(B)_["Content-Type"]=B;Z.writeHead(N.status,_),Z.end(Buffer.from(await N.arrayBuffer()))}catch(N){Z.writeHead(502,{"Content-Type":"text/plain; charset=utf-8"}),Z.end(N instanceof Error?N.message:"Failed to load DevTools frontend")}})();return}if(U===J||U===J+"/"){let O=V$(),N=z$(O,z),_=B0();if(N){let M=`<script>window.__SIM_PREVIEW__=${JSON.stringify({...N,basePath:J,logsEndpoint:M$(J,"/logs",N.device),appStateEndpoint:M$(J,"/appstate",N.device),axEndpoint:M$(J,"/ax",N.device),devtoolsEndpoint:M$(J,"/devtools",N.device)})}</script>`;_=_.replace("<!--__SIM_PREVIEW_CONFIG__-->",M)}Z.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store"}),Z.end(_);return}if(U===J+"/devtools"){(async()=>{let O=V$(),N=z$(O,z);if(!N){Z.writeHead(404,{"Content-Type":"application/json"}),Z.end(JSON.stringify({error:"No serve-sim device"}));return}try{let _=await r$(),B=await _.listTargets(),M=E0(Q.headers?.host,_.port),j=B.filter((C)=>!C.udid||C.udid===N.device).map((C)=>({...C,webSocketDebuggerUrl:`ws://${M}/devtools/page/${encodeURIComponent(C.id)}`,devtoolsFrontendUrl:M0(P,M,C.id)}));Z.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),Z.end(JSON.stringify({port:_.port,targets:j}))}catch(_){Z.writeHead(500,{"Content-Type":"application/json"}),Z.end(JSON.stringify({error:_ instanceof Error?_.message:"Failed to start inspect-webkit"}))}})();return}if(U===J+"/devtools/release"&&Q.method==="POST"){let O="";Q.on("data",(N)=>O+=N),Q.on("end",async()=>{try{let N=O?JSON.parse(O):{};(await r$()).releaseHighlight?.(N.targetId),Z.writeHead(200,{"Content-Type":"application/json"}),Z.end("{}")}catch(N){Z.writeHead(500,{"Content-Type":"application/json"}),Z.end(JSON.stringify({error:N instanceof Error?N.message:"Failed to release"}))}});return}if(U===J+"/devtools/highlight"&&Q.method==="POST"){let O="";Q.on("data",(N)=>O+=N),Q.on("end",async()=>{try{let{targetId:N,on:_}=JSON.parse(O||"{}");if(!N){Z.writeHead(400,{"Content-Type":"application/json"}),Z.end(JSON.stringify({error:"Missing targetId"}));return}let B=await r$();if(!B.highlightTarget){Z.writeHead(501,{"Content-Type":"application/json"}),Z.end(JSON.stringify({error:"highlightTarget not supported by inspect-webkit"}));return}await B.highlightTarget(N,!!_),Z.writeHead(200,{"Content-Type":"application/json"}),Z.end("{}")}catch(N){Z.writeHead(500,{"Content-Type":"application/json"}),Z.end(JSON.stringify({error:N instanceof Error?N.message:"Failed to highlight target"}))}});return}if(U===J+"/api"){let O=V$(),N=z$(O,z);Z.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),Z.end(JSON.stringify(N||null));return}if(U===J+"/ax"){let O=V$(),N=z$(O,z);if(!N){Z.writeHead(404),Z.end("No serve-sim device");return}Z.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),Z.write(`:
4
39
 
5
- `);let j=W$.get(G.device).addClient(Q);Z.on("close",j);return}if((Y===$+"/exec"||Y===$+"/exec/")&&Z.method==="POST"){let X="";Z.on("data",(G)=>{X+=typeof G==="string"?G:G.toString()}),Z.on("end",()=>{let G="";try{G=JSON.parse(X).command??""}catch{}if(!G){Q.writeHead(400,{"Content-Type":"application/json"}),Q.end(JSON.stringify({stdout:"",stderr:"Missing command",exitCode:1}));return}z$(G,{maxBuffer:16777216},(H,j,C)=>{Q.writeHead(200,{"Content-Type":"application/json"}),Q.end(JSON.stringify({stdout:j.toString(),stderr:C.toString(),exitCode:H?H.code??1:0}))})});return}if(Y===$+"/logs"){let X=O(),G=F(X,W);if(!G){Q.writeHead(404),Q.end("No serve-sim device");return}let H=G.device;Q.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),Q.write(`:
40
+ `);let B=F0.get(N.device).addClient(Z);Q.on("close",B);return}if((U===J+"/exec"||U===J+"/exec/")&&Q.method==="POST"){let O="";Q.on("data",(N)=>{O+=typeof N==="string"?N:N.toString()}),Q.on("end",()=>{let N="";try{N=JSON.parse(O).command??""}catch{}if(!N){Z.writeHead(400,{"Content-Type":"application/json"}),Z.end(JSON.stringify({stdout:"",stderr:"Missing command",exitCode:1}));return}W0(N,{maxBuffer:16777216},(_,B,M)=>{Z.writeHead(200,{"Content-Type":"application/json"}),Z.end(JSON.stringify({stdout:B.toString(),stderr:M.toString(),exitCode:_?_.code??1:0}))})});return}if(U===J+"/logs"){let O=V$(),N=z$(O,z);if(!N){Z.writeHead(404),Z.end("No serve-sim device");return}let _=N.device;Z.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),Z.write(`:
6
41
 
7
- `);let j=_("xcrun",["simctl","spawn",H,"log","stream","--style","ndjson","--level","info"],{stdio:["ignore","pipe","ignore"]}),C="";j.stdout.on("data",(w)=>{C+=w.toString();let P;while((P=C.indexOf(`
8
- `))!==-1){let D=C.slice(0,P).trim();if(C=C.slice(P+1),D)Q.write("data: "+D+`
42
+ `);let B=gJ("xcrun",["simctl","spawn",_,"log","stream","--style","ndjson","--level","info"],{stdio:["ignore","pipe","ignore"]}),M="";B.stdout.on("data",(q)=>{M+=q.toString();let j;while((j=M.indexOf(`
43
+ `))!==-1){let C=M.slice(0,j).trim();if(M=M.slice(j+1),C)Z.write("data: "+C+`
9
44
 
10
- `)}}),j.on("close",()=>Q.end()),Z.on("close",()=>j.kill());return}if(Y===$+"/appstate"){let X=O(),G=F(X,W);if(!G){Q.writeHead(404),Q.end("No serve-sim device");return}let H=G.device;Q.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),Q.write(`:
45
+ `)}}),B.on("close",()=>Z.end()),Q.on("close",()=>B.kill());return}if(U===J+"/appstate"){let O=V$(),N=z$(O,z);if(!N){Z.writeHead(404),Z.end("No serve-sim device");return}let _=N.device;Z.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),Z.write(`:
11
46
 
12
- `);let j=_("xcrun",["simctl","spawn",H,"log","stream","--style","ndjson","--level","info","--predicate",'process == "SpringBoard" AND eventMessage CONTAINS "Setting process visibility to: Foreground"'],{stdio:["ignore","pipe","ignore"]}),C=/\[app<([^>]+)>:(\d+)\] Setting process visibility to: Foreground/,w="",P="";j.stdout.on("data",(D)=>{P+=D.toString();let L;while((L=P.indexOf(`
13
- `))!==-1){let f=P.slice(0,L).trim();if(P=P.slice(L+1),!f)continue;let q;try{q=JSON.parse(f).eventMessage??""}catch{continue}let y=C.exec(q);if(!y)continue;let B=y[1],x=parseInt(y[2],10);if(!j$(B))continue;if(B===w)continue;w=B,C$(H,B).then((v)=>{Q.write("data: "+JSON.stringify({bundleId:B,pid:x,isReactNative:v})+`
47
+ `);let B=gJ("xcrun",["simctl","spawn",_,"log","stream","--style","ndjson","--level","info","--predicate",'process == "SpringBoard" AND eventMessage CONTAINS "Setting process visibility to: Foreground"'],{stdio:["ignore","pipe","ignore"]}),M=/\[app<([^>]+)>:(\d+)\] Setting process visibility to: Foreground/,q="",j="";B.stdout.on("data",(C)=>{j+=C.toString();let R;while((R=j.indexOf(`
48
+ `))!==-1){let F=j.slice(0,R).trim();if(j=j.slice(R+1),!F)continue;let A;try{A=JSON.parse(F).eventMessage??""}catch{continue}let D=M.exec(A);if(!D)continue;let W=D[1],V=parseInt(D[2],10);if(!R0(W))continue;if(W===q)continue;q=W,O0(_,W).then((K)=>{Z.write("data: "+JSON.stringify({bundleId:W,pid:V,isReactNative:K})+`
14
49
 
15
- `)})}}),j.on("close",()=>Q.end()),Z.on("close",()=>j.kill());return}if(z)z()}}export{R$ as simMiddleware,F as selectServeSimState};
50
+ `)})}}),B.on("close",()=>Z.end()),Q.on("close",()=>B.kill());return}if(X)X()}}export{m0 as simMiddleware,z$ as selectServeSimState};